{"version":3,"sources":["vendor/ember-cli/app-prefix.js","busy-app/adapters/application-platform-etl.js","busy-app/adapters/application-quickbooks.js","busy-app/adapters/application-report.js","busy-app/adapters/application.js","busy-app/adapters/cost-code-annual-cost.js","busy-app/adapters/cost-code-annual-seconds.js","busy-app/adapters/cost-code-day-cost.js","busy-app/adapters/cost-code-day-seconds.js","busy-app/adapters/cost-code-month-cost.js","busy-app/adapters/cost-code-month-seconds.js","busy-app/adapters/employee-payroll-item-connector.js","busy-app/adapters/employee-wage-type.js","busy-app/adapters/equipment-annual-cost.js","busy-app/adapters/equipment-annual-seconds.js","busy-app/adapters/equipment-day-cost.js","busy-app/adapters/equipment-day-seconds.js","busy-app/adapters/equipment-month-cost.js","busy-app/adapters/equipment-month-seconds.js","busy-app/adapters/json.js","busy-app/adapters/member-annual-cost.js","busy-app/adapters/member-annual-seconds.js","busy-app/adapters/member-connector.js","busy-app/adapters/member-cost-code-cost.js","busy-app/adapters/member-cost-code-equipment-cost.js","busy-app/adapters/member-cost-code-equipment-seconds.js","busy-app/adapters/member-cost-code-seconds.js","busy-app/adapters/member-cost.js","busy-app/adapters/member-day-cost.js","busy-app/adapters/member-day-seconds.js","busy-app/adapters/member-equipment-cost.js","busy-app/adapters/member-equipment-seconds.js","busy-app/adapters/member-month-cost.js","busy-app/adapters/member-month-seconds.js","busy-app/adapters/member-project-cost-code-cost.js","busy-app/adapters/member-project-cost-code-equipment-cost.js","busy-app/adapters/member-project-cost-code-equipment-seconds.js","busy-app/adapters/member-project-cost-code-seconds.js","busy-app/adapters/member-project-cost.js","busy-app/adapters/member-project-equipment-cost.js","busy-app/adapters/member-project-equipment-seconds.js","busy-app/adapters/member-project-seconds.js","busy-app/adapters/member-seconds.js","busy-app/adapters/project-annual-cost.js","busy-app/adapters/project-annual-seconds.js","busy-app/adapters/project-cost.js","busy-app/adapters/project-day-cost.js","busy-app/adapters/project-day-seconds.js","busy-app/adapters/project-equipment-seconds.js","busy-app/adapters/project-month-cost.js","busy-app/adapters/project-month-seconds.js","busy-app/adapters/project-seconds.js","busy-app/adapters/quickbooks-payroll-item-wage.js","busy-app/adapters/sync-log.js","busy-app/adapters/time-entry-member-conflicts.js","busy-app/adapters/time-entry-organization-conflicts.js","busy-app/animations/company.js","busy-app/animations/employee.js","busy-app/animations/project.js","busy-app/animations/report.js","busy-app/animations/time-card.js","busy-app/app.js","busy-app/assert.js","busy-app/authenticators/base.js","busy-app/authenticators/basic.js","busy-app/browser.js","busy-app/collections/base.js","busy-app/collections/custom-wage-date/payroll-member-project.js","busy-app/collections/custom-wage-date/payroll-member.js","busy-app/collections/custom-wage-date/payroll-project.js","busy-app/collections/custom-wage-date/utils.js","busy-app/collections/job-costing.js","busy-app/collections/payroll-member-project.js","busy-app/collections/payroll-member.js","busy-app/collections/payroll-project.js","busy-app/collections/time-entry.js","busy-app/components/-lf-get-outlet-state.js","busy-app/components/-private-api/addon-factory.js","busy-app/components/-private-api/detect-render.js","busy-app/components/add-edit-scheduling.js","busy-app/components/bc-checkbox-input.js","busy-app/components/bc-checkbox.js","busy-app/components/bc-input.js","busy-app/components/bc-list.js","busy-app/components/bc-loading.js","busy-app/components/bc-radio-button.js","busy-app/components/bc-section-half.js","busy-app/components/bc-select-menu.js","busy-app/components/bc-select.js","busy-app/components/bc-sortable-list.js","busy-app/components/bc-tab.js","busy-app/components/bc-tabs.js","busy-app/components/bc-title.js","busy-app/components/bc-validate-password.js","busy-app/components/bc-validate.js","busy-app/components/busy-action-bar.js","busy-app/components/busy-button-bar.js","busy-app/components/busy-container.js","busy-app/components/busy-date-range.js","busy-app/components/busy-date-time.js","busy-app/components/busy-dialog-footer.js","busy-app/components/busy-file-uploader.js","busy-app/components/busy-header-floating.js","busy-app/components/busy-header.js","busy-app/components/busy-image-uploader.js","busy-app/components/busy-infobox.js","busy-app/components/busy-map-google.js","busy-app/components/busy-map-leaflet-locations.js","busy-app/components/busy-map-leaflet-time-entry-locations.js","busy-app/components/busy-map-leaflet.js","busy-app/components/busy-map-locations.js","busy-app/components/busy-map-time-entry-locations.js","busy-app/components/busy-map.js","busy-app/components/busy-nav.js","busy-app/components/busy-notification-bar.js","busy-app/components/busy-pagination.js","busy-app/components/busy-report-header.js","busy-app/components/busy-save-message.js","busy-app/components/busy-save.js","busy-app/components/busy-search-bar.js","busy-app/components/busy-select-checkbox.js","busy-app/components/busy-select-create.js","busy-app/components/busy-signature-pad.js","busy-app/components/busy-sliding-panel.js","busy-app/components/busy-status-bar.js","busy-app/components/busy-terms.js","busy-app/components/busy-time-picker.js","busy-app/components/busy-title.js","busy-app/components/charts/bar-chart.js","busy-app/components/charts/base-chart.js","busy-app/components/charts/doughnut-chart.js","busy-app/components/charts/legacy-bar-chart.js","busy-app/components/charts/line-chart.js","busy-app/components/charts/pie-chart.js","busy-app/components/charts/progress-chart.js","busy-app/components/checkbox-input.js","busy-app/components/clear-float.js","busy-app/components/company/add-card-dialog.js","busy-app/components/company/deactivate-account.js","busy-app/components/company/edit-card-dialog.js","busy-app/components/company/integrations/grid/grid-item-base.js","busy-app/components/company/integrations/grid/grid-item.js","busy-app/components/company/integrations/integration-dashboard.js","busy-app/components/company/integrations/oauth-callback.js","busy-app/components/company/integrations/sync-log-dialog/log-dialog.js","busy-app/components/company/integrations/sync-log-dialog/log-section.js","busy-app/components/company/integrations/sync-log-errors-dialog.js","busy-app/components/company/integrations/upgrade-dialog.js","busy-app/components/company/integrations/vendors/procore/connect-dialog.js","busy-app/components/company/integrations/vendors/procore/disconnect-dialog.js","busy-app/components/company/integrations/vendors/procore/grid-item.js","busy-app/components/company/integrations/vendors/procore/integration-dashboard.js","busy-app/components/company/integrations/vendors/procore/oauth-callback.js","busy-app/components/company/integrations/vendors/procore/settings-dialog.js","busy-app/components/company/integrations/vendors/quickbooks/grid-item.js","busy-app/components/company/integrations/vendors/quickbooks/sync-options.js","busy-app/components/company/permission-boxes.js","busy-app/components/company/permission-dialog.js","busy-app/components/company/permission-settings.js","busy-app/components/company/profile-info.js","busy-app/components/company/time-keeping.js","busy-app/components/cost-codes/import-cost-codes.js","busy-app/components/cost-codes/splash-screen.js","busy-app/components/d-button-split.js","busy-app/components/d-button.js","busy-app/components/dialogs/button-bar.js","busy-app/components/dialogs/confirm-dialog.js","busy-app/components/dialogs/content-view.js","busy-app/components/dialogs/delete-dialog.js","busy-app/components/dialogs/error/gps-location-required.js","busy-app/components/dialogs/fs-modal-dialog.js","busy-app/components/dialogs/instructions-container.js","busy-app/components/dialogs/instructions-header.js","busy-app/components/dialogs/instructions-section.js","busy-app/components/dialogs/modal-dialog.js","busy-app/components/dialogs/open-entry-location.js","busy-app/components/dialogs/open-trial.js","busy-app/components/dialogs/pro-feature-upgrade.js","busy-app/components/dialogs/save-message.js","busy-app/components/dialogs/summary-report.js","busy-app/components/dialogs/tab-header-dialog.js","busy-app/components/ember-chart.js","busy-app/components/ember-date-range-picker.js","busy-app/components/ember-date-time-picker.js","busy-app/components/ember-jsignature.js","busy-app/components/ember-modal-dialog-positioned-container.js","busy-app/components/ember-modal-dialog/-basic-dialog.js","busy-app/components/ember-modal-dialog/-in-place-dialog.js","busy-app/components/ember-modal-dialog/-liquid-dialog.js","busy-app/components/ember-modal-dialog/-liquid-tether-dialog.js","busy-app/components/ember-modal-dialog/-tether-dialog.js","busy-app/components/ember-wormhole.js","busy-app/components/employee-selector.js","busy-app/components/employees/edit-info-dialog.js","busy-app/components/employees/edit-lock-date.js","busy-app/components/employees/edit-photo-dialog.js","busy-app/components/employees/employee-info.js","busy-app/components/employees/import-employees.js","busy-app/components/employees/overtime-dialog.js","busy-app/components/employees/overtime-preview-dialog.js","busy-app/components/employees/reset-pass-dialog.js","busy-app/components/employees/reset-pin-dialog.js","busy-app/components/employees/signature-dialog.js","busy-app/components/employees/wage-dialog.js","busy-app/components/employees/wage-history.js","busy-app/components/employees/wage-info.js","busy-app/components/equipment/splash-screen.js","busy-app/components/file-drop-box.js","busy-app/components/file-input.js","busy-app/components/g-map-addons/pin.js","busy-app/components/g-map.js","busy-app/components/g-map/autocomplete.js","busy-app/components/g-map/canvas.js","busy-app/components/g-map/circle.js","busy-app/components/g-map/control.js","busy-app/components/g-map/directions.js","busy-app/components/g-map/info-window.js","busy-app/components/g-map/map-component.js","busy-app/components/g-map/marker.js","busy-app/components/g-map/overlay.js","busy-app/components/g-map/polyline.js","busy-app/components/g-map/route.js","busy-app/components/g-map/waypoint.js","busy-app/components/illiquid-model.js","busy-app/components/image-placeholder.js","busy-app/components/jq-date-picker.js","busy-app/components/lib/bind-context.js","busy-app/components/lib/display-value.js","busy-app/components/lib/drag-drop-box.js","busy-app/components/liquid-bind.js","busy-app/components/liquid-child.js","busy-app/components/liquid-container.js","busy-app/components/liquid-if.js","busy-app/components/liquid-measured.js","busy-app/components/liquid-outlet.js","busy-app/components/liquid-spacer.js","busy-app/components/liquid-sync.js","busy-app/components/liquid-unless.js","busy-app/components/liquid-versions.js","busy-app/components/max-images-box.js","busy-app/components/md-button.js","busy-app/components/menu-button.js","busy-app/components/mod-util/aggregate-cost.js","busy-app/components/mod-util/aggregate-hours.js","busy-app/components/mod-util/bound-model-range.js","busy-app/components/mod-util/each-day.js","busy-app/components/mod-util/each-type.js","busy-app/components/mod-util/time-entry/end-for-day.js","busy-app/components/mod-util/time-entry/start-for-day.js","busy-app/components/mod-util/time-entry/total-break-for-day.js","busy-app/components/mod-util/time-entry/total-time-for-day.js","busy-app/components/modal-dialog-overlay.js","busy-app/components/modal-dialog.js","busy-app/components/model-title/cost-code.js","busy-app/components/model-title/equipment.js","busy-app/components/model-title/member.js","busy-app/components/model-title/project.js","busy-app/components/notes/note-cards.js","busy-app/components/paper-datetime-picker.js","busy-app/components/private/date-input.js","busy-app/components/private/date-picker.js","busy-app/components/private/date-time-menu.js","busy-app/components/private/time-picker.js","busy-app/components/projects/cost-codes-manager.js","busy-app/components/projects/cost-codes-manager/cost-code.js","busy-app/components/projects/cost-codes-manager/group.js","busy-app/components/projects/cost-codes-select.js","busy-app/components/projects/cost-codes.js","busy-app/components/projects/import-projects.js","busy-app/components/projects/labor-budget.js","busy-app/components/projects/project-info.js","busy-app/components/projects/report-header.js","busy-app/components/projects/report-index.js","busy-app/components/projects/sub-project.js","busy-app/components/report/time-card-approval/chart.js","busy-app/components/report/time-card-approval/list-item-loading.js","busy-app/components/report/time-card-approval/lock-date.js","busy-app/components/report/time-card-approval/signature-status.js","busy-app/components/report/time-card/signature-display.js","busy-app/components/report/time-card/signature-state.js","busy-app/components/safety-signature.js","busy-app/components/select-menu/base.js","busy-app/components/select-menu/cost-code.js","busy-app/components/select-menu/equipment.js","busy-app/components/select-menu/member.js","busy-app/components/select-menu/project.js","busy-app/components/selectors/checkbox-select.js","busy-app/components/selectors/list-select.js","busy-app/components/selectors/position-select.js","busy-app/components/subscriptions/edit-billing-address.js","busy-app/components/subscriptions/edit-payment-method.js","busy-app/components/subscriptions/edit-plan.js","busy-app/components/subscriptions/landing-page.js","busy-app/components/subscriptions/order-confirmation.js","busy-app/components/subscriptions/subscription-index.js","busy-app/components/subscriptions/subscription-invoice-history.js","busy-app/components/subscriptions/subscription-manager.js","busy-app/components/subscriptions/subscription-plan-info.js","busy-app/components/subscriptions/subscription-plans.js","busy-app/components/subscriptions/upgrade-dialog.js","busy-app/components/sync-status.js","busy-app/components/tether-dialog.js","busy-app/components/text-box.js","busy-app/components/text-field.js","busy-app/components/time/break-entry/add-edit-input.js","busy-app/components/time/break-entry/edit.js","busy-app/components/time/break-entry/list.js","busy-app/components/time/full-report/signature-notification-bar.js","busy-app/components/time/full-report/signatures.js","busy-app/components/time/pay-period/list.js","busy-app/components/time/pay-period/signature-breadcrumb.js","busy-app/components/time/pay-period/time-off-list.js","busy-app/components/time/signature-invalidation-warning.js","busy-app/components/time/time-conflict/conflict-list.js","busy-app/components/time/time-conflict/merge-entries.js","busy-app/components/time/time-conflict/resolve-conflicts.js","busy-app/components/time/time-conflict/resolve-dialog.js","busy-app/components/time/time-entry/clock-in-at.js","busy-app/components/time/time-entry/clock-in.js","busy-app/components/time/time-entry/clock-out-at.js","busy-app/components/time/time-entry/clock.js","busy-app/components/time/time-entry/create-new.js","busy-app/components/time/time-entry/edit-open.js","busy-app/components/time/time-entry/edit.js","busy-app/components/time/time-entry/employee-list.js","busy-app/components/time/time-entry/injury-protocol.js","busy-app/components/time/time-entry/log.js","busy-app/components/time/time-entry/safety-required.js","busy-app/components/time/time-entry/safety.js","busy-app/components/time/time-entry/status.js","busy-app/components/time/time-entry/switch.js","busy-app/components/time/time-entry/view.js","busy-app/components/time/time-off/create-time-off.js","busy-app/components/time/time-off/edit.js","busy-app/components/time/time-off/view.js","busy-app/components/time/time-sheet/dates-list-item.js","busy-app/components/time/time-sheet/dates-list.js","busy-app/components/time/time-sheet/header.js","busy-app/components/time/time-sheet/index.js","busy-app/components/time/time-sheet/signature-notification.js","busy-app/components/time/time-sheet/signature-status.js","busy-app/components/time/time-sheet/summary.js","busy-app/components/version-refresher.js","busy-app/components/window-resize.js","busy-app/controllers/account-ready.js","busy-app/controllers/account-settings.js","busy-app/controllers/application.js","busy-app/controllers/company-settings/index.js","busy-app/controllers/company-settings/intuit-quickbooks.js","busy-app/controllers/company-settings/procore/callback.js","busy-app/controllers/company-settings/procore/index.js","busy-app/controllers/cost-code/index.js","busy-app/controllers/currency.js","busy-app/controllers/employees/employee-locations.js","busy-app/controllers/employees/employee.js","busy-app/controllers/employees/index.js","busy-app/controllers/employees/locations.js","busy-app/controllers/index.js","busy-app/controllers/login.js","busy-app/controllers/logout.js","busy-app/controllers/map.js","busy-app/controllers/note/detail.js","busy-app/controllers/project/detail.js","busy-app/controllers/project/detail/index.js","busy-app/controllers/project/detail/reports/budget-versus-actual.js","busy-app/controllers/project/detail/reports/employees.js","busy-app/controllers/project/detail/reports/subprojects.js","busy-app/controllers/project/index.js","busy-app/controllers/report/activity.js","busy-app/controllers/report/activity/index.js","busy-app/controllers/report/employee-list.js","busy-app/controllers/report/index.js","busy-app/controllers/report/payroll.js","busy-app/controllers/report/payroll/employee.js","busy-app/controllers/report/payroll/index.js","busy-app/controllers/report/payroll/project.js","busy-app/controllers/report/report-setup.js","busy-app/controllers/report/safety-signature.js","busy-app/controllers/report/safety-signature/date.js","busy-app/controllers/report/safety-signature/index.js","busy-app/controllers/report/time-card-approval.js","busy-app/controllers/report/time-card.js","busy-app/controllers/report/time-card/index.js","busy-app/controllers/report/time-entries.js","busy-app/controllers/report/time-entries/index.js","busy-app/controllers/report/time-off.js","busy-app/controllers/report/time-off/index.js","busy-app/controllers/reset.js","busy-app/controllers/scheduling.js","busy-app/controllers/scheduling/index.js","busy-app/controllers/signup.js","busy-app/controllers/ticket.js","busy-app/controllers/time-card/full-report/index.js","busy-app/controllers/time-card/pay-period.js","busy-app/controllers/time-card/time-entries.js","busy-app/controllers/time-card/time-entry.js","busy-app/controllers/time-card/time-off-entry.js","busy-app/controllers/verify-email.js","busy-app/currency.js","busy-app/events/dom.js","busy-app/events/emitter.js","busy-app/events/router.js","busy-app/helpers/add.js","busy-app/helpers/app-version.js","busy-app/helpers/bg-image.js","busy-app/helpers/busy-loc.js","busy-app/helpers/can-take-action-for.js","busy-app/helpers/cancel-all.js","busy-app/helpers/currency-symbol.js","busy-app/helpers/date-format.js","busy-app/helpers/diff.js","busy-app/helpers/equal.js","busy-app/helpers/filter-by.js","busy-app/helpers/format-currency.js","busy-app/helpers/format-date.js","busy-app/helpers/format-hours.js","busy-app/helpers/format-number.js","busy-app/helpers/g-map/compute.js","busy-app/helpers/get-val.js","busy-app/helpers/get-value.js","busy-app/helpers/has-permission-for.js","busy-app/helpers/ignore-children.js","busy-app/helpers/is-after.js","busy-app/helpers/is-before.js","busy-app/helpers/is-between.js","busy-app/helpers/is-equal.js","busy-app/helpers/is-greater.js","busy-app/helpers/is-owner.js","busy-app/helpers/is-same-or-after.js","busy-app/helpers/is-same-or-before.js","busy-app/helpers/is-same.js","busy-app/helpers/lf-lock-model.js","busy-app/helpers/lf-or.js","busy-app/helpers/map-by.js","busy-app/helpers/map.js","busy-app/helpers/moment-add.js","busy-app/helpers/moment-calendar.js","busy-app/helpers/moment-diff.js","busy-app/helpers/moment-duration.js","busy-app/helpers/moment-format.js","busy-app/helpers/moment-from-now.js","busy-app/helpers/moment-from.js","busy-app/helpers/moment-subtract.js","busy-app/helpers/moment-to-date.js","busy-app/helpers/moment-to-now.js","busy-app/helpers/moment-to.js","busy-app/helpers/moment-unix.js","busy-app/helpers/moment.js","busy-app/helpers/now.js","busy-app/helpers/perform.js","busy-app/helpers/pluralize.js","busy-app/helpers/reduce.js","busy-app/helpers/singularize.js","busy-app/helpers/task.js","busy-app/helpers/throw-alert.js","busy-app/helpers/unix.js","busy-app/helpers/utc.js","busy-app/in-repo-pin-addon/tests/addon.lint-test.js","busy-app/in-repo-pin-addon/tests/app.lint-test.js","busy-app/index.js","busy-app/initializers/@busy-web/data.js","busy-app/initializers/@busy-web/ember-cli-launch-darkly.js","busy-app/initializers/add-modals-container.js","busy-app/initializers/app-version.js","busy-app/initializers/application.js","busy-app/initializers/container-debug-adapter.js","busy-app/initializers/data-adapter.js","busy-app/initializers/ember-concurrency.js","busy-app/initializers/ember-data.js","busy-app/initializers/ember-feature-flags.js","busy-app/initializers/ember-simple-auth.js","busy-app/initializers/ember-stripe-service.js","busy-app/initializers/export-application-global.js","busy-app/initializers/injectStore.js","busy-app/initializers/liquid-fire.js","busy-app/initializers/nist-time.js","busy-app/initializers/store.js","busy-app/initializers/transforms.js","busy-app/instance-initializers/ember-data.js","busy-app/instance-initializers/ember-simple-auth.js","busy-app/langs/en-us.js","busy-app/langs/en.js","busy-app/langs/es.js","busy-app/loc.js","busy-app/local-storage.js","busy-app/locale.js","busy-app/mixins/check-permission.js","busy-app/mixins/controller-filter.js","busy-app/mixins/draggable.js","busy-app/mixins/droppable.js","busy-app/mixins/model-loader.js","busy-app/mixins/model-sync.js","busy-app/mixins/open-up-down.js","busy-app/mixins/pay-period-loader.js","busy-app/mixins/process-options.js","busy-app/mixins/register-events.js","busy-app/mixins/safety-signoff.js","busy-app/mixins/scroll-loader.js","busy-app/mixins/target-name.js","busy-app/mixins/verified-account.js","busy-app/models/active-users.js","busy-app/models/authoritative-signature.js","busy-app/models/busy-sign-in-question.js","busy-app/models/chargify-customer-statement-pdf.js","busy-app/models/chargify-customer-statement.js","busy-app/models/client-time-entry-break-log.js","busy-app/models/client-time-entry-log.js","busy-app/models/cost-code-annual-cost.js","busy-app/models/cost-code-annual-seconds.js","busy-app/models/cost-code-day-cost.js","busy-app/models/cost-code-day-seconds.js","busy-app/models/cost-code-group.js","busy-app/models/cost-code-month-cost.js","busy-app/models/cost-code-month-seconds.js","busy-app/models/cost-code.js","busy-app/models/employee-payroll-item-connector.js","busy-app/models/employee-wage-type.js","busy-app/models/equipment-annual-cost.js","busy-app/models/equipment-annual-seconds.js","busy-app/models/equipment-category.js","busy-app/models/equipment-day-cost.js","busy-app/models/equipment-day-seconds.js","busy-app/models/equipment-location.js","busy-app/models/equipment-make.js","busy-app/models/equipment-model.js","busy-app/models/equipment-month-cost.js","busy-app/models/equipment-month-seconds.js","busy-app/models/equipment.js","busy-app/models/general-liability.js","busy-app/models/insurance-group.js","busy-app/models/integration-attempt.js","busy-app/models/integration-log.js","busy-app/models/media-collection.js","busy-app/models/media-entry.js","busy-app/models/member-annual-cost.js","busy-app/models/member-annual-seconds.js","busy-app/models/member-connector.js","busy-app/models/member-cost-code-cost.js","busy-app/models/member-cost-code-equipment-cost.js","busy-app/models/member-cost-code-equipment-seconds.js","busy-app/models/member-cost-code-seconds.js","busy-app/models/member-cost.js","busy-app/models/member-day-cost.js","busy-app/models/member-day-seconds.js","busy-app/models/member-equipment-cost.js","busy-app/models/member-equipment-seconds.js","busy-app/models/member-group.js","busy-app/models/member-location.js","busy-app/models/member-lock.js","busy-app/models/member-month-cost.js","busy-app/models/member-month-seconds.js","busy-app/models/member-overtime-period.js","busy-app/models/member-project-cost-code-cost.js","busy-app/models/member-project-cost-code-equipment-cost.js","busy-app/models/member-project-cost-code-equipment-seconds.js","busy-app/models/member-project-cost-code-seconds.js","busy-app/models/member-project-cost.js","busy-app/models/member-project-equipment-cost.js","busy-app/models/member-project-equipment-seconds.js","busy-app/models/member-project-seconds.js","busy-app/models/member-seconds.js","busy-app/models/member-sign-in-answer.js","busy-app/models/member-sign-in-submission.js","busy-app/models/member-time-document.js","busy-app/models/member-wage-history.js","busy-app/models/member.js","busy-app/models/organization-cancel-detail.js","busy-app/models/organization-info.js","busy-app/models/organization-integration.js","busy-app/models/organization-notification-preferences.js","busy-app/models/organization-overtime-period.js","busy-app/models/organization-pay-period.js","busy-app/models/organization-subscription-status.js","busy-app/models/organization.js","busy-app/models/pay-period-member-cost.js","busy-app/models/pay-period-member-project-cost-code-cost.js","busy-app/models/pay-period-member-project-cost-code-seconds.js","busy-app/models/pay-period-member-project-cost.js","busy-app/models/pay-period-member-project-seconds.js","busy-app/models/pay-period-member-seconds.js","busy-app/models/pay-period-verification.js","busy-app/models/position.js","busy-app/models/project-annual-cost.js","busy-app/models/project-annual-seconds.js","busy-app/models/project-cost-budget.js","busy-app/models/project-cost-code-link.js","busy-app/models/project-cost.js","busy-app/models/project-day-cost.js","busy-app/models/project-day-seconds.js","busy-app/models/project-equipment-seconds.js","busy-app/models/project-group.js","busy-app/models/project-hours-budget.js","busy-app/models/project-info.js","busy-app/models/project-lookup.js","busy-app/models/project-month-cost.js","busy-app/models/project-month-seconds.js","busy-app/models/project-seconds.js","busy-app/models/project.js","busy-app/models/quickbooks-payroll-item-wage.js","busy-app/models/safety-signature.js","busy-app/models/schedule-reminder-link.js","busy-app/models/schedule-reminder.js","busy-app/models/segment-cost.js","busy-app/models/segment-seconds.js","busy-app/models/segment.js","busy-app/models/self-signature.js","busy-app/models/sign-up-event.js","busy-app/models/stripe-customer-card.js","busy-app/models/stripe-customer-discount.js","busy-app/models/stripe-customer-invoice.js","busy-app/models/stripe-customer-line.js","busy-app/models/stripe-customer-subscription.js","busy-app/models/stripe-customer.js","busy-app/models/stripe-plan.js","busy-app/models/sync-log.js","busy-app/models/time-entry-break.js","busy-app/models/time-entry-location.js","busy-app/models/time-entry-member-conflicts.js","busy-app/models/time-entry-organization-conflicts.js","busy-app/models/time-entry-segment.js","busy-app/models/time-entry.js","busy-app/models/time-off.js","busy-app/models/user.js","busy-app/models/username-valid.js","busy-app/models/wage-history.js","busy-app/models/workers-comp.js","busy-app/polymorphs/base.js","busy-app/polymorphs/custom-wage-date/payroll-member.js","busy-app/polymorphs/pay-period-member-project-cost-code.js","busy-app/polymorphs/pay-period-member-project.js","busy-app/polymorphs/pay-period-member.js","busy-app/polymorphs/payroll-member.js","busy-app/polymorphs/payroll-project.js","busy-app/queries/equipment.js","busy-app/queries/project.js","busy-app/queries/segment.js","busy-app/queries/time-entry.js","busy-app/resolver.js","busy-app/router.js","busy-app/routes/account-ready.js","busy-app/routes/account-settings.js","busy-app/routes/application.js","busy-app/routes/company-settings.js","busy-app/routes/company-settings/index.js","busy-app/routes/company-settings/intuit-quickbooks.js","busy-app/routes/company-settings/procore/callback.js","busy-app/routes/company-settings/procore/index.js","busy-app/routes/cost-code.js","busy-app/routes/cost-code/index.js","busy-app/routes/employees.js","busy-app/routes/employees/employee-locations.js","busy-app/routes/employees/employee.js","busy-app/routes/employees/index.js","busy-app/routes/employees/loading.js","busy-app/routes/employees/locations.js","busy-app/routes/index.js","busy-app/routes/loading.js","busy-app/routes/login.js","busy-app/routes/logout.js","busy-app/routes/map.js","busy-app/routes/not-found.js","busy-app/routes/note/detail.js","busy-app/routes/project.js","busy-app/routes/project/detail.js","busy-app/routes/project/detail/index.js","busy-app/routes/project/detail/reports.js","busy-app/routes/project/detail/reports/budget-versus-actual.js","busy-app/routes/project/detail/reports/employees.js","busy-app/routes/project/detail/reports/loading.js","busy-app/routes/project/detail/reports/subprojects.js","busy-app/routes/project/index.js","busy-app/routes/report.js","busy-app/routes/report/activity.js","busy-app/routes/report/activity/index.js","busy-app/routes/report/activity/loading.js","busy-app/routes/report/employee-list.js","busy-app/routes/report/index.js","busy-app/routes/report/loading.js","busy-app/routes/report/payroll.js","busy-app/routes/report/payroll/index.js","busy-app/routes/report/payroll/loading.js","busy-app/routes/report/report-setup.js","busy-app/routes/report/safety-signature.js","busy-app/routes/report/safety-signature/date.js","busy-app/routes/report/safety-signature/index.js","busy-app/routes/report/time-card-approval.js","busy-app/routes/report/time-card.js","busy-app/routes/report/time-card/index.js","busy-app/routes/report/time-card/loading.js","busy-app/routes/report/time-entries.js","busy-app/routes/report/time-entries/index.js","busy-app/routes/report/time-entries/loading.js","busy-app/routes/report/time-off.js","busy-app/routes/report/time-off/index.js","busy-app/routes/report/time-off/loading.js","busy-app/routes/reset.js","busy-app/routes/scheduling.js","busy-app/routes/scheduling/index.js","busy-app/routes/scheduling/loading.js","busy-app/routes/signup.js","busy-app/routes/ticket.js","busy-app/routes/time-card.js","busy-app/routes/time-card/full-report.js","busy-app/routes/time-card/full-report/index.js","busy-app/routes/time-card/full-report/loading.js","busy-app/routes/time-card/index.js","busy-app/routes/time-card/pay-period.js","busy-app/routes/time-card/time-entries.js","busy-app/routes/time-card/time-entry.js","busy-app/routes/time-card/time-off-entry.js","busy-app/routes/verify-email.js","busy-app/serializers/application.js","busy-app/serializers/json.js","busy-app/services/access.js","busy-app/services/ajax.js","busy-app/services/analytics.js","busy-app/services/auth.js","busy-app/services/container.js","busy-app/services/cookies.js","busy-app/services/data-store.js","busy-app/services/discovery.js","busy-app/services/escape-handler.js","busy-app/services/event-emitter.js","busy-app/services/features.js","busy-app/services/google-maps-api.js","busy-app/services/graylog.js","busy-app/services/integration.js","busy-app/services/interop.js","busy-app/services/launch-darkly.js","busy-app/services/liquid-fire-transitions.js","busy-app/services/modal-dialog.js","busy-app/services/moment.js","busy-app/services/pay-period.js","busy-app/services/pro-feature.js","busy-app/services/raven.js","busy-app/services/session.js","busy-app/services/signature.js","busy-app/services/state.js","busy-app/services/store.js","busy-app/services/stripe.js","busy-app/services/subscription.js","busy-app/services/toggle.js","busy-app/services/validation.js","busy-app/session-stores/application.js","busy-app/templates/account-ready.js","busy-app/templates/account-settings.js","busy-app/templates/application.js","busy-app/templates/company-settings.js","busy-app/templates/company-settings/index.js","busy-app/templates/company-settings/intuit-quickbooks.js","busy-app/templates/company-settings/procore/callback.js","busy-app/templates/company-settings/procore/index.js","busy-app/templates/components/add-edit-scheduling.js","busy-app/templates/components/busy-action-bar.js","busy-app/templates/components/busy-button-bar.js","busy-app/templates/components/busy-container.js","busy-app/templates/components/busy-date-range.js","busy-app/templates/components/busy-date-time.js","busy-app/templates/components/busy-dialog-footer.js","busy-app/templates/components/busy-file-uploader.js","busy-app/templates/components/busy-header-floating.js","busy-app/templates/components/busy-header.js","busy-app/templates/components/busy-image-uploader.js","busy-app/templates/components/busy-infobox.js","busy-app/templates/components/busy-map-google.js","busy-app/templates/components/busy-map-leaflet-locations.js","busy-app/templates/components/busy-map-leaflet-time-entry-locations.js","busy-app/templates/components/busy-map-leaflet.js","busy-app/templates/components/busy-map-locations.js","busy-app/templates/components/busy-map-time-entry-locations.js","busy-app/templates/components/busy-map.js","busy-app/templates/components/busy-nav.js","busy-app/templates/components/busy-notification-bar.js","busy-app/templates/components/busy-pagination.js","busy-app/templates/components/busy-report-header.js","busy-app/templates/components/busy-save-message.js","busy-app/templates/components/busy-save.js","busy-app/templates/components/busy-search-bar.js","busy-app/templates/components/busy-select-checkbox.js","busy-app/templates/components/busy-select-create.js","busy-app/templates/components/busy-signature-pad.js","busy-app/templates/components/busy-sliding-panel.js","busy-app/templates/components/busy-status-bar.js","busy-app/templates/components/busy-terms.js","busy-app/templates/components/busy-time-picker.js","busy-app/templates/components/busy-title.js","busy-app/templates/components/charts/legacy-bar-chart.js","busy-app/templates/components/charts/progress-chart.js","busy-app/templates/components/clear-float.js","busy-app/templates/components/company/deactivate-account.js","busy-app/templates/components/company/integrations/grid/grid-item-base.js","busy-app/templates/components/company/integrations/grid/grid-item.js","busy-app/templates/components/company/integrations/integration-dashboard.js","busy-app/templates/components/company/integrations/oauth-callback.js","busy-app/templates/components/company/integrations/sync-log-dialog/log-dialog.js","busy-app/templates/components/company/integrations/sync-log-dialog/log-section.js","busy-app/templates/components/company/integrations/sync-log-errors-dialog.js","busy-app/templates/components/company/integrations/upgrade-dialog.js","busy-app/templates/components/company/integrations/vendors/procore/connect-dialog.js","busy-app/templates/components/company/integrations/vendors/procore/disconnect-dialog.js","busy-app/templates/components/company/integrations/vendors/procore/grid-item.js","busy-app/templates/components/company/integrations/vendors/procore/integration-dashboard.js","busy-app/templates/components/company/integrations/vendors/procore/oauth-callback.js","busy-app/templates/components/company/integrations/vendors/procore/settings-dialog.js","busy-app/templates/components/company/integrations/vendors/quickbooks/grid-item.js","busy-app/templates/components/company/integrations/vendors/quickbooks/sync-options.js","busy-app/templates/components/company/permission-boxes.js","busy-app/templates/components/company/permission-dialog.js","busy-app/templates/components/company/permission-settings.js","busy-app/templates/components/company/profile-info.js","busy-app/templates/components/company/time-keeping.js","busy-app/templates/components/cost-codes/import-cost-codes.js","busy-app/templates/components/cost-codes/splash-screen.js","busy-app/templates/components/d-button-split.js","busy-app/templates/components/d-button.js","busy-app/templates/components/dialogs/button-bar.js","busy-app/templates/components/dialogs/confirm-dialog.js","busy-app/templates/components/dialogs/content-view.js","busy-app/templates/components/dialogs/delete-dialog.js","busy-app/templates/components/dialogs/error/gps-location-required.js","busy-app/templates/components/dialogs/fs-modal-dialog.js","busy-app/templates/components/dialogs/instructions-container.js","busy-app/templates/components/dialogs/instructions-header.js","busy-app/templates/components/dialogs/instructions-section.js","busy-app/templates/components/dialogs/modal-dialog.js","busy-app/templates/components/dialogs/open-entry-location.js","busy-app/templates/components/dialogs/open-trial.js","busy-app/templates/components/dialogs/pro-feature-upgrade.js","busy-app/templates/components/dialogs/save-message.js","busy-app/templates/components/dialogs/summary-report.js","busy-app/templates/components/dialogs/tab-header-dialog.js","busy-app/templates/components/employee-selector.js","busy-app/templates/components/employees/edit-info-dialog.js","busy-app/templates/components/employees/edit-lock-date.js","busy-app/templates/components/employees/edit-photo-dialog.js","busy-app/templates/components/employees/employee-info.js","busy-app/templates/components/employees/import-employees.js","busy-app/templates/components/employees/overtime-dialog.js","busy-app/templates/components/employees/overtime-preview-dialog.js","busy-app/templates/components/employees/reset-pass-dialog.js","busy-app/templates/components/employees/reset-pin-dialog.js","busy-app/templates/components/employees/signature-dialog.js","busy-app/templates/components/employees/wage-dialog.js","busy-app/templates/components/employees/wage-history.js","busy-app/templates/components/employees/wage-info.js","busy-app/templates/components/equipment/splash-screen.js","busy-app/templates/components/file-drop-box.js","busy-app/templates/components/file-input.js","busy-app/templates/components/g-map/marker.js","busy-app/templates/components/image-placeholder.js","busy-app/templates/components/lib/bind-context.js","busy-app/templates/components/lib/display-value.js","busy-app/templates/components/lib/drag-drop-box.js","busy-app/templates/components/max-images-box.js","busy-app/templates/components/menu-button.js","busy-app/templates/components/mod-util/aggregate-cost.js","busy-app/templates/components/mod-util/aggregate-hours.js","busy-app/templates/components/mod-util/bound-model-range.js","busy-app/templates/components/mod-util/each-day.js","busy-app/templates/components/mod-util/each-type.js","busy-app/templates/components/mod-util/time-entry/end-for-day.js","busy-app/templates/components/mod-util/time-entry/start-for-day.js","busy-app/templates/components/mod-util/time-entry/total-break-for-day.js","busy-app/templates/components/mod-util/time-entry/total-time-for-day.js","busy-app/templates/components/model-title/cost-code.js","busy-app/templates/components/model-title/equipment.js","busy-app/templates/components/model-title/member.js","busy-app/templates/components/model-title/project.js","busy-app/templates/components/notes/note-cards.js","busy-app/templates/components/projects/cost-codes-manager.js","busy-app/templates/components/projects/cost-codes-manager/cost-code.js","busy-app/templates/components/projects/cost-codes-manager/group.js","busy-app/templates/components/projects/cost-codes-select.js","busy-app/templates/components/projects/cost-codes.js","busy-app/templates/components/projects/import-projects.js","busy-app/templates/components/projects/labor-budget.js","busy-app/templates/components/projects/project-info.js","busy-app/templates/components/projects/report-header.js","busy-app/templates/components/projects/report-index.js","busy-app/templates/components/projects/sub-project.js","busy-app/templates/components/report/time-card-approval/chart.js","busy-app/templates/components/report/time-card-approval/list-item-loading.js","busy-app/templates/components/report/time-card-approval/lock-date.js","busy-app/templates/components/report/time-card-approval/signature-status.js","busy-app/templates/components/report/time-card/signature-display.js","busy-app/templates/components/report/time-card/signature-state.js","busy-app/templates/components/safety-signature.js","busy-app/templates/components/select-menu/base.js","busy-app/templates/components/select-menu/cost-code.js","busy-app/templates/components/select-menu/equipment.js","busy-app/templates/components/select-menu/member.js","busy-app/templates/components/select-menu/project.js","busy-app/templates/components/selectors/checkbox-select.js","busy-app/templates/components/selectors/list-select.js","busy-app/templates/components/selectors/position-select.js","busy-app/templates/components/subscriptions/edit-billing-address.js","busy-app/templates/components/subscriptions/edit-payment-method.js","busy-app/templates/components/subscriptions/edit-plan.js","busy-app/templates/components/subscriptions/landing-page.js","busy-app/templates/components/subscriptions/order-confirmation.js","busy-app/templates/components/subscriptions/subscription-index.js","busy-app/templates/components/subscriptions/subscription-invoice-history.js","busy-app/templates/components/subscriptions/subscription-manager.js","busy-app/templates/components/subscriptions/subscription-plan-info.js","busy-app/templates/components/subscriptions/subscription-plans.js","busy-app/templates/components/subscriptions/upgrade-dialog.js","busy-app/templates/components/sync-status.js","busy-app/templates/components/text-box.js","busy-app/templates/components/text-field.js","busy-app/templates/components/time/break-entry/add-edit-input.js","busy-app/templates/components/time/break-entry/edit.js","busy-app/templates/components/time/break-entry/list.js","busy-app/templates/components/time/full-report/signature-notification-bar.js","busy-app/templates/components/time/full-report/signatures.js","busy-app/templates/components/time/pay-period/list.js","busy-app/templates/components/time/pay-period/signature-breadcrumb.js","busy-app/templates/components/time/pay-period/time-off-list.js","busy-app/templates/components/time/signature-invalidation-warning.js","busy-app/templates/components/time/time-conflict/conflict-list.js","busy-app/templates/components/time/time-conflict/merge-entries.js","busy-app/templates/components/time/time-conflict/resolve-conflicts.js","busy-app/templates/components/time/time-conflict/resolve-dialog.js","busy-app/templates/components/time/time-entry/clock-in-at.js","busy-app/templates/components/time/time-entry/clock-in.js","busy-app/templates/components/time/time-entry/clock-out-at.js","busy-app/templates/components/time/time-entry/clock.js","busy-app/templates/components/time/time-entry/create-new.js","busy-app/templates/components/time/time-entry/edit-open.js","busy-app/templates/components/time/time-entry/edit.js","busy-app/templates/components/time/time-entry/employee-list.js","busy-app/templates/components/time/time-entry/injury-protocol.js","busy-app/templates/components/time/time-entry/log.js","busy-app/templates/components/time/time-entry/safety-required.js","busy-app/templates/components/time/time-entry/safety.js","busy-app/templates/components/time/time-entry/status.js","busy-app/templates/components/time/time-entry/switch.js","busy-app/templates/components/time/time-entry/view.js","busy-app/templates/components/time/time-off/create-time-off.js","busy-app/templates/components/time/time-off/edit.js","busy-app/templates/components/time/time-off/view.js","busy-app/templates/components/time/time-sheet/dates-list-item.js","busy-app/templates/components/time/time-sheet/dates-list.js","busy-app/templates/components/time/time-sheet/header.js","busy-app/templates/components/time/time-sheet/index.js","busy-app/templates/components/time/time-sheet/signature-notification.js","busy-app/templates/components/time/time-sheet/signature-status.js","busy-app/templates/components/time/time-sheet/summary.js","busy-app/templates/components/version-refresher.js","busy-app/templates/components/window-resize.js","busy-app/templates/cost-code.js","busy-app/templates/cost-code/index.js","busy-app/templates/employees.js","busy-app/templates/employees/employee-locations.js","busy-app/templates/employees/employee.js","busy-app/templates/employees/index.js","busy-app/templates/employees/loading.js","busy-app/templates/employees/locations.js","busy-app/templates/index.js","busy-app/templates/loading.js","busy-app/templates/login.js","busy-app/templates/logout.js","busy-app/templates/map.js","busy-app/templates/not-found.js","busy-app/templates/note/detail.js","busy-app/templates/partials/activity-project-table.js","busy-app/templates/partials/activity-report-columns.js","busy-app/templates/partials/activity-report-graph.js","busy-app/templates/partials/budget-subproject-table.js","busy-app/templates/partials/equipment-project-children-table.js","busy-app/templates/partials/help-dialog.js","busy-app/templates/partials/integrations/quickbooks-dialogs.js","busy-app/templates/partials/integrations/quickbooks/connected-dialog.js","busy-app/templates/partials/integrations/quickbooks/connector-dialog.js","busy-app/templates/partials/integrations/quickbooks/disconnect-dialog.js","busy-app/templates/partials/integrations/quickbooks/payroll-mapping-dialog.js","busy-app/templates/partials/integrations/quickbooks/sync-log-dialog.js","busy-app/templates/partials/integrations/quickbooks/upgrade-dialog.js","busy-app/templates/partials/overtime-history-dialog.js","busy-app/templates/partials/report-upgrade-dialog.js","busy-app/templates/partials/summary-report/details-entries.js","busy-app/templates/partials/summary-report/details.js","busy-app/templates/partials/summary-report/summary.js","busy-app/templates/partials/time-entry-report.js","busy-app/templates/partials/time/time-entry/log.js","busy-app/templates/project.js","busy-app/templates/project/detail.js","busy-app/templates/project/detail/index.js","busy-app/templates/project/detail/reports.js","busy-app/templates/project/detail/reports/budget-versus-actual.js","busy-app/templates/project/detail/reports/employees.js","busy-app/templates/project/detail/reports/loading.js","busy-app/templates/project/detail/reports/subprojects.js","busy-app/templates/project/index.js","busy-app/templates/report.js","busy-app/templates/report/activity.js","busy-app/templates/report/activity/index.js","busy-app/templates/report/activity/loading.js","busy-app/templates/report/employee-list.js","busy-app/templates/report/index-activity-reports-partial.js","busy-app/templates/report/index.js","busy-app/templates/report/loading.js","busy-app/templates/report/payroll.js","busy-app/templates/report/payroll/employee-row.js","busy-app/templates/report/payroll/employee-table.js","busy-app/templates/report/payroll/index.js","busy-app/templates/report/payroll/loading.js","busy-app/templates/report/payroll/project-row.js","busy-app/templates/report/payroll/project-table.js","busy-app/templates/report/report-setup.js","busy-app/templates/report/safety-signature.js","busy-app/templates/report/safety-signature/date-row.js","busy-app/templates/report/safety-signature/date.js","busy-app/templates/report/safety-signature/employee-dialog.js","busy-app/templates/report/safety-signature/index.js","busy-app/templates/report/safety-signature/member-row.js","busy-app/templates/report/time-card-approval.js","busy-app/templates/report/time-card.js","busy-app/templates/report/time-card/index.js","busy-app/templates/report/time-card/loading.js","busy-app/templates/report/time-entries.js","busy-app/templates/report/time-entries/index.js","busy-app/templates/report/time-entries/loading.js","busy-app/templates/report/time-off.js","busy-app/templates/report/time-off/index.js","busy-app/templates/report/time-off/loading.js","busy-app/templates/reset.js","busy-app/templates/scheduling.js","busy-app/templates/scheduling/index.js","busy-app/templates/scheduling/loading.js","busy-app/templates/signup.js","busy-app/templates/ticket.js","busy-app/templates/time-card.js","busy-app/templates/time-card/full-report.js","busy-app/templates/time-card/full-report/index.js","busy-app/templates/time-card/full-report/loading.js","busy-app/templates/time-card/index.js","busy-app/templates/time-card/pay-period.js","busy-app/templates/time-card/time-entries.js","busy-app/templates/time-card/time-entry.js","busy-app/templates/time-card/time-off-entry.js","busy-app/templates/verify-email.js","busy-app/time.js","busy-app/transforms/boolean-null.js","busy-app/transforms/boolean.js","busy-app/transforms/date-string.js","busy-app/transforms/date.js","busy-app/transforms/duration-string.js","busy-app/transforms/file.js","busy-app/transforms/id.js","busy-app/transforms/password.js","busy-app/transforms/svg.js","busy-app/transitions.js","busy-app/transitions/cross-fade.js","busy-app/transitions/default.js","busy-app/transitions/explode.js","busy-app/transitions/fade.js","busy-app/transitions/flex-grow.js","busy-app/transitions/fly-to.js","busy-app/transitions/move-over.js","busy-app/transitions/scale.js","busy-app/transitions/scroll-then.js","busy-app/transitions/to-down.js","busy-app/transitions/to-left.js","busy-app/transitions/to-right.js","busy-app/transitions/to-up.js","busy-app/transitions/wait.js","busy-app/utils/_model-errors.js","busy-app/utils/_rpc-model-errors.js","busy-app/utils/access.js","busy-app/utils/api-error.js","busy-app/utils/app-global.js","busy-app/utils/array-filter.js","busy-app/utils/chargify.js","busy-app/utils/chart-object.js","busy-app/utils/clock.js","busy-app/utils/clock/base.js","busy-app/utils/clock/data.js","busy-app/utils/clock/math.js","busy-app/utils/clock/movement.js","busy-app/utils/clock/render.js","busy-app/utils/clock/string.js","busy-app/utils/clock/svg.js","busy-app/utils/collection.js","busy-app/utils/compare.js","busy-app/utils/container.js","busy-app/utils/container/container-array.js","busy-app/utils/container/container-manager.js","busy-app/utils/container/container.js","busy-app/utils/container/model-manager.js","busy-app/utils/cost-code-csv-import.js","busy-app/utils/csv-export.js","busy-app/utils/csv-import.js","busy-app/utils/currency-codes.js.js","busy-app/utils/data-base.js","busy-app/utils/date-range-pay-period.js","busy-app/utils/db-migration.js","busy-app/utils/debug-helper.js","busy-app/utils/debug.js","busy-app/utils/docs.js","busy-app/utils/employee-csv-import.js","busy-app/utils/error.js","busy-app/utils/event.js","busy-app/utils/exif.js","busy-app/utils/export-csv.js","busy-app/utils/features.js","busy-app/utils/format.js","busy-app/utils/geo.js","busy-app/utils/helpers.js","busy-app/utils/integrations/appcues.js","busy-app/utils/integrations/base.js","busy-app/utils/integrations/busy-event.js","busy-app/utils/integrations/full-story.js","busy-app/utils/integrations/google-maps.js","busy-app/utils/integrations/google-tag-manager.js","busy-app/utils/integrations/intercom.js","busy-app/utils/integrations/launch-darkly.js","busy-app/utils/integrations/receptive.js","busy-app/utils/key-event.js","busy-app/utils/launch-darkly-sdk.js","busy-app/utils/logger.js","busy-app/utils/maps.js","busy-app/utils/mod/array.js","busy-app/utils/mod/sum.js","busy-app/utils/mod/time-entry/day.js","busy-app/utils/models/collections/base.js","busy-app/utils/models/collections/hours-and-cost.js","busy-app/utils/models/collections/member-conflicts.js","busy-app/utils/models/collections/payroll-basic-csv.js","busy-app/utils/models/collections/payroll-member-cost-code-csv.js","busy-app/utils/models/collections/payroll-member-csv.js","busy-app/utils/models/collections/payroll-member-project-cost-code-csv.js","busy-app/utils/models/collections/payroll-member-project-csv.js","busy-app/utils/models/collections/payroll-member-project.js","busy-app/utils/models/collections/payroll-member.js","busy-app/utils/models/collections/time-card-conflicts.js","busy-app/utils/models/collections/time-card-report-csv.js","busy-app/utils/models/collections/time-card-report.js","busy-app/utils/models/collections/time-entry-day.js","busy-app/utils/models/collections/time-entry-log.js","busy-app/utils/models/collections/time-entry-project.js","busy-app/utils/models/collections/time-entry-pto-day.js","busy-app/utils/models/collections/time-entry-pto-range.js","busy-app/utils/models/collections/time-entry-range.js","busy-app/utils/models/collections/time-entry-report.js","busy-app/utils/models/collections/time-off-report.js","busy-app/utils/models/dispatchers/base.js","busy-app/utils/models/dispatchers/member-pay-period.js","busy-app/utils/models/dispatchers/member-project-pay-period.js","busy-app/utils/models/dispatchers/project-pay-period.js","busy-app/utils/models/dispatchers/time-entry-segment.js","busy-app/utils/models/dispatchers/time-entry.js","busy-app/utils/models/filters/base.js","busy-app/utils/models/filters/equipment.js","busy-app/utils/models/filters/member.js","busy-app/utils/models/filters/project.js","busy-app/utils/models/filters/segment.js","busy-app/utils/models/filters/time-entry.js","busy-app/utils/models/filters/time-off-entry.js","busy-app/utils/models/filters/time-off.js","busy-app/utils/models/filters/wage-history.js","busy-app/utils/models/managers/base.js","busy-app/utils/models/managers/hours-and-cost.js","busy-app/utils/models/managers/member-conflicts.js","busy-app/utils/models/managers/payroll-basic-csv.js","busy-app/utils/models/managers/payroll-member-cost-code-csv.js","busy-app/utils/models/managers/payroll-member-csv.js","busy-app/utils/models/managers/payroll-member-project-cost-code-csv.js","busy-app/utils/models/managers/payroll-member-project-csv.js","busy-app/utils/models/managers/payroll-member-project.js","busy-app/utils/models/managers/payroll-member.js","busy-app/utils/models/managers/quickbooks.js","busy-app/utils/models/managers/time-card-conflicts.js","busy-app/utils/models/managers/time-card-report-csv.js","busy-app/utils/models/managers/time-card-report.js","busy-app/utils/models/managers/time-entry-day.js","busy-app/utils/models/managers/time-entry-log.js","busy-app/utils/models/managers/time-entry-pto-day.js","busy-app/utils/models/managers/time-entry-pto-range.js","busy-app/utils/models/managers/time-entry-range.js","busy-app/utils/models/managers/time-entry-report.js","busy-app/utils/models/managers/time-off-report.js","busy-app/utils/models/socket.js","busy-app/utils/organization/overtime-period.js","busy-app/utils/organization/pay-period.js","busy-app/utils/parse.js","busy-app/utils/project-csv-import.js","busy-app/utils/project-parser.js","busy-app/utils/public-api.js","busy-app/utils/query-builder.js","busy-app/utils/query-string-to-json.js","busy-app/utils/query.js","busy-app/utils/request-handler.js","busy-app/utils/request-helpers.js","busy-app/utils/request-manager.js","busy-app/utils/round-time.js","busy-app/utils/settings.js","busy-app/utils/sortable-object.js","busy-app/utils/state.js","busy-app/utils/string.js","busy-app/utils/system-info.js","busy-app/utils/time-entry-break.js","busy-app/utils/time-entry-validator.js","busy-app/utils/time-entry.js","busy-app/utils/time-zones.js","busy-app/utils/time.js","busy-app/utils/touch.js","busy-app/utils/type-cast.js","busy-app/utils/unassigned.js","busy-app/utils/unique-id.js","busy-app/utils/uuid-generator.js","busy-app/utils/web-worker.js","busy-app/uuid.js","vendor/ember-cli/app-suffix.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["\"use strict\";\n\n\n","define('busy-app/adapters/application-platform-etl', ['exports', 'busy-app/adapters/application', 'busy-app/utils/settings'], function (exports, _application, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _application.default.extend({\n\t\thost: Ember.computed(function () {\n\t\t\treturn _settings.default.get('etl_plat_url');\n\t\t}),\n\n\t\tisBatchEnabled: Ember.computed(function () {\n\t\t\treturn false;\n\t\t})\n\t});\n});","define('busy-app/adapters/application-quickbooks', ['exports', 'busy-app/adapters/application', 'busy-app/utils/settings'], function (exports, _application, _settings) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _application.default.extend({\n    isBatchEnabled: Ember.computed(function () {\n      return false;\n    }),\n\n    host: Ember.computed(function () {\n      return _settings.default.get('qb_url');\n    })\n  });\n});","define('busy-app/adapters/application-report', ['exports', 'busy-app/adapters/application', 'busy-app/utils/settings'], function (exports, _application, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _application.default.extend({\n\n\t\thost: Ember.computed(function () {\n\t\t\treturn _settings.default.get('etl_url') + '/' + _settings.default.get('etl_version');\n\t\t}),\n\n\t\tisBatchEnabled: Ember.computed(function () {\n\t\t\treturn false;\n\t\t}),\n\n\t\t//buildURL(modelName, id, snapshot, requestType, query) {\n\t\t//\tlet url = this._super(modelName, id, snapshot, requestType, query, false);\n\n\t\t//\tconsole.log('url', url);\n\t\t//\treturn url;\n\t\t//},\n\n\t\taddDefaultParams: function addDefaultParams(data) {\n\t\t\tif (Ember.get(data, 'page_size')) {\n\t\t\t\tEmber.set(data, 'limit', Ember.get(data, 'page_size'));\n\t\t\t\tdelete data.page_size;\n\t\t\t}\n\n\t\t\tif (Ember.get(data, 'page')) {\n\t\t\t\tdelete data.page;\n\t\t\t}\n\n\t\t\treturn;\n\t\t},\n\t\taddUrlParams: function addUrlParams(data) {\n\t\t\t// set debug flag\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\t//set(data, '_debug', true);\n\n\t\t\t\tif (_settings.default.get('xdebug_session_start')) {\n\t\t\t\t\tEmber.set(data, 'XDEBUG_SESSION_START', _settings.default.get('xdebug_session_start'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/adapters/application', ['exports', '@busy-web/data', 'busy-app/utils/settings'], function (exports, _data, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = _data.JsonApiAdapter.extend(_data.SimpleAuthDataAdapterMixin, _data.ImageAdapterMixin, _data.BatchAdapterMixin, {\n\t\tauth: Ember.inject.service('auth'),\n\t\tsession: Ember.inject.service('session'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\thasManyFilterKey: '_in',\n\t\tcoalesceFindRequests: true,\n\t\tisBatchEnabled: Ember.computed(function () {\n\t\t\treturn _settings.default.get('batch_api');\n\t\t}),\n\n\t\thost: Ember.computed(function () {\n\t\t\treturn _settings.default.get('api_url');\n\t\t}),\n\n\t\t// headers: computed('auth.sessionId', function () {\n\t\t// \tconst { version, osVersion, osType, type } = browser;\n\n\t\t// \treturn {\n\t\t// \t\t'X-Platform': 'web',\n\t\t// \t\t'X-Os': type,\n\t\t// \t\t'X-Os-Version': version,\n\t\t// \t\t'X-App-Name': 'time',\n\t\t// \t\t'X-App-Version': Settings.get('version'),\n\t\t// \t\t'X-Device-Model': `${osType} ${osVersion} - ${type} ${version}`,\n\t\t// \t\t'X-Client-Session-Id': this.get('auth.sessionId'),\n\t\t// \t};\n\t\t// }),\n\n\t\tauthorize: function authorize(xhr) {\n\t\t\tvar _get = this.get('session.data.authenticated'),\n\t\t\t    token = _get.token;\n\n\t\t\tif (token) {\n\t\t\t\txhr.setRequestHeader('Key-Authorization', token);\n\t\t\t}\n\t\t},\n\n\n\t\t//findRecord(store, type, id, snapshot) {\n\t\t//  let request = this._requestFor({\n\t\t//    store, type, id, snapshot,\n\t\t//\t\tquery: {deleted_on: '_-DISABLE-_'},\n\t\t//    requestType: 'findRecord'\n\t\t//  });\n\n\t\t//  return this._makeRequest(request);\n\t\t//},\n\n\t\tgetBatchStatusForModel: function getBatchStatusForModel() {\n\t\t\tvar status = this._super.apply(this, arguments);\n\t\t\treturn parseInt(('' + status).replace(/^([0-9]*) [\\s\\S]*$/, '$1'), 10);\n\t\t},\n\t\tgetBatchStatusTextForModel: function getBatchStatusTextForModel(result, defaultValue) {\n\t\t\tvar statusText = Ember.get(result, 'status') || defaultValue;\n\t\t\treturn statusText.replace(/^[0-9]* ([\\s\\S]*)$/, '$1');\n\t\t},\n\t\taddBatchParams: function addBatchParams(query) {\n\t\t\tquery._version = _settings.default.get('api_version');\n\t\t\tdelete query.data._version;\n\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\tquery._debug = true;\n\t\t\t\tdelete query.data._debug;\n\t\t\t}\n\n\t\t\tif (_settings.default.get('xdebug_session_start')) {\n\t\t\t\tquery.XDEBUG_SESSION_START = _settings.default.get('xdebug_session_start');\n\t\t\t\tdelete query.data.XDEBUG_SESSION_START;\n\t\t\t}\n\t\t},\n\t\tmodifyNullStrings: function modifyNullStrings(data) {\n\t\t\tvar nullValue = '_-NULL-_';\n\t\t\tvar invalidNull = null;\n\t\t\tif (this.get('features.server-null')) {\n\t\t\t\tnullValue = null;\n\t\t\t\tinvalidNull = '_-NULL-_';\n\t\t\t}\n\n\t\t\tif (data) {\n\t\t\t\tObject.keys(data).forEach(function (item) {\n\t\t\t\t\tvar value = Ember.get(data, item);\n\t\t\t\t\tif (value === invalidNull) {\n\t\t\t\t\t\t//deprecate(`{${item}: '_-NULL-_'} is deprecated please use {${item}: null} instead.`, !this.get('features.server-null'), { id: 'adapter.params.null', until: \"6.0\" });\n\t\t\t\t\t\tEmber.set(data, item, nullValue);\n\t\t\t\t\t} else if (value === '!null') {\n\t\t\t\t\t\tEmber.set(data, '_not_equal', _defineProperty({}, item, null));\n\t\t\t\t\t\tdelete data[item];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\taddDefaultParams: function addDefaultParams(data, type) {\n\t\t\t// parse data params and remove '_-NULL-_' strings.\n\t\t\tthis.modifyNullStrings(data);\n\n\t\t\tif (type === 'GET') {\n\t\t\t\tif (Ember.isNone(Ember.get(data, 'deleted_on')) && Ember.isNone(Ember.get(data, '_in'))) {\n\t\t\t\t\tif (this.get('features.server-null')) {\n\t\t\t\t\t\tif (Ember.get(data, 'deleted_on') === undefined) {\n\t\t\t\t\t\t\tEmber.set(data, 'deleted_on', null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(data, 'deleted_on', '_-NULL-_');\n\t\t\t\t\t}\n\t\t\t\t} else if (Ember.get(data, 'deleted_on') === '_-DISABLE-_') {\n\t\t\t\t\tdelete data.deleted_on;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taddUrlParams: function addUrlParams(data) {\n\t\t\tEmber.set(data, '_version', _settings.default.get('api_version'));\n\n\t\t\t// set debug flag\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\tEmber.set(data, '_debug', true);\n\n\t\t\t\tif (_settings.default.get('xdebug_session_start')) {\n\t\t\t\t\tEmber.set(data, 'XDEBUG_SESSION_START', _settings.default.get('xdebug_session_start'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tisSuccess: function isSuccess(status, headers, payload) {\n\t\t\tvar isSuccess = this._super(status, headers, payload);\n\t\t\tif (isSuccess && !Ember.isNone(payload) && (!Ember.isNone(Ember.get(payload, 'jsonapi')) || Ember.get(payload, 'success') === true)) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t_requestToJQueryAjaxHash: function _requestToJQueryAjaxHash(request) {\n\t\t\t// setup special headers like auth\n\t\t\tvar authHeader = Ember.get(request, 'data.auth_header');\n\t\t\tif (!Ember.isNone(authHeader)) {\n\t\t\t\tEmber.merge(request.headers, authHeader);\n\t\t\t\tdelete request.data.auth_header;\n\n\t\t\t\trequest.disableBatch = true;\n\t\t\t}\n\t\t\treturn this._super(request);\n\t\t},\n\t\tajaxOptions: function ajaxOptions() {\n\t\t\tvar hash = this._super.apply(this, arguments);\n\n\t\t\t// setup special headers like auth\n\t\t\tvar headers = null;\n\t\t\tif (!Ember.isNone(Ember.get(hash, 'data.auth_header'))) {\n\t\t\t\theaders = Ember.get(hash, 'data.auth_header');\n\t\t\t\tdelete hash.data.auth_header;\n\t\t\t\tEmber.set(hash, 'disableBatch', true);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(headers)) {\n\t\t\t\thash.beforeSend = function (request) {\n\t\t\t\t\tObject.keys(headers).forEach(function (key) {\n\t\t\t\t\t\trequest.setRequestHeader(key, headers[key]);\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn hash;\n\t\t}\n\t});\n});","define('busy-app/adapters/cost-code-annual-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/cost-code-annual-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/cost-code-day-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/cost-code-day-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/cost-code-month-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/cost-code-month-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/employee-payroll-item-connector', ['exports', 'busy-app/adapters/application-quickbooks'], function (exports, _applicationQuickbooks) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationQuickbooks.default.extend({});\n});","define('busy-app/adapters/employee-wage-type', ['exports', 'busy-app/adapters/application-quickbooks'], function (exports, _applicationQuickbooks) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationQuickbooks.default.extend({});\n});","define('busy-app/adapters/equipment-annual-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/equipment-annual-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/equipment-day-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/equipment-day-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/equipment-month-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/equipment-month-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/json', ['exports', '@busy-web/data/adapters/json'], function (exports, _json) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _json.default;\n    }\n  });\n});","define('busy-app/adapters/member-annual-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-annual-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-connector', ['exports', 'busy-app/adapters/application-quickbooks'], function (exports, _applicationQuickbooks) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationQuickbooks.default.extend({});\n});","define('busy-app/adapters/member-cost-code-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-cost-code-equipment-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-cost-code-equipment-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-cost-code-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-day-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-day-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-equipment-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-equipment-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-month-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-month-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/member-project-cost-code-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-cost-code-equipment-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-cost-code-equipment-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-cost-code-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-equipment-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-equipment-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-project-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/member-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/project-annual-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-annual-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-cost', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/project-day-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-day-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-equipment-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/project-month-cost', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-month-seconds', ['exports', 'busy-app/adapters/application-platform-etl'], function (exports, _applicationPlatformEtl) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationPlatformEtl.default.extend({});\n});","define('busy-app/adapters/project-seconds', ['exports', 'busy-app/adapters/application-report'], function (exports, _applicationReport) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationReport.default.extend({});\n});","define('busy-app/adapters/quickbooks-payroll-item-wage', ['exports', 'busy-app/adapters/application-quickbooks'], function (exports, _applicationQuickbooks) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationQuickbooks.default.extend({});\n});","define('busy-app/adapters/sync-log', ['exports', 'busy-app/adapters/application-quickbooks'], function (exports, _applicationQuickbooks) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _applicationQuickbooks.default.extend({});\n});","define('busy-app/adapters/time-entry-member-conflicts', ['exports', 'busy-app/adapters/application'], function (exports, _application) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _application.default.extend({\n\t\tbuildURL: function buildURL(modelName, id, snapshot, requestType, query) {\n\t\t\tif (requestType === 'updateRecord') {\n\t\t\t\treturn this._super('time-entry', id, snapshot, requestType, query);\n\t\t\t} else {\n\t\t\t\treturn this._super(modelName, id, snapshot, requestType, query);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/adapters/time-entry-organization-conflicts', ['exports', 'busy-app/adapters/application'], function (exports, _application) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _application.default.extend({\n\t\tbuildURL: function buildURL(modelName, id, snapshot, requestType, query) {\n\t\t\tif (requestType === 'updateRecord') {\n\t\t\t\treturn this._super('time-entry', id, snapshot, requestType, query);\n\t\t\t} else {\n\t\t\t\treturn this._super(modelName, id, snapshot, requestType, query);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/animations/company', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = timecard;\n\tfunction timecard(durationTo, durationBack) {\n\t\t//time card transitions\n\t\tvar animate = ['company-settings.subscription-edit', 'company-settings.intuit-quickbooks', 'company-settings.procore'];\n\n\t\tthis.transition(this.toRoute(animate), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\t}\n});","define('busy-app/animations/employee', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = timecard;\n\tfunction timecard(durationTo, durationBack) {\n\t\t//time card transitions\n\t\tvar animate = ['employees.employee', 'employees.locations'];\n\n\t\tthis.transition(this.toRoute(animate), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\t//employees locations transitions\n\t\t//\tthis.transition(\n\t\t//\t\tthis.toRoute('employees.locations'),\n\t\t//\t\tthis.fromRoute('employees.employee'),\n\t\t//\t\tthis.use('toLeft', {duration: durationTo}),\n\t\t//\t\tthis.reverse('toRight', {duration: durationBack})\n\t\t//\t);\n\t}\n});","define('busy-app/animations/project', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = timecard;\n\tfunction timecard(durationTo, durationBack) {\n\t\t//time card transitions\n\t\tvar animate = ['project.detail', 'project.detail.reports', 'project.detail.project-time-sheet'];\n\n\t\tthis.transition(this.toRoute(animate), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\t// project slider transition\n\t\tthis.transition(this.hasClass('slide-greater'), this.toValue(function (to, from) {\n\t\t\treturn from < to;\n\t\t}), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\t// project slider transition\n\t\tthis.transition(this.hasClass('project-slide'), this.toValue(function (to, from) {\n\t\t\treturn from.project.get('depth') < to.project.get('depth');\n\t\t}), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\t}\n});","define('busy-app/animations/report', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = timecard;\n\tfunction timecard(durationTo, durationBack) {\n\t\t//time card transitions\n\t\tvar animate = ['report.payroll', 'report.payroll.result-member', 'report.payroll.result-project', 'report.signature', 'report.report-setup', 'report.employee-list', 'report.equipment-project', 'report.time-card', 'report.time-off'];\n\n\t\tthis.transition(this.toRoute(animate), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\t}\n});","define('busy-app/animations/time-card', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = timecard;\n\tfunction timecard(durationTo, durationBack) {\n\t\t//time card transitions\n\t\tvar animate = ['time-card', 'time-card.time-entries', 'time-card.full-report', 'time-card.time-entry'];\n\n\t\tthis.transition(this.toRoute(animate), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\tthis.transition(this.toRoute('time-card.time-entry'), this.fromRoute('time-card.time-entries'), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\tthis.transition(this.toRoute('time-card.time-off-entry'), this.fromRoute('time-card.time-entries'), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\t}\n});","define('busy-app/app', ['exports', 'busy-app/resolver', 'ember-load-initializers', 'busy-app/config/environment'], function (exports, _resolver, _emberLoadInitializers, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var App = Ember.Application.extend({\n    modulePrefix: _environment.default.modulePrefix,\n    podModulePrefix: _environment.default.podModulePrefix,\n    Resolver: _resolver.default\n  });\n\n  (0, _emberLoadInitializers.default)(App, _environment.default.modulePrefix);\n\n  exports.default = App;\n});","define('busy-app/assert', ['exports', '@busy-web/utils/assert'], function (exports, _assert) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _assert.default;\n    }\n  });\n});","define('busy-app/authenticators/base', ['exports', 'ember-simple-auth/authenticators/base', 'fetch'], function (exports, _base, _fetch) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * endpoint to make request to\n   *\n   */\n\t\tserverTokenEndpoint: 'token',\n\n\t\t/**\n   * name of the token to use for authenticated calls\n   * thet is returned from the auth endpoint\n   *\n   */\n\t\ttokenAttributeName: 'token',\n\n\t\t/**\n   * GET query may need to use the identifier to filter the results\n   *\n   */\n\t\tidentifierName: '',\n\n\t\trestore: function restore(data) {\n\t\t\treturn Ember.RSVP.Promise.resolve(data);\n\t\t},\n\t\tnormalizeResponse: function normalizeResponse(data) {\n\t\t\treturn data;\n\t\t},\n\t\tvalidateResponse: function validateResponse() {\n\t\t\treturn true;\n\t\t},\n\t\tinvalidMessage: function invalidMessage() {\n\t\t\treturn { message: \"Authentication Failed\", code: 1001 };\n\t\t},\n\t\tauthenticate: function authenticate(identifier, password, token) {\n\t\t\tvar _this = this;\n\n\t\t\tif (token) {\n\t\t\t\treturn Ember.RSVP.Promise.resolve(token);\n\t\t\t}\n\n\t\t\tvar query = {};\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'identifierName'))) {\n\t\t\t\tEmber.set(query, Ember.get(this, 'identifierName'), identifier);\n\t\t\t}\n\n\t\t\tvar auth = window.btoa(identifier + ':' + password);\n\t\t\treturn this.makeRequest(auth, query).then(function (response) {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json().then(function (data) {\n\t\t\t\t\t\tif (_this.validateResponse(data)) {\n\t\t\t\t\t\t\tvar resp = _this.normalizeResponse(data);\n\t\t\t\t\t\t\treturn resp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _invalidMessage = _this.invalidMessage(data),\n\t\t\t\t\t\t\t    message = _invalidMessage.message,\n\t\t\t\t\t\t\t    code = _invalidMessage.code;\n\n\t\t\t\t\t\t\treturn Ember.RSVP.Promise.reject({ status: 401, code: code, message: message });\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn response.json().then(function (err) {\n\t\t\t\t\t\treturn Ember.RSVP.Promise.reject({ status: response.status, code: err.code[0], message: \"Authentication Failed\" });\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinvalidate: function invalidate(data) {\n\t\t\treturn Ember.RSVP.Promise.resolve(data);\n\t\t},\n\t\tmakeRequest: function makeRequest(basicAuth) {\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tquery = query || {};\n\n\t\t\tvar adapter = this.get('store')._instanceCache.get('adapter');\n\t\t\tvar url = adapter.urlForRequest({\n\t\t\t\ttype: { modelName: this.get('serverTokenEndpoint') },\n\t\t\t\trequestType: 'query',\n\t\t\t\tquery: query\n\t\t\t});\n\n\t\t\tvar body = Ember.$.param(query);\n\t\t\turl = [url, body].join('&');\n\n\t\t\tvar requestOptions = {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\t'accept': 'application/json; charset=utf-8',\n\t\t\t\t\t'content-type': 'application/json; charset=utf-8',\n\t\t\t\t\t'Authorization': 'Basic ' + basicAuth\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn (0, _fetch.default)(url, requestOptions);\n\t\t}\n\t});\n});","define('busy-app/authenticators/basic', ['exports', 'cryptojs', 'busy-app/authenticators/base'], function (exports, _cryptojs, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tdataStore: Ember.inject.service('data-store'),\n\n\t\tserverTokenEndpoint: 'member',\n\t\ttokenAttributeName: 'private_key',\n\t\tidentifierName: 'username',\n\n\t\tnormalizeResponse: function normalizeResponse(data) {\n\t\t\tvar token = Ember.get(data, 'public_key');\n\t\t\tdata = data.data[0];\n\t\t\treturn { token: token, id: data.id };\n\t\t},\n\t\trestore: function restore(data) {\n\t\t\tthis.get('dataStore').authenticated(data);\n\t\t\treturn this._super.apply(this, arguments);\n\t\t},\n\t\tauthenticate: function authenticate(identifier, password, token) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(password)) {\n\t\t\t\tpassword = _cryptojs.default.SHA256(password).toString();\n\t\t\t}\n\n\t\t\treturn this._super(identifier, password, token).then(function (data) {\n\t\t\t\t_this.get('dataStore').authenticated(data);\n\t\t\t\treturn data;\n\t\t\t});\n\t\t},\n\t\tvalidateResponse: function validateResponse(data) {\n\t\t\tdata = data.data && data.data[0] || {};\n\t\t\tif (!Ember.isNone(data.archived_on)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tinvalidMessage: function invalidMessage(data) {\n\t\t\tdata = data.data && data.data[0] || {};\n\t\t\tif (!Ember.isNone(data.archived_on)) {\n\t\t\t\treturn { message: \"Access Revoked\", code: 1002 };\n\t\t\t}\n\t\t\treturn this._super(data);\n\t\t},\n\t\tinvalidate: function invalidate() {\n\t\t\tthis.get('dataStore').clear();\n\t\t\treturn this._super.apply(this, arguments);\n\t\t},\n\t\tisInvalid: function isInvalid(auth) {\n\t\t\tif (auth.active === false) {\n\t\t\t\treturn \"archived\";\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t});\n});","define('busy-app/browser', ['exports', '@busy-web/utils/browser'], function (exports, _browser) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _browser.default;\n    }\n  });\n});","define('busy-app/collections/base', ['exports', 'busy-app/utils/request-helpers'], function (exports, _requestHelpers) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar generateId = _requestHelpers.default.generateId;\n\texports.default = Ember.ArrayProxy.extend(Ember.Evented, {\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tcontent: null,\n\t\tstore: null,\n\t\tmanager: null,\n\n\t\tisLoading: false,\n\t\tisUpdating: false,\n\n\t\tupdate: function update() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isUpdating', true);\n\t\t\tthis.manager.update().then(function () {\n\t\t\t\t_this.set('isUpdating', false);\n\t\t\t});\n\t\t},\n\t\tbuildModels: function buildModels(data) {\n\t\t\treturn data;\n\t\t},\n\t\tmodel: function model() {\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\t\tcreatePolymorph: function createPolymorph(type) {\n\t\t\tvar content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar Polymorph = owner.factoryFor('polymorph:' + Ember.String.dasherize(type));\n\t\t\tvar polymorph = Polymorph.create({\n\t\t\t\tstore: this.store,\n\t\t\t\tcontent: content,\n\t\t\t\tmanager: this,\n\t\t\t\tgetter: this,\n\t\t\t\tid: generateId(),\n\t\t\t\t_name: type\n\t\t\t});\n\n\t\t\treturn polymorph;\n\t\t},\n\t\tpopulateModels: function populateModels(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.set('isLoading', true);\n\t\t\tvar models = this.buildModels(data);\n\t\t\tif (!Ember.isNone(models.forEach)) {\n\t\t\t\tmodels.forEach(function (model) {\n\t\t\t\t\t_this2.addInternalModel(model);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.set('model', models);\n\t\t\t}\n\t\t\tthis.set('isLoading', false);\n\t\t\treturn this;\n\t\t},\n\t\tobjectAtContent: function objectAtContent(index) {\n\t\t\tvar content = Ember.get(this, 'content');\n\t\t\treturn content.objectAt(index);\n\t\t},\n\t\taddInternalModel: function addInternalModel(model, idx) {\n\t\t\tif (idx !== undefined) {\n\t\t\t\tthis.get('content').removeAt(idx, 1);\n\t\t\t\tthis.get('content').insertAt(idx, model);\n\t\t\t} else {\n\t\t\t\tthis.get('content').pushObject(model);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\tremoveInternalModel: function removeInternalModel(model) {\n\t\t\tthis.get('content').removeObject(model);\n\t\t\treturn this;\n\t\t}\n\t});\n});","define('busy-app/collections/custom-wage-date/payroll-member-project', ['exports', 'busy-app/collections/base', '@busy-web/utils', 'busy-app/collections/custom-wage-date/utils'], function (exports, _base, _utils, _utils2) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\n\t\t\t// get payPeriodType\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\t// add member array\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\t// add archivedMember array\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('member.fullName');\n\t\t},\n\t\tbuildModel: function buildModel(item, model, data, payPeriodType) {\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar wageHistory = (0, _utils2.getWageHistory)(item, Ember.get(this, 'start'), Ember.get(this, 'end'));\n\t\t\tvar wage = Ember.get(wageHistory, 'lastObject');\n\t\t\tvar isSalary = !Ember.isNone(wage) && wage.get('isSalary');\n\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\n\t\t\tvar hasMultipleWage = Ember.get(wageHistory, 'length') !== 1;\n\t\t\tvar hasSalary = wageHistory.any(function (w) {\n\t\t\t\treturn Ember.get(w, 'isSalary');\n\t\t\t});\n\t\t\tvar hasExceptionalWageChange = hasMultipleWage && hasSalary;\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (hasSeconds > 0 || isSalary) {\n\t\t\t\tvar poly = this.createPolymorph('custom-wage-date/payroll-member');\n\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\tmember: item,\n\t\t\t\t\tseconds: seconds,\n\t\t\t\t\tcost: cost,\n\t\t\t\t\twage: wage,\n\t\t\t\t\twageHistory: wageHistory,\n\t\t\t\t\thasMultipleWage: hasMultipleWage,\n\t\t\t\t\thasExceptionalWageChange: hasExceptionalWageChange,\n\t\t\t\t\tpayPeriodType: payPeriodType,\n\t\t\t\t\tisTopLevel: true\n\t\t\t\t});\n\n\t\t\t\tif (!Ember.isEmpty(seconds)) {\n\t\t\t\t\tthis.addChildProjects(poly, null, model, 1);\n\t\t\t\t}\n\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\taddMemberModels: function addMemberModels(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar payPeriod = model.organizationPayPeriod.objectAt(0);\n\t\t\tvar data = [];\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\tvar seconds = polyObject.get('seconds').filterBy('memberId', item.id);\n\t\t\t\tvar cost = polyObject.get('cost').filterBy('memberId', item.id);\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\t\tvar memberSeconds = _this2.createPolymorph('pay-period-member');\n\t\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\t\titem.set('seconds', memberSeconds);\n\t\t\t\t\tvar wageHistory = (0, _utils2.getWageHistory)(item, Ember.get(_this2, 'start'), Ember.get(_this2, 'end'));\n\t\t\t\t\tvar wage = Ember.get(wageHistory, 'lastObject');\n\t\t\t\t\tvar hasMultipleWage = Ember.get(wageHistory, 'length') !== 1;\n\n\t\t\t\t\tvar poly = _this2.createPolymorph('custom-wage-date/payroll-member');\n\n\t\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\t\tmember: item,\n\t\t\t\t\t\tproject: polyObject.get('project'),\n\t\t\t\t\t\tpayPeriodType: payPeriod.get('payPeriodType'),\n\t\t\t\t\t\tseconds: seconds,\n\t\t\t\t\t\tcost: cost,\n\t\t\t\t\t\twage: wage,\n\t\t\t\t\t\twageHistory: wageHistory,\n\t\t\t\t\t\thasMultipleWage: hasMultipleWage,\n\t\t\t\t\t\thidden: true,\n\t\t\t\t\t\tisOpen: true\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!Ember.isNone(depth)) {\n\t\t\t\t\t\t_this2.addChildProjects(poly, parentProjectId, model, depth + 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpolyObject.set('members', data);\n\t\t},\n\t\taddChildProjects: function addChildProjects(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar data = [];\n\n\t\t\tvar projects = model.project.filterBy('depth', depth);\n\t\t\tif (!Ember.isNone(parentProjectId)) {\n\t\t\t\tprojects = projects.filterBy('parentProjectId', parentProjectId);\n\t\t\t}\n\n\t\t\tprojects.forEach(function (item) {\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\tvar poly = _this3.createPolymorph('payroll-project');\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tpoly.set('project', item);\n\t\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\n\t\t\t\t\t_this3.addMemberModels(poly, item.id, model, depth);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (data.length > 0) {\n\t\t\t\tthis.addUnassigned(polyObject, data, model, parentProjectId, depth);\n\t\t\t}\n\n\t\t\tpolyObject.set('projects', data.sortBy('project.sortWeight', 'project.title'));\n\t\t},\n\t\taddUnassigned: function addUnassigned(polyObject, data, model, parentProjectId, depth) {\n\t\t\tvar project = Ember.Object.create({\n\t\t\t\tid: null,\n\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tisUnassigned: true,\n\t\t\t\tdepth: depth,\n\t\t\t\tparentProjectId: parentProjectId,\n\t\t\t\tsortWeight: 2\n\t\t\t});\n\n\t\t\tvar seconds = void 0,\n\t\t\t    cost = void 0;\n\t\t\tif (Ember.isNone(parentProjectId)) {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', null);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', null);\n\t\t\t} else {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', parentProjectId);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', parentProjectId);\n\t\t\t}\n\n\t\t\tseconds = seconds.filterBy('memberId', polyObject.get('member.id'));\n\t\t\tseconds = seconds.filterBy('memberId', polyObject.get('member.id'));\n\n\t\t\tif (!Ember.isEmpty(seconds)) {\n\t\t\t\tvar poly = this.createPolymorph('payroll-project');\n\t\t\t\tpoly.set('project', project);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('includeChildren', false);\n\n\t\t\t\tif (poly.get('totalNoChildrenSeconds') > 0 && (depth === 1 || poly.get('totalChildrenSeconds') > 0)) {\n\t\t\t\t\tthis.addMemberModels(poly, project.id, model);\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('regularSeconds');\n\t\t\t\tovertimeSeconds += item.get('overtimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('doubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\n\t\t\t\tif (item.get('wage.wageRate') !== 10) {\n\t\t\t\t\testCostSalary += item.get('totalOverburdenCost');\n\t\t\t\t} else {\n\t\t\t\t\testCostHourly += item.get('totalOverburdenCost');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\t// filter by project id\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar memberGroupId = Ember.get(this, 'auth.member.memberGroupId');\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tvar authMemberId = Ember.get(this, 'auth.memberId');\n\t\t\t\t\tEmber.setProperties(query, { member_id: authMemberId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: authMemberId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: authMemberId });\n\t\t\t\t} else {\n\t\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'member', 'id', { deleted_on: null }).joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/custom-wage-date/payroll-member', ['exports', 'busy-app/collections/base', 'busy-app/collections/custom-wage-date/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\n\t\t\t// get payPeriodType\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\t// add member array\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\t// add archivedMember array\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('member.fullName');\n\t\t},\n\t\tbuildModel: function buildModel(item, model, data, payPeriodType) {\n\t\t\tvar wageHistory = (0, _utils.getWageHistory)(item, Ember.get(this, 'start'), Ember.get(this, 'end'));\n\t\t\tvar wage = Ember.get(wageHistory, 'lastObject');\n\t\t\tvar isSalary = !Ember.isNone(wage) && wage.get('isSalary');\n\n\t\t\tvar hasMultipleWage = Ember.get(wageHistory, 'length') !== 1;\n\t\t\tvar hasSalary = wageHistory.any(function (w) {\n\t\t\t\treturn Ember.get(w, 'isSalary');\n\t\t\t});\n\t\t\tvar hasExceptionalWageChange = hasMultipleWage && hasSalary;\n\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar hasSeconds = seconds.any(function (s) {\n\t\t\t\treturn Ember.get(s, 'totalSeconds') > 0;\n\t\t\t});\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (hasSeconds || isSalary) {\n\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\tvar memberSeconds = this.createPolymorph('pay-period-member');\n\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\titem.set('seconds', memberSeconds);\n\n\t\t\t\tcost.forEach(function (costItem) {\n\t\t\t\t\tif (Ember.get(costItem, 'totalCost') > 0) {\n\t\t\t\t\t\tvar costWage = wageHistory.find(function (wageItem) {\n\t\t\t\t\t\t\treturn Ember.get(costItem, 'startTime') >= Ember.get(wageItem, 'changeDate') && Ember.get(costItem, 'endTime') <= Ember.get(wageItem, 'endDate');\n\t\t\t\t\t\t});\n\t\t\t\t\t\tEmber.setProperties(costItem, { wage: costWage });\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar poly = this.createPolymorph('custom-wage-date/payroll-member');\n\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\tmember: item,\n\t\t\t\t\tseconds: seconds,\n\t\t\t\t\tcost: cost,\n\t\t\t\t\twage: wage,\n\t\t\t\t\twageHistory: wageHistory,\n\t\t\t\t\thasMultipleWage: hasMultipleWage,\n\t\t\t\t\thasExceptionalWageChange: hasExceptionalWageChange,\n\t\t\t\t\tpayPeriodType: payPeriodType\n\t\t\t\t});\n\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('regularSeconds');\n\t\t\t\tovertimeSeconds += item.get('overtimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('doubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\n\t\t\t\tif (item.get('wage.wageRate') !== 10) {\n\t\t\t\t\testCostSalary += item.get('totalOverburdenCost');\n\t\t\t\t} else {\n\t\t\t\t\testCostHourly += item.get('totalOverburdenCost');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar memberGroupId = Ember.get(this, 'auth.member.memberGroupId');\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tvar authMemberId = Ember.get(this, 'auth.memberId');\n\t\t\t\t\tEmber.setProperties(query, { member_id: authMemberId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: authMemberId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: authMemberId });\n\t\t\t\t} else {\n\t\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'member', 'id', { deleted_on: null }).joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/custom-wage-date/payroll-project', ['exports', 'busy-app/collections/base', '@busy-web/utils', 'busy-app/collections/custom-wage-date/utils'], function (exports, _base, _utils, _utils2) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param model {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\t\t\tmodel.timeMembers.forEach(function (item) {\n\t\t\t\tif (model.member.indexOf(item) === -1) {\n\t\t\t\t\tmodel.member.pushObject(item._internalModel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmodel.project.filterBy('depth', 1).forEach(function (item) {\n\t\t\t\tvar poly = _this.createPolymorph('payroll-project');\n\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id);\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id);\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\titem.set('sortWeight', 1);\n\n\t\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\t\tproject: item,\n\t\t\t\t\t\tseconds: seconds,\n\t\t\t\t\t\tcost: cost,\n\t\t\t\t\t\tforceOpen: true,\n\t\t\t\t\t\thideData: false,\n\t\t\t\t\t\tdisableDepth: true,\n\t\t\t\t\t\tisTopLevel: true\n\t\t\t\t\t});\n\n\t\t\t\t\tvar members = _this.getMemberModels(poly, item.id, model, 1);\n\n\t\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\t\tmembers: members,\n\t\t\t\t\t\thasExceptionalWageChange: members.isAny('hasExceptionalWageChange')\n\t\t\t\t\t});\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tEmber.setProperties(model, {\n\t\t\t\thasExceptionalWageChange: data.isAny('hasExceptionalWageChange')\n\t\t\t});\n\n\t\t\tthis.addUnassigned(null, data, model, null, 1);\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('project.sortWeight', 'project.title');\n\t\t},\n\t\tgetMemberModels: function getMemberModels(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar payPeriod = model.organizationPayPeriod.objectAt(0);\n\t\t\tvar data = [];\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\tvar seconds = polyObject.get('seconds').filterBy('memberId', item.id);\n\t\t\t\tvar cost = polyObject.get('cost').filterBy('memberId', item.id);\n\t\t\t\tvar wageHistory = (0, _utils2.getWageHistory)(item, Ember.get(_this2, 'start'), Ember.get(_this2, 'end'));\n\t\t\t\tvar wage = Ember.get(wageHistory, 'lastObject');\n\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t\tvar hasMultipleWage = Ember.get(wageHistory, 'length') !== 1;\n\t\t\t\tvar hasSalary = wageHistory.any(function (w) {\n\t\t\t\t\treturn Ember.get(w, 'isSalary');\n\t\t\t\t});\n\t\t\t\tvar hasExceptionalWageChange = hasMultipleWage && hasSalary;\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\t\tvar memberSeconds = _this2.createPolymorph('pay-period-member');\n\t\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\t\titem.set('seconds', memberSeconds);\n\n\t\t\t\t\tvar poly = _this2.createPolymorph('custom-wage-date/payroll-member');\n\t\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\t\tmember: item,\n\t\t\t\t\t\tproject: polyObject.get('project'),\n\t\t\t\t\t\tseconds: seconds,\n\t\t\t\t\t\tcost: cost,\n\t\t\t\t\t\twage: wage,\n\t\t\t\t\t\twageHistory: wageHistory,\n\t\t\t\t\t\thasMultipleWage: hasMultipleWage,\n\t\t\t\t\t\thasExceptionalWageChange: hasExceptionalWageChange,\n\t\t\t\t\t\tpayPeriodType: payPeriod.get('payPeriodType'),\n\t\t\t\t\t\tnestedMember: true,\n\t\t\t\t\t\thideData: true,\n\t\t\t\t\t\tisOpen: depth !== 1,\n\t\t\t\t\t\thidden: depth !== 1\n\t\t\t\t\t});\n\n\t\t\t\t\t_this2.addChildProjects(poly, parentProjectId, model, depth + 1);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn data.sortBy('member.fullName');\n\t\t},\n\t\taddSalaryMembers: function addSalaryMembers(polyObject, model) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this3._addSalaryMembers(item, polyObject, model, payPeriodType);\n\t\t\t});\n\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this3._addSalaryMembers(item, polyObject, model, payPeriodType);\n\t\t\t});\n\n\t\t\tpolyObject.set('members', polyObject.get('members').sortBy('member.fullName'));\n\t\t},\n\t\t_addSalaryMembers: function _addSalaryMembers(item, polyObject, model, payPeriodType) {\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar wage = (0, _utils2.getWageHistory)(item, Ember.get(this, 'start'), Ember.get(this, 'end'));\n\t\t\tvar isSalary = !Ember.isNone(wage) && (wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50);\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (Ember.isEmpty(seconds) && isSalary) {\n\t\t\t\tvar poly = this.createPolymorph('custom-wage-date/payroll-member');\n\t\t\t\tpoly.set('member', item);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('wage', (0, _utils2.getWageHistory)(item, Ember.get(this, 'start'), Ember.get(this, 'end')));\n\t\t\t\tpoly.set('payPeriodType', payPeriodType);\n\t\t\t\tpoly.set('nestedMember', true);\n\n\t\t\t\tpolyObject.get('members').pushObject(poly);\n\t\t\t}\n\t\t},\n\t\taddChildProjects: function addChildProjects(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar data = [];\n\t\t\tvar projects = model.project.filterBy('depth', depth).filterBy('parentProjectId', parentProjectId);\n\t\t\tprojects.forEach(function (item) {\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\tvar poly = _this4.createPolymorph('payroll-project');\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tpoly.set('project', item);\n\t\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\n\t\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\t\tmembers: _this4.getMemberModels(poly, item.id, model, depth)\n\t\t\t\t\t});\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (data.length > 0) {\n\t\t\t\tthis.addUnassigned(polyObject, data, model, parentProjectId, depth);\n\t\t\t}\n\n\t\t\tpolyObject.set('projects', data.sortBy('project.sortWeight', 'project.title'));\n\t\t},\n\t\taddUnassigned: function addUnassigned(polyObject, data, model, parentProjectId, depth) {\n\t\t\tvar project = Ember.Object.create({\n\t\t\t\tid: null,\n\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tisUnassigned: true,\n\t\t\t\tdepth: depth,\n\t\t\t\tparentProjectId: parentProjectId,\n\t\t\t\tsortWeight: 2\n\t\t\t});\n\n\t\t\tvar seconds = void 0,\n\t\t\t    cost = void 0;\n\t\t\tif (Ember.isNone(parentProjectId)) {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', null);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', null);\n\t\t\t} else {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', parentProjectId).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', parentProjectId).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t}\n\n\t\t\tvar poly = this.createPolymorph('payroll-project');\n\t\t\tpoly.set('project', project);\n\t\t\tpoly.set('seconds', seconds);\n\t\t\tpoly.set('cost', cost);\n\t\t\tpoly.set('disableDepth', Ember.isNone(parentProjectId));\n\t\t\tpoly.set('includeChildren', false);\n\t\t\tpoly.set('members', []);\n\n\t\t\tif (!Ember.isNone(polyObject)) {\n\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t}\n\n\t\t\tvar hasTime = false;\n\t\t\tif (poly.get('totalNoChildrenSeconds') > 0 && (depth === 1 || poly.get('totalChildrenSeconds') > 0)) {\n\t\t\t\thasTime = true;\n\t\t\t\tEmber.setProperties(poly, {\n\t\t\t\t\tmembers: this.getMemberModels(poly, project.id, model, depth)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar hasSalary = false;\n\t\t\tif (Ember.isNone(parentProjectId) && depth === 1) {\n\t\t\t\thasSalary = true;\n\t\t\t\tpoly.set('forceOpen', true);\n\t\t\t\tpoly.set('hideData', false);\n\t\t\t\tpoly.set('isTopLevel', true);\n\t\t\t\tthis.addSalaryMembers(poly, model);\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(poly.get('members')) && (hasTime || hasSalary)) {\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('totalRegularSeconds');\n\t\t\t\tovertimeSeconds += item.get('totalOvertimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('totalDoubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\t\t\t\testCostSalary += item.get('estCostSalary');\n\t\t\t\testCostHourly += item.get('estCostHourly');\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\t// filter by project id\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null, _lte: { created_on: start } };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\t\t\tvar payPeriodMemberProjectSecondsQuery = {};\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(payPeriodMemberProjectSecondsQuery, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { member_id: id });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: id });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: id });\n\t\t\t\t\tEmber.setProperties(payPeriodMemberProjectSecondsQuery, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).joinAll('wage-history', 'member', 'id', { deleted_on: null }).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').outerJoin('member', 'pay-period-member-project-seconds', 'member_id', payPeriodMemberProjectSecondsQuery, 'timeMembers').joinAll('wage-history', 'timeMembers', 'id', { deleted_on: null }).fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/custom-wage-date/utils', ['exports', '@busy-web/utils', 'busy-app/utils/time'], function (exports, _utils, _time) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.getWageHistory = getWageHistory;\n\texports.setWageEffectiveEndDate = setWageEffectiveEndDate;\n\texports.isWageRelevant = isWageRelevant;\n\tfunction getWageHistory(member, start, end) {\n\t\tvar wageHistories = Ember.get(member, 'wageHistories');\n\n\t\tif (Ember.isNone(wageHistories)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tvar reportRange = { startTime: start, endTime: end };\n\t\tvar result = [];\n\n\t\twageHistories = wageHistories.sortBy('changeDate');\n\t\twageHistories.forEach(function (wage, wageIndex) {\n\t\t\tvar nextWage = wageHistories.objectAt(wageIndex + 1);\n\t\t\tvar prevWage = wageHistories.objectAt(wageIndex - 1);\n\n\t\t\tsetWageEffectiveEndDate(wage, nextWage);\n\n\t\t\tif (isWageRelevant(wage, prevWage, reportRange)) {\n\t\t\t\tresult.pushObject(wage);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction setWageEffectiveEndDate(wage, nextWage) {\n\t\tvar defaultEndDate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.Time.date().add(99, 'years').endOf('year');\n\n\t\tvar hasNextWage = !Ember.isNone(nextWage) && !Ember.isNone(Ember.get(nextWage, 'changeDate'));\n\n\t\t// if there's a next wage, use that as the basis for a wage end date\n\t\t// otherwise, use an arbitrary date far in the future\n\t\tvar endDate = hasNextWage ? _utils.Time.date(Ember.get(nextWage, 'changeDate')).subtract(1, 'day').endOf('day').unix() : defaultEndDate;\n\n\t\tEmber.setProperties(wage, { endDate: endDate });\n\n\t\treturn wage;\n\t}\n\n\tfunction isWageRelevant(wage, prevWage, reportRange) {\n\t\tvar wageRange = { startTime: Ember.get(wage, 'changeDate'), endTime: Ember.get(wage, 'endDate') };\n\n\t\tvar isInRange = (0, _time.isRangeInRange)(wageRange, reportRange);\n\t\tEmber.setProperties(wage, { isInRange: isInRange });\n\n\t\tvar isWageChanged = Ember.isNone(prevWage) || Ember.get(prevWage, 'wage') !== Ember.get(wage, 'wage') || Ember.get(prevWage, 'wageRate') !== Ember.get(wage, 'wageRate') || Ember.get(prevWage, 'overburden') !== Ember.get(wage, 'overburden') || Ember.get(prevWage, 'workWeek') !== Ember.get(wage, 'workWeek') || Ember.get(prevWage, 'effectiveRate') !== Ember.get(wage, 'effectiveRate') || Ember.get(prevWage, 'isInRange') !== Ember.get(wage, 'isInRange');\n\n\t\treturn isInRange && isWageChanged;\n\t}\n});","define('busy-app/collections/job-costing', ['exports', 'busy-app/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar newData = [];\n\t\t\tvar sortBy = Ember.String.camelize(this.get('sortByModel'));\n\t\t\tvar secondsModel = Ember.String.camelize(this.get('secondsModel'));\n\t\t\tvar costModel = Ember.String.camelize(this.get('costModel'));\n\t\t\tvar polyType = this.get('secondsModel').replace(/-seconds$/, '');\n\n\t\t\tdata[sortBy].forEach(function (item) {\n\t\t\t\tvar poly = _this.createPolymorph(polyType);\n\n\t\t\t\tvar seconds = data[secondsModel].filterBy(sortBy + 'Id', item.id);\n\t\t\t\tvar cost = data[costModel].filterBy(sortBy + 'Id', item.id);\n\n\t\t\t\tpoly.set(sortBy, item);\n\t\t\t\tpoly.set(secondsModel, seconds);\n\t\t\t\tpoly.set(costModel, cost);\n\n\t\t\t\tnewData.pushObject(poly);\n\t\t\t});\n\n\t\t\treturn newData;\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId, projectId, costCodeId, sortBy) {\n\t\t\tthis.set('sortByModel', sortBy || 'member');\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\tvar seconds = 'pay-period-member-seconds';\n\t\t\tvar cost = 'pay-period-member-cost';\n\t\t\tif (sortBy === 'project') {\n\t\t\t\tseconds = 'pay-period-member-project-seconds';\n\t\t\t\tcost = 'pay-period-member-project-cost';\n\t\t\t} else if (sortBy === 'cost-code') {\n\t\t\t\tseconds = 'pay-period-member-project-cost-code-seconds';\n\t\t\t\tcost = 'pay-period-member-project-cost-code-cost';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t\tif (sortBy !== 'cost-code') {\n\t\t\t\t\tseconds = 'pay-period-member-project-seconds';\n\t\t\t\t\tcost = 'pay-period-member-project-cost';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t\tseconds = 'pay-period-member-project-cost-code-seconds';\n\t\t\t\tcost = 'pay-period-member-project-cost-code-cost';\n\t\t\t}\n\n\t\t\tthis.set('secondsModel', seconds);\n\t\t\tthis.set('costModel', cost);\n\n\t\t\tvar getter = this.getter.findAll(seconds, query).findAll(cost, query).outerJoin('member', seconds, 'member_id');\n\n\t\t\tif (/project/.test(seconds)) {\n\t\t\t\tgetter.outerJoin('project', seconds, 'project_id');\n\t\t\t}\n\n\t\t\tif (/cost-code/.test(seconds)) {\n\t\t\t\tgetter.outerJoin('cost-code', seconds, 'cost_code_id');\n\t\t\t}\n\t\t\treturn getter.fetch();\n\t\t},\n\n\n\t\ttotalRegularSeconds: Ember.computed('model.@each.totalRegularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('totalRegularSeconds');\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('model.@each.totalOvertimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('totalOvertimeSeconds');\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('model.@each.totalDoubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('totalDoubletimeSeconds');\n\t\t\t});\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/collections/payroll-member-project', ['exports', 'busy-app/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tEmber.deprecate('Custom wage date feature not supported', !Ember.get(this, 'features.wageCustomDate'), {\n\t\t\t\tid: 'collections.payroll-member-project',\n\t\t\t\tuntil: '999.99.99'\n\t\t\t});\n\t\t},\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\n\t\t\t// get payPeriodType\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\t// add member array\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\t// add archivedMember array\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('member.fullName');\n\t\t},\n\t\tbuildModel: function buildModel(item, model, data, payPeriodType) {\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar wage = this.getWageHistory(item);\n\t\t\tvar isSalary = !Ember.isNone(wage) && (wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50);\n\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (hasSeconds > 0 || isSalary) {\n\t\t\t\tvar poly = this.createPolymorph('payroll-member');\n\t\t\t\tpoly.set('member', item);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('wage', wage);\n\t\t\t\tpoly.set('payPeriodType', payPeriodType);\n\t\t\t\tpoly.set('isTopLevel', true);\n\n\t\t\t\tif (!Ember.isEmpty(seconds)) {\n\t\t\t\t\tthis.addChildProjects(poly, null, model, 1);\n\t\t\t\t}\n\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\taddMemberModels: function addMemberModels(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar payPeriod = model.organizationPayPeriod.objectAt(0);\n\t\t\tvar data = [];\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\tvar seconds = polyObject.get('seconds').filterBy('memberId', item.id);\n\t\t\t\tvar cost = polyObject.get('cost').filterBy('memberId', item.id);\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\t\tvar memberSeconds = _this2.createPolymorph('pay-period-member');\n\t\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\t\titem.set('seconds', memberSeconds);\n\n\t\t\t\t\tvar poly = _this2.createPolymorph('payroll-member');\n\t\t\t\t\tpoly.set('member', item);\n\t\t\t\t\tpoly.set('project', polyObject.get('project'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\t\t\t\t\tpoly.set('wage', _this2.getWageHistory(item));\n\t\t\t\t\tpoly.set('payPeriodType', payPeriod.get('payPeriodType'));\n\t\t\t\t\tpoly.set('hidden', true);\n\t\t\t\t\tpoly.set('isOpen', true);\n\n\t\t\t\t\tif (!Ember.isNone(depth)) {\n\t\t\t\t\t\t_this2.addChildProjects(poly, parentProjectId, model, depth + 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpolyObject.set('members', data);\n\t\t},\n\t\taddChildProjects: function addChildProjects(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar data = [];\n\n\t\t\tvar projects = model.project.filterBy('depth', depth);\n\t\t\tif (!Ember.isNone(parentProjectId)) {\n\t\t\t\tprojects = projects.filterBy('parentProjectId', parentProjectId);\n\t\t\t}\n\n\t\t\tprojects.forEach(function (item) {\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\tvar poly = _this3.createPolymorph('payroll-project');\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tpoly.set('project', item);\n\t\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\n\t\t\t\t\t_this3.addMemberModels(poly, item.id, model, depth);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (data.length > 0) {\n\t\t\t\tthis.addUnassigned(polyObject, data, model, parentProjectId, depth);\n\t\t\t}\n\n\t\t\tpolyObject.set('projects', data.sortBy('project.sortWeight', 'project.title'));\n\t\t},\n\t\taddUnassigned: function addUnassigned(polyObject, data, model, parentProjectId, depth) {\n\t\t\tvar project = Ember.Object.create({\n\t\t\t\tid: null,\n\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tisUnassigned: true,\n\t\t\t\tdepth: depth,\n\t\t\t\tparentProjectId: parentProjectId,\n\t\t\t\tsortWeight: 2\n\t\t\t});\n\n\t\t\tvar seconds = void 0,\n\t\t\t    cost = void 0;\n\t\t\tif (Ember.isNone(parentProjectId)) {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', null);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', null);\n\t\t\t} else {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', parentProjectId);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', parentProjectId);\n\t\t\t}\n\n\t\t\tseconds = seconds.filterBy('memberId', polyObject.get('member.id'));\n\t\t\tseconds = seconds.filterBy('memberId', polyObject.get('member.id'));\n\n\t\t\tif (!Ember.isEmpty(seconds)) {\n\t\t\t\tvar poly = this.createPolymorph('payroll-project');\n\t\t\t\tpoly.set('project', project);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('includeChildren', false);\n\n\t\t\t\tif (poly.get('totalNoChildrenSeconds') > 0 && (depth === 1 || poly.get('totalChildrenSeconds') > 0)) {\n\t\t\t\t\tthis.addMemberModels(poly, project.id, model);\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('regularSeconds');\n\t\t\t\tovertimeSeconds += item.get('overtimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('doubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\n\t\t\t\tif (item.get('wage.wageRate') !== 10) {\n\t\t\t\t\testCostSalary += item.get('totalOverburdenCost');\n\t\t\t\t} else {\n\t\t\t\t\testCostHourly += item.get('totalOverburdenCost');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\t\tgetWageHistory: function getWageHistory(member) {\n\t\t\tvar _this4 = this;\n\n\t\t\t// sort wages\n\t\t\tvar _wages = member.get('wageHistories').filterBy('memberId', member.id).sortBy('changeDate');\n\n\t\t\tvar wage = _wages.objectAt(0);\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= _this4.get('start')) {\n\t\t\t\t\twage = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn wage;\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\t// filter by project id\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar memberGroupId = Ember.get(this, 'auth.member.memberGroupId');\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tvar authMemberId = Ember.get(this, 'auth.memberId');\n\t\t\t\t\tEmber.setProperties(query, { member_id: authMemberId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: authMemberId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: authMemberId });\n\t\t\t\t} else {\n\t\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'member', 'id', { deleted_on: null }).joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/payroll-member', ['exports', 'busy-app/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tEmber.deprecate('Custom wage date feature not supported', !Ember.get(this, 'features.wageCustomDate'), { id: 'collections.payroll-member', until: '999.99.99' });\n\t\t},\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\n\t\t\t// get payPeriodType\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\t// add member array\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\t// add archivedMember array\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this.buildModel(item, model, data, payPeriodType);\n\t\t\t});\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('member.fullName');\n\t\t},\n\t\tbuildModel: function buildModel(item, model, data, payPeriodType) {\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar wage = this.getWageHistory(item, model);\n\t\t\tvar isSalary = !Ember.isNone(wage) && (wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50);\n\t\t\tvar hasSeconds = seconds.mapBy('totalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t\tvar hasMultipleWage = this.hasMultipleWage(item);\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (hasSeconds > 0 || isSalary) {\n\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\tvar memberSeconds = this.createPolymorph('pay-period-member');\n\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\titem.set('seconds', memberSeconds);\n\n\t\t\t\tvar poly = this.createPolymorph('payroll-member');\n\t\t\t\tpoly.set('member', item);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('wage', wage);\n\t\t\t\tpoly.set('hasMultipleWage', hasMultipleWage);\n\t\t\t\tpoly.set('payPeriodType', payPeriodType);\n\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('regularSeconds');\n\t\t\t\tovertimeSeconds += item.get('overtimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('doubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\n\t\t\t\tif (item.get('wage.wageRate') !== 10) {\n\t\t\t\t\testCostSalary += item.get('totalOverburdenCost');\n\t\t\t\t} else {\n\t\t\t\t\testCostHourly += item.get('totalOverburdenCost');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\t\tgetWageHistory: function getWageHistory(member) {\n\t\t\tvar _this2 = this;\n\n\t\t\t// sort wages\n\t\t\tvar _wages = (member.get('wageHistories') || []).filterBy('memberId', member.id).sortBy('changeDate');\n\n\t\t\tvar wage = _wages.objectAt(0);\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= _this2.get('start')) {\n\t\t\t\t\twage = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn wage;\n\t\t},\n\t\thasMultipleWage: function hasMultipleWage(member) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar _wages = (member.get('wageHistories') || []).filterBy('memberId', member.id).sortBy('changeDate');\n\n\t\t\tvar wages = [];\n\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') >= _this3.get('start')) {\n\t\t\t\t\twages.pushObject(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (wages.length > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar memberGroupId = Ember.get(this, 'auth.member.memberGroupId');\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tvar authMemberId = Ember.get(this, 'auth.memberId');\n\t\t\t\t\tEmber.setProperties(query, { member_id: authMemberId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: authMemberId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: authMemberId });\n\t\t\t\t} else {\n\t\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'member', 'id', { deleted_on: null }).joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/payroll-project', ['exports', 'busy-app/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tEmber.deprecate('Custom wage date feature not supported', !Ember.get(this, 'features.wageCustomDate'), { id: 'collections.payroll-project', until: '999.99.99' });\n\t\t},\n\n\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param model {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\t\t\tmodel.timeMembers.forEach(function (item) {\n\t\t\t\tif (model.member.indexOf(item) === -1) {\n\t\t\t\t\tmodel.member.pushObject(item._internalModel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmodel.project.filterBy('depth', 1).forEach(function (item) {\n\t\t\t\tvar poly = _this.createPolymorph('payroll-project');\n\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id);\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id);\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tpoly.set('project', item);\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\t\t\t\t\tpoly.set('forceOpen', true);\n\t\t\t\t\tpoly.set('hideData', false);\n\t\t\t\t\tpoly.set('disableDepth', true);\n\t\t\t\t\tpoly.set('isTopLevel', true);\n\n\t\t\t\t\t_this.addMemberModels(poly, item.id, model, 1);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.addUnassigned(null, data, model, null, 1);\n\n\t\t\tthis.setAggregates(data);\n\n\t\t\treturn data.sortBy('project.sortWeight', 'project.title');\n\t\t},\n\t\taddMemberModels: function addMemberModels(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar payPeriod = model.organizationPayPeriod.objectAt(0);\n\t\t\tvar data = [];\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\tvar seconds = polyObject.get('seconds').filterBy('memberId', item.id);\n\t\t\t\tvar cost = polyObject.get('cost').filterBy('memberId', item.id);\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\t// each member needs a total seconds to reference for calculating saly employees.\n\t\t\t\t\tvar memberSeconds = _this2.createPolymorph('pay-period-member');\n\t\t\t\t\tmemberSeconds.set('seconds', model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id));\n\t\t\t\t\titem.set('seconds', memberSeconds);\n\n\t\t\t\t\tvar poly = _this2.createPolymorph('payroll-member');\n\t\t\t\t\tpoly.set('member', item);\n\t\t\t\t\tpoly.set('project', polyObject.get('project'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\t\t\t\t\tpoly.set('wage', _this2.getWageHistory(item));\n\t\t\t\t\tpoly.set('payPeriodType', payPeriod.get('payPeriodType'));\n\t\t\t\t\tpoly.set('nestedMember', true);\n\t\t\t\t\tpoly.set('hideData', true);\n\t\t\t\t\tpoly.set('isOpen', true);\n\t\t\t\t\tpoly.set('hidden', true);\n\n\t\t\t\t\tif (depth === 1) {\n\t\t\t\t\t\tpoly.set('isOpen', false);\n\t\t\t\t\t\tpoly.set('hidden', false);\n\t\t\t\t\t}\n\n\t\t\t\t\t_this2.addChildProjects(poly, parentProjectId, model, depth + 1);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpolyObject.set('members', data.sortBy('member.fullName'));\n\t\t},\n\t\taddSalaryMembers: function addSalaryMembers(polyObject, model) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar payPeriodType = model.organizationPayPeriod.objectAt(0).get('payPeriodType');\n\n\t\t\tmodel.member.forEach(function (item) {\n\t\t\t\t_this3._addSalaryMembers(item, polyObject, model, payPeriodType);\n\t\t\t});\n\n\t\t\tmodel.archivedMember.forEach(function (item) {\n\t\t\t\t_this3._addSalaryMembers(item, polyObject, model, payPeriodType);\n\t\t\t});\n\n\t\t\tpolyObject.set('members', polyObject.get('members').sortBy('member.fullName'));\n\t\t},\n\t\t_addSalaryMembers: function _addSalaryMembers(item, polyObject, model, payPeriodType) {\n\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('memberId', item.id);\n\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('memberId', item.id);\n\t\t\tvar wage = this.getWageHistory(item);\n\t\t\tvar isSalary = !Ember.isNone(wage) && (wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50);\n\n\t\t\t// add members with time clocked or members with salary that may not have any time clocked.\n\t\t\tif (Ember.isEmpty(seconds) && isSalary) {\n\t\t\t\tvar poly = this.createPolymorph('payroll-member');\n\t\t\t\tpoly.set('member', item);\n\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\tpoly.set('cost', cost);\n\t\t\t\tpoly.set('wage', this.getWageHistory(item));\n\t\t\t\tpoly.set('payPeriodType', payPeriodType);\n\t\t\t\tpoly.set('nestedMember', true);\n\n\t\t\t\tpolyObject.get('members').pushObject(poly);\n\t\t\t}\n\t\t},\n\t\taddChildProjects: function addChildProjects(polyObject, parentProjectId, model, depth) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar data = [];\n\t\t\tvar projects = model.project.filterBy('depth', depth).filterBy('parentProjectId', parentProjectId);\n\t\t\tprojects.forEach(function (item) {\n\t\t\t\tvar seconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar cost = model.payPeriodMemberProjectCost.filterBy('projectId', item.id).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tvar hasSeconds = seconds.mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\n\t\t\t\tif (hasSeconds) {\n\t\t\t\t\tvar poly = _this4.createPolymorph('payroll-project');\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tpoly.set('project', item);\n\t\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t\t\tpoly.set('seconds', seconds);\n\t\t\t\t\tpoly.set('cost', cost);\n\n\t\t\t\t\t_this4.addMemberModels(poly, item.id, model, depth);\n\n\t\t\t\t\tdata.pushObject(poly);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (data.length > 0) {\n\t\t\t\tthis.addUnassigned(polyObject, data, model, parentProjectId, depth);\n\t\t\t}\n\n\t\t\tpolyObject.set('projects', data.sortBy('project.sortWeight', 'project.title'));\n\t\t},\n\t\taddUnassigned: function addUnassigned(polyObject, data, model, parentProjectId, depth) {\n\t\t\tvar project = Ember.Object.create({\n\t\t\t\tid: null,\n\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tisUnassigned: true,\n\t\t\t\tdepth: depth,\n\t\t\t\tparentProjectId: parentProjectId,\n\t\t\t\tsortWeight: 2\n\t\t\t});\n\n\t\t\tvar seconds = void 0,\n\t\t\t    cost = void 0;\n\t\t\tif (Ember.isNone(parentProjectId)) {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', null);\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', null);\n\t\t\t} else {\n\t\t\t\tseconds = model.payPeriodMemberProjectSeconds.filterBy('projectId', parentProjectId).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t\tcost = model.payPeriodMemberProjectCost.filterBy('projectId', parentProjectId).filterBy('memberId', polyObject.get('member.id'));\n\t\t\t}\n\n\t\t\tvar poly = this.createPolymorph('payroll-project');\n\t\t\tpoly.set('project', project);\n\t\t\tpoly.set('seconds', seconds);\n\t\t\tpoly.set('cost', cost);\n\t\t\tpoly.set('disableDepth', Ember.isNone(parentProjectId));\n\t\t\tpoly.set('includeChildren', false);\n\t\t\tpoly.set('members', []);\n\n\t\t\tif (!Ember.isNone(polyObject)) {\n\t\t\t\tpoly.set('member', polyObject.get('member'));\n\t\t\t}\n\n\t\t\tvar hasTime = false;\n\t\t\tif (poly.get('totalNoChildrenSeconds') > 0 && (depth === 1 || poly.get('totalChildrenSeconds') > 0)) {\n\t\t\t\thasTime = true;\n\t\t\t\tthis.addMemberModels(poly, project.id, model, depth);\n\t\t\t}\n\n\t\t\tvar hasSalary = false;\n\t\t\tif (Ember.isNone(parentProjectId) && depth === 1) {\n\t\t\t\thasSalary = true;\n\t\t\t\tpoly.set('forceOpen', true);\n\t\t\t\tpoly.set('hideData', false);\n\t\t\t\tpoly.set('isTopLevel', true);\n\t\t\t\tthis.addSalaryMembers(poly, model);\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(poly.get('members')) && (hasTime || hasSalary)) {\n\t\t\t\tdata.pushObject(poly);\n\t\t\t}\n\t\t},\n\t\tsetAggregates: function setAggregates(data) {\n\t\t\tvar regularSeconds = 0;\n\t\t\tvar overtimeSeconds = 0;\n\t\t\tvar doubletimeSeconds = 0;\n\t\t\tvar totalSeconds = 0;\n\t\t\tvar estCostSalary = 0;\n\t\t\tvar estCostHourly = 0;\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tregularSeconds += item.get('totalRegularSeconds');\n\t\t\t\tovertimeSeconds += item.get('totalOvertimeSeconds');\n\t\t\t\tdoubletimeSeconds += item.get('totalDoubletimeSeconds');\n\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\t\t\t\testCostSalary += item.get('estCostSalary');\n\t\t\t\testCostHourly += item.get('estCostHourly');\n\t\t\t});\n\n\t\t\t// round the salary and hourly before adding the total\n\t\t\t// so the numbers add correctly in the interface.\n\t\t\testCostSalary = estCostSalary.toFixed(2);\n\t\t\testCostHourly = estCostHourly.toFixed(2);\n\n\t\t\t// to fixed creates a string so parseFloat befaore adding the values.\n\t\t\tvar total = parseFloat(estCostSalary) + parseFloat(estCostHourly);\n\n\t\t\tthis.set('regularSeconds', regularSeconds);\n\t\t\tthis.set('overtimeSeconds', overtimeSeconds);\n\t\t\tthis.set('doubletimeSeconds', doubletimeSeconds);\n\t\t\tthis.set('totalSeconds', totalSeconds);\n\t\t\tthis.set('estCostSalary', estCostSalary);\n\t\t\tthis.set('estCostHourly', estCostHourly);\n\t\t\tthis.set('totalCost', total);\n\t\t},\n\t\tgetWageHistory: function getWageHistory(member) {\n\t\t\tvar _this5 = this;\n\n\t\t\t// sort wages\n\t\t\tvar _wages = member.get('wageHistories').filterBy('memberId', member.id).sortBy('changeDate');\n\n\t\t\tvar wage = _wages.objectAt(0);\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= _this5.get('start')) {\n\t\t\t\t\twage = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn wage;\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(start, end, memberId, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end\n\t\t\t};\n\n\t\t\t// filter by member id\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\t// filter by project id\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tvar memberQuery = { archived_on: null, _lte: { created_on: start } };\n\t\t\tvar archivedMembersQuery = { _gte: { archived_on: start } };\n\t\t\tvar payPeriodMemberProjectSecondsQuery = {};\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(memberQuery, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(archivedMembersQuery, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(payPeriodMemberProjectSecondsQuery, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { member_id: id });\n\t\t\t\t\tEmber.setProperties(memberQuery, { id: id });\n\t\t\t\t\tEmber.setProperties(archivedMembersQuery, { id: id });\n\t\t\t\t\tEmber.setProperties(payPeriodMemberProjectSecondsQuery, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.getter.findAll('pay-period-member-project-seconds', query).findAll('pay-period-member-project-cost', query).findAll('organization-pay-period', { _lte: { start_date: start }, _desc: ['start_date'] }).findAll('member', memberQuery).joinAll('wage-history', 'member', 'id', { deleted_on: null }).findAll('member', archivedMembersQuery, 'archivedMember').joinAll('wage-history', 'archivedMember', 'id', { deleted_on: null }).outerJoin('project', 'pay-period-member-project-seconds', 'project_id').outerJoin('member', 'pay-period-member-project-seconds', 'member_id', payPeriodMemberProjectSecondsQuery, 'timeMembers').joinAll('wage-history', 'timeMembers', 'id', { deleted_on: null }).fetch();\n\t\t}\n\t});\n});","define('busy-app/collections/time-entry', ['exports', 'busy-app/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * Use this function to rebuild the data structure\n   * returned from the getter calls\n   *\n   * @public\n   * @method buildModels\n   * @param data {object} keyed model object\n   * @returns {array|object}\n   */\n\t\tbuildModels: function buildModels(data) {\n\t\t\t// Set up the data structure however it needs to be for this collection.\n\t\t\t// buildModels can return either an array of models or a single model\n\t\t\t// with nested model objects.\n\n\t\t\treturn data.timeEntry;\n\t\t},\n\n\n\t\t/**\n   * Collections may have a predefined model\n   * structure for reusability. This is not required\n   * so this function may be removed if not used.\n   *\n   * @public\n   * @method model\n   * @return {EmberPromise}\n   */\n\t\tmodel: function model(startTime, endTime, memberId) {\n\t\t\tvar params = {\n\t\t\t\tmember_id: memberId,\n\t\t\t\t_lte: { start_time: endTime },\n\t\t\t\t_gte: { end_time: startTime }\n\t\t\t};\n\n\t\t\treturn this.getter.query('time-entry', params).join('project', 'time-entry', 'project_id').join('cost-code', 'time-entry', 'cost_code_id').joinAll('time-entry-break', 'time-entry', 'id').fetch();\n\t\t}\n\t});\n});","define(\"busy-app/components/-lf-get-outlet-state\", [\"exports\", \"liquid-fire/components/-lf-get-outlet-state\"], function (exports, _lfGetOutletState) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lfGetOutletState.default;\n    }\n  });\n});","define('busy-app/components/-private-api/addon-factory', ['exports', 'ember-google-maps/components/-private-api/addon-factory'], function (exports, _addonFactory) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _addonFactory.default;\n    }\n  });\n});","define('busy-app/components/-private-api/detect-render', ['exports', 'ember-google-maps/components/-private-api/detect-render'], function (exports, _detectRender) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _detectRender.default;\n    }\n  });\n});","define('busy-app/components/add-edit-scheduling', ['exports', '@busy-web/utils', 'moment'], function (exports, _utils, _moment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\t// import Logger from 'busy-app/utils/logger';\n\n\t/***/\n\t/**\n  * @module Components\n  *\n  */\n\tvar SYMBOL_KEYCODES = [8, 13, 33, 46, 186, 187, 188, 189, 190, 191, 192, 219, 220, 221, 222];\n\n\t/**\n  * utils for setting up a date and ensuring it fits within the\n  * min and max date range\n  *\n  * @method setupInitialDate\n  * @param min {number} unix timestamp for min date\n  * @param max {number} unix timestamp for max date\n  * @param timestamp {number} unix timestamp\n  * @param defaultDate {number} unix timestamp used when time is undefined\n  * @param defaultTime {number} the hour in 24 hour format to set the timestamp to\n  * @return {number}\n  */\n\tfunction setupInitialDate(min, max, timestamp, defaultDate, defaultTime) {\n\t\t// set start time and check if it was provided\n\t\t// by the model\n\t\tvar time = timestamp;\n\t\tif (Ember.isNone(time)) {\n\t\t\t// no model start so use component start date\n\t\t\ttime = defaultDate;\n\n\t\t\t// make sure the date is within the bounds\n\t\t\tif (Ember.isNone(time) || time < min) {\n\t\t\t\ttime = min;\n\t\t\t} else if (time > max) {\n\t\t\t\ttime = max;\n\t\t\t}\n\n\t\t\t// set the hour default for the start time.\n\t\t\ttime = _utils.Time.date(time).startOf('day').add(defaultTime || 0, 'seconds').unix();\n\t\t}\n\t\treturn time;\n\t}\n\n\t/**\n  * `Components/AddEditScheduling`\n  *\n  * @class Edit\n  * @namespace Components.AddEditScheduling\n  * @extends Component\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-add-edit-scheduling'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t// componet public props\n\t\tisAdd: false,\n\t\tisBreak: false,\n\t\tisCopy: false,\n\n\t\treminder: null,\n\t\t__reminder: null,\n\n\t\tstartDate: null,\n\t\tendDate: null,\n\n\t\t// component private props\n\t\tstartTime: null,\n\t\tendTime: null,\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\tmultipleDays: false,\n\t\tinstructions: '',\n\t\tmembers: null,\n\t\tproject: null,\n\t\tcostCode: null,\n\t\tequipment: null,\n\n\t\tselectedEmployees: null,\n\t\t__originalEmployees: null,\n\t\t__addEmployees: null,\n\t\t__removeEmployees: null,\n\n\t\temployeeSelectorPermissions: null,\n\n\t\tnotifyEmployee: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.set('employeeSelectorPermissions', ['timeEvents']);\n\n\t\t\tthis.set('__originalEmployees', []);\n\t\t\tthis.set('__addEmployees', []);\n\t\t\tthis.set('__removeEmployees', []);\n\n\t\t\tthis.setupScheduleObject();\n\t\t},\n\n\n\t\theaderTitle: Ember.computed('isBreak', 'isAdd', 'isCopy', function () {\n\t\t\tvar type = (0, _utils.loc)('Work');\n\t\t\tif (this.get('isBreak')) {\n\t\t\t\ttype = (0, _utils.loc)('Break');\n\t\t\t}\n\n\t\t\tvar action = (0, _utils.loc)('Schedule');\n\t\t\tif (this.get('isCopy')) {\n\t\t\t\taction = (0, _utils.loc)('Copy');\n\t\t\t\ttype = (0, _utils.loc)('Item');\n\t\t\t} else if (!this.get('isAdd')) {\n\t\t\t\taction = (0, _utils.loc)('Edit');\n\t\t\t}\n\n\t\t\treturn action + ' ' + type;\n\t\t}),\n\n\t\ttimeRoundingInterval: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n\t\t\tvar defaultInterval = 1;\n\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\treturn parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n\t\t\t} else {\n\t\t\t\treturn defaultInterval;\n\t\t\t}\n\t\t}),\n\n\t\tcostCodesAutoOpen: false,\n\t\tprojectsAutoOpen: false,\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\t\tdisableCostCodeSelection: Ember.computed('project.id', 'isLinkedCostCodesEnabled', function () {\n\t\t\treturn Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'project.id'));\n\t\t}),\n\n\t\tsetupScheduleObject: function setupScheduleObject() {\n\t\t\tvar reminder = this.get('reminder');\n\t\t\tif (!Ember.isNone(reminder)) {\n\t\t\t\t// set is break to true if the edit/copy reminder is a break\n\t\t\t\tif (reminder.get('isBreak')) {\n\t\t\t\t\tthis.set('isBreak', true);\n\t\t\t\t}\n\n\t\t\t\t// get selected employees from original reminder\n\t\t\t\tthis.setSelectedEmployees(reminder.get('scheduleLinks'));\n\n\t\t\t\tif (this.get('isCopy')) {\n\t\t\t\t\treminder = this.copyScheduleReminder(reminder);\n\t\t\t\t}\n\n\t\t\t\t// get riminder props\n\n\t\t\t\tvar _reminder$getProperti = reminder.getProperties('instructions', 'project', 'costCode', 'equipment', 'scheduleLinks', 'startTime', 'endTime'),\n\t\t\t\t    instructions = _reminder$getProperti.instructions,\n\t\t\t\t    project = _reminder$getProperti.project,\n\t\t\t\t    costCode = _reminder$getProperti.costCode,\n\t\t\t\t    equipment = _reminder$getProperti.equipment,\n\t\t\t\t    scheduleLinks = _reminder$getProperti.scheduleLinks,\n\t\t\t\t    startTime = _reminder$getProperti.startTime,\n\t\t\t\t    endTime = _reminder$getProperti.endTime;\n\n\t\t\t\tif (!Ember.isEmpty(instructions)) {\n\t\t\t\t\tthis.__textHistoryOriginalValue = instructions;\n\t\t\t\t}\n\n\t\t\t\tthis.setupDates(startTime, endTime);\n\n\t\t\t\t// set common props\n\t\t\t\tthis.setProperties({ project: project, costCode: costCode, equipment: equipment, instructions: instructions, existingLinks: scheduleLinks });\n\t\t\t} else {\n\t\t\t\t(true && !(this.get('isAdd')) && Ember.assert(\"reminder is not defined. A scheduleReminder model is required for edit or copy operations in add-edit-schedule dialog\", this.get('isAdd')));\n\n\n\t\t\t\tthis.setupDates();\n\n\t\t\t\treminder = this.createScheduleReminder();\n\t\t\t}\n\n\t\t\tthis.set('__reminder', reminder);\n\t\t},\n\n\n\t\t/**\n   * Setup initial start and end times for the date selectors.\n   *\n   * if start and end are not found on a ScheduleReminder model\n   * then the default is to use the dates provided by the caller\n   * of this component.\n   *\n   * @method setupDates\n   * @param start {number} optional\n   * @param end {number} optional\n   * @return {void}\n   */\n\t\tsetupDates: function setupDates(start, end) {\n\t\t\t// min date is set for the start of tommorrow\n\t\t\tvar minDate = _utils.Time.date().startOf('day').unix();\n\n\t\t\t// max date is set for 3 years into the future\n\t\t\tvar maxDate = _utils.Time.date().add(1, 'years').endOf('day').unix();\n\n\t\t\t// get default start and end time\n\t\t\tvar defaultStartTime = this.get('auth.organization.defaultStartTime');\n\t\t\tvar defaultEndTime = this.get('auth.organization.defaultEndTime');\n\n\t\t\t// if break type then use 12 pm plus duration\n\t\t\tif (this.get('isBreak')) {\n\t\t\t\tvar duration = this.get('auth.organization.defaultBreakDuration');\n\n\t\t\t\tif (Ember.isNone(duration) || isNaN(duration)) {\n\t\t\t\t\t// default break is 1 hour or 3600 seconds\n\t\t\t\t\tduration = _moment.default.duration('01:00:00').asSeconds();\n\t\t\t\t}\n\t\t\t\tdefaultStartTime = _moment.default.duration('12:00:00').asSeconds();\n\t\t\t\tdefaultEndTime = defaultStartTime + duration;\n\t\t\t}\n\n\t\t\t// date provided to component as the start and end dates\n\t\t\tvar defaultStartDate = this.get('startDate');\n\t\t\tvar defaultEndDate = this.get('endDate') || defaultStartDate;\n\n\t\t\t// calls setupInitialDate to create a start date\n\t\t\t// from the correct source\n\t\t\tvar startTime = setupInitialDate(minDate, maxDate, start, defaultStartDate, defaultStartTime);\n\n\t\t\t// calls setupInitialDate to create a end date\n\t\t\t// from the correct source\n\t\t\tvar endTime = setupInitialDate(minDate, maxDate, end, defaultEndDate, defaultEndTime);\n\n\t\t\t// set init props\n\t\t\tthis.setProperties({ minDate: minDate, maxDate: maxDate, startDate: startTime, endDate: endTime, startTime: startTime, endTime: endTime });\n\t\t},\n\n\n\t\t/**\n   * Create a new ScheduleReminder Model\n   *\n   * @method createScheduleReminder\n   * @param props {object}\n   * @return {ScheduleReminder}\n   */\n\t\tcreateScheduleReminder: function createScheduleReminder() {\n\t\t\tvar props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\t// set required properties\n\t\t\tvar requiredProps = {\n\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\torganizationId: this.get('auth.organization.id'),\n\t\t\t\tmemberId: this.get('auth.member.id')\n\t\t\t};\n\n\t\t\t// set default properties\n\t\t\tvar defaultProps = {\n\t\t\t\ttype: this.get('isBreak') ? 'break' : 'work'\n\t\t\t};\n\n\t\t\t// craete ScheduleReminder Model\n\t\t\t// defaultProps will be overridden by props\n\t\t\t// props will be overridden by requiredProps\n\t\t\treturn this.get('store').createRecord('schedule-reminder', Object.assign(defaultProps, props, requiredProps));\n\t\t},\n\n\n\t\t/**\n   * Creates a copy of a schedule-reminder model\n   *\n   * @method copyScheduleReminder\n   * @param reminder {ScheduleReminder}\n   * @param props {object}\n   * @return {ScheduleReminder}\n   */\n\t\tcopyScheduleReminder: function copyScheduleReminder(reminder) {\n\t\t\tvar props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\t(true && !(!Ember.isNone(reminder)) && Ember.assert(\"`reminder` was not defined. scheduleReminder Model is required for copyScheduleReminder\", !Ember.isNone(reminder)));\n\n\n\t\t\tvar json = reminder.toJSON();\n\t\t\treturn this.createScheduleReminder(Object.assign(json, props));\n\t\t},\n\n\n\t\t/**\n   * create an array of selected members from an array\n   * of schedule-reminder-links\n   *\n   * @method setSelectedEmployees\n   * @param links {ScheduleReminderLink}\n   * @return {Member[]}\n   */\n\t\tsetSelectedEmployees: function setSelectedEmployees(links) {\n\t\t\tvar _this = this;\n\n\t\t\tvar members = Ember.RSVP.all(links.map(function (l) {\n\t\t\t\treturn Ember.RSVP.resolve(l.get('member'));\n\t\t\t}));\n\n\t\t\treturn members.then(function (m) {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\tvar emp = m.slice(0).sortBy('fistName', 'lastName');\n\t\t\t\t\t_this.set('selectedEmployees', emp);\n\t\t\t\t\t_this.set('__originalEmployees', emp.slice(0));\n\t\t\t\t\t_this.set('__addEmployees', []);\n\t\t\t\t\t_this.set('__removeEmployees', []);\n\t\t\t\t}\n\t\t\t\treturn m;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Generates an array of reminder models from the startDate to the endDate,\n   * creating an model for each day.\n   *\n   * @method generateMultiple\n   * @param reminder {ScheduleReminder}\n   * @return {ScheduleReminder[]}\n   */\n\t\tgenerateMultiple: function generateMultiple(reminder) {\n\t\t\t// start and end days\n\t\t\tvar _getProperties = this.getProperties('startDate', 'endDate'),\n\t\t\t    startDate = _getProperties.startDate,\n\t\t\t    endDate = _getProperties.endDate;\n\n\t\t\t// method for adding a day to the timestamp\n\n\n\t\t\tvar addADay = function addADay(timestamp) {\n\t\t\t\treturn _utils.Time.date(timestamp).add(1, 'days').unix();\n\t\t\t};\n\n\t\t\t// start the currentDate as the startTime plus one day because\n\t\t\t// the first model is already inserted into the array\n\t\t\tvar currentDate = addADay(startDate);\n\n\t\t\t// model array\n\t\t\tvar models = [reminder];\n\n\t\t\t// create a copy of the reminder for each day\n\t\t\twhile (currentDate <= endDate) {\n\t\t\t\t// get start and end date for this reminder day\n\t\t\t\tvar _generateTime = this.generateTime(currentDate),\n\t\t\t\t    startTime = _generateTime.startTime,\n\t\t\t\t    endTime = _generateTime.endTime;\n\n\t\t\t\t// create a copy of the reminder\n\n\n\t\t\t\tvar reminderCopy = this.copyScheduleReminder(reminder, { startTime: startTime, endTime: endTime });\n\n\t\t\t\t// add the model to the model array\n\t\t\t\tmodels.pushObject(reminderCopy);\n\n\t\t\t\t// move the currentDate ahead on day.\n\t\t\t\tcurrentDate = addADay(currentDate);\n\t\t\t}\n\n\t\t\t// return array of schedule-reminder models\n\t\t\treturn models;\n\t\t},\n\n\n\t\t/**\n   * generates the start and end times based on the startDate\n   * passed in. Date are the hours:minutes from the time selector and\n   * the year month day from the date selector\n   *\n   * @method generateTime\n   * @param date {number} Year-month-day timestamp\n   * @return {object(number, number)}\n   */\n\t\tgenerateTime: function generateTime(date) {\n\t\t\t(true && !(!Ember.isNone(date) && !isNaN(date) && typeof date === 'number') && Ember.assert(\"date is required to be a number\", !Ember.isNone(date) && !isNaN(date) && typeof date === 'number'));\n\n\t\t\t// creates a start and end time (based on the this.startTime and this.endTime)\n\t\t\t// for the the date that was provided.\n\t\t\t//\n\t\t\t// NOTE: **This example uses strings, but the actual method requires `timestamps` and the results are `timestamps` **\n\t\t\t// @example:\n\t\t\t//\t(startTime=\"9:00 AM\", endTime=\"5:00 PM\", date=\"09/01/2018\") => { startTime: \"09/01/2018 9:00 AM\", endTime: \"09/01/2018 5:00 PM\" };\n\t\t\t//\n\t\t\t//\t(startTime=\"10:00 PM\", endTime=\"4:00 AM\", date=\"12/01/2018\") => { startTime: \"12/01/2018 10:00 PM\", endTime: \"12/02/2018 4:00 AM\" };\n\t\t\t//\n\n\t\t\tvar _updateTimeInputDates = updateTimeInputDates(this.get('startTime'), this.get('endTime'), date),\n\t\t\t    startTime = _updateTimeInputDates.startTime,\n\t\t\t    endTime = _updateTimeInputDates.endTime;\n\n\t\t\treturn { startTime: startTime, endTime: endTime };\n\t\t},\n\n\n\t\t/**\n   * Saves a new schedule-reminder model or models\n   *\n   * @method saveSchedule\n   * @param startTime {number}\n   * @param endTime {number}\n   * @param multipleDays {boolean}\n   * @return {Promise<ScheduleReminder>}\n   */\n\t\tsaveSchedule: function saveSchedule(startTime, endTime) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar multipleDays = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\tvar reminder = this.get('__reminder');\n\t\t\tvar payload = this.createPayload();\n\n\t\t\treminder.setProperties({ startTime: startTime, endTime: endTime, payload: payload });\n\n\t\t\tvar models = [reminder];\n\t\t\tif (multipleDays) {\n\t\t\t\tmodels = this.generateMultiple(reminder);\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.all(models.map(function (model) {\n\t\t\t\tvar modelPromise = Ember.RSVP.resolve(model);\n\t\t\t\tif (model.get('isNew') || model.get('hasDirtyAttributes')) {\n\t\t\t\t\tmodelPromise = model.save();\n\t\t\t\t}\n\n\t\t\t\treturn modelPromise.then(function (savedModel) {\n\t\t\t\t\treturn _this2.saveLinks(savedModel);\n\t\t\t\t});\n\t\t\t}));\n\t\t},\n\n\n\t\t/**\n   * Create and save the schedule-reminder-links for\n   * a saved schedule-reminder\n   *\n   * @method saveLinks\n   * @param model {ScheduleReminder}\n   * @return {Promise<ScheduleReminderLink>}\n   */\n\t\tsaveLinks: function saveLinks(model) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar addMemberLinks = Ember.RSVP.resolve([]);\n\t\t\tvar removeMemberLinks = Ember.RSVP.resolve([]);\n\n\t\t\t// get selected members array\n\t\t\tvar members = this.get('selectedEmployees');\n\t\t\tif (this.get('isEdit')) {\n\t\t\t\tmembers = this.get('__addEmployees');\n\n\t\t\t\tvar removeMembers = this.get('__removeEmployees');\n\t\t\t\tif (!Ember.isEmpty(removeMembers)) {\n\t\t\t\t\tremoveMemberLinks = Ember.RSVP.all(removeMembers.map(function (member) {\n\t\t\t\t\t\tvar link = _this3.get('__reminder.scheduleLinks').findBy('memberId', member.id);\n\t\t\t\t\t\tif (link) {\n\t\t\t\t\t\t\tlink.set('deletedOn', _utils.Time.timestamp());\n\t\t\t\t\t\t\treturn link.save();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(members)) {\n\t\t\t\t// save all schedule-reminder-link models\n\t\t\t\taddMemberLinks = Ember.RSVP.all(members.map(function (member) {\n\t\t\t\t\treturn _this3.get('store').createRecord('schedule-reminder-link', {\n\t\t\t\t\t\tscheduleReminderId: model.id,\n\t\t\t\t\t\tmemberId: member.id\n\t\t\t\t\t}).save();\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({ addMemberLinks: addMemberLinks, removeMemberLinks: removeMemberLinks }).then(function () {\n\t\t\t\t// refresh the model links from the server\n\t\t\t\treturn _this3.get('store').findAll('schedule-reminder-link', { schedule_reminder_id: model.id }).then(function (links) {\n\t\t\t\t\t_this3.setSelectedEmployees(links);\n\t\t\t\t\tmodel.set('scheduleLinks', links);\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * creates a JSON string for the payload object\n   *\n   * @method createPayload\n   * @return {string}\n   */\n\t\tcreatePayload: function createPayload() {\n\t\t\treturn JSON.stringify({\n\t\t\t\tproject: this.get('project.id'),\n\t\t\t\tequipment: this.get('equipment.id'),\n\t\t\t\tinstructions: (this.get('instructions') || '').trim(),\n\t\t\t\tcost_code: this.get('costCode.id')\n\t\t\t});\n\t\t},\n\n\n\t\t__textAreaHistory: null,\n\t\t__textAreaFuture: null,\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\n\t\t\t// sets up a listener to auto adjust the height\n\t\t\t// of the text area when more height is needed.\n\t\t\tthis.autoAdjustTextArea();\n\t\t},\n\t\tautoAdjustTextArea: function autoAdjustTextArea() {\n\t\t\tvar el = this.$('.instructions-input');\n\t\t\tif (el.length) {\n\t\t\t\tel = el.get(0);\n\t\t\t\tvar minHeight = el.scrollHeight;\n\t\t\t\tel.addEventListener('input', function () {\n\t\t\t\t\tvar outerHeight = parseInt(window.getComputedStyle(el).height, 10);\n\t\t\t\t\tvar diff = outerHeight - el.clientHeight;\n\t\t\t\t\tvar scrollHeight = el.scrollHeight;\n\t\t\t\t\tvar height = Math.max(minHeight, scrollHeight + diff);\n\n\t\t\t\t\tel.style.height = 0;\n\t\t\t\t\tel.style.height = height + 'px';\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\taddEmployees: function addEmployees(items) {\n\t\t\t\t// items is the new selectedEmployees list\n\t\t\t\tthis.set('selectedEmployees', items);\n\n\t\t\t\t// originals is the list of members found from an edit or\n\t\t\t\t// copy models scheduled links.\n\t\t\t\tvar originals = this.get('__originalEmployees');\n\n\t\t\t\t// added is any members in the items list that is not in the originals list\n\t\t\t\tvar added = items.filter(function (m) {\n\t\t\t\t\treturn !originals.find(function (orig) {\n\t\t\t\t\t\treturn orig.id === m.id;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t// removed is any memebers in the originals list but not in the items list\n\t\t\t\tvar removed = originals.filter(function (m) {\n\t\t\t\t\treturn !items.find(function (it) {\n\t\t\t\t\t\treturn it.id === m.id;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t// update model lists\n\t\t\t\tthis.set('__addEmployees', added);\n\t\t\t\tthis.set('__removeEmployees', removed);\n\t\t\t},\n\t\t\tsaveScheduleAction: function saveScheduleAction() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar _getProperties2 = this.getProperties('startDate', 'endDate', 'minDate', 'multipleDays'),\n\t\t\t\t    startDate = _getProperties2.startDate,\n\t\t\t\t    endDate = _getProperties2.endDate,\n\t\t\t\t    minDate = _getProperties2.minDate,\n\t\t\t\t    multipleDays = _getProperties2.multipleDays;\n\n\t\t\t\t// generate start and end times\n\n\n\t\t\t\tvar _generateTime2 = this.generateTime(startDate),\n\t\t\t\t    startTime = _generateTime2.startTime,\n\t\t\t\t    endTime = _generateTime2.endTime;\n\n\t\t\t\tif (startTime < minDate) {\n\t\t\t\t\tif (!this.get('isEdit')) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Reminder must be scheduled in the future.\"));\n\t\t\t\t\t} else if (_utils.Time.date(startTime).format('MM-DD-YYYY') !== _utils.Time.date(this.get('__reminder.startTime')).format('MM-DD-YYYY') || _utils.Time.date(endTime).format('MM-DD-YYYY') !== _utils.Time.date(this.get('__reminder.endTime')).format('MM-DD-YYYY')) {\n\t\t\t\t\t\t// Reminders in the past can be edited, so long as the date is not edited\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Dates of historical reminders cannot be edited.\"));\n\t\t\t\t\t}\n\t\t\t\t} else if (startTime > endTime || multipleDays && startDate > endDate) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"The start time must be before the end time\"));\n\t\t\t\t} else if (Ember.isEmpty(this.get('selectedEmployees'))) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"At least one employee must be selected in order to save a schedule item.\"));\n\t\t\t\t}\n\n\t\t\t\treturn this.saveSchedule(startTime, endTime, multipleDays).then(function () {\n\t\t\t\t\treturn _this4.sendAction('afterSave');\n\t\t\t\t});\n\t\t\t},\n\t\t\tprojectSelected: function projectSelected(project) {\n\t\t\t\tif (Ember.isNone(project)) {\n\t\t\t\t\tthis.set('projectId', null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('projectId', project.get('id'));\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tEmber.set(this, 'costCode', null);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeSelected: function costCodeSelected(costCode) {\n\t\t\t\tif (Ember.isNone(costCode)) {\n\t\t\t\t\tthis.set('costCodeId', null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('costCodeId', costCode.get('id'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tequipmentSelected: function equipmentSelected(equipment) {\n\t\t\t\tif (Ember.isNone(equipment)) {\n\t\t\t\t\tthis.set('equipmentId', null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('equipmentId', equipment.get('id'));\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * adjust start and end time when startDate is changed\n    *\n    * @method dateChange\n    */\n\t\t\tdateChange: function dateChange(type) {\n\t\t\t\tif (type === 'start') {\n\t\t\t\t\tvar startDate = this.get('startDate');\n\n\t\t\t\t\tif (!this.get('multipleDays') || startDate > this.get('endDate')) {\n\t\t\t\t\t\t// update the date for endDate\n\t\t\t\t\t\tthis.set('endDate', adjustDate(this.get('endDate'), startDate));\n\t\t\t\t\t}\n\n\t\t\t\t\tvar _updateTimeInputDates2 = updateTimeInputDates(this.get('startTime'), this.get('endTime'), startDate),\n\t\t\t\t\t    startTime = _updateTimeInputDates2.startTime,\n\t\t\t\t\t    endTime = _updateTimeInputDates2.endTime;\n\n\t\t\t\t\tthis.set('startTime', startTime);\n\t\t\t\t\tthis.set('endTime', endTime);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * adjust start or end time when the opposite is changed\n    * if the date is now overlapping.\n    *\n    * @method timeChange\n    */\n\t\t\ttimeChange: function timeChange() {\n\t\t\t\tvar _updateTimeInputDates3 = updateTimeInputDates(this.get('startTime'), this.get('endTime'), this.get('startDate')),\n\t\t\t\t    startTime = _updateTimeInputDates3.startTime,\n\t\t\t\t    endTime = _updateTimeInputDates3.endTime;\n\n\t\t\t\tthis.set('startTime', startTime);\n\t\t\t\tthis.set('endTime', endTime);\n\t\t\t},\n\t\t\tinstructionsKeyEvent: function instructionsKeyEvent(value, event) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\t// get keycode\n\t\t\t\tvar keyCode = event.keyCode || event.which;\n\n\t\t\t\t// setup return event value\n\t\t\t\tevent.returnValue = true;\n\n\t\t\t\tif (keyCode === 9) {\n\t\t\t\t\t// handles tab key so tabs can be used in text area\n\t\t\t\t\tpreventDefault(event);\n\t\t\t\t\t// save end cursor position\n\t\t\t\t\tthis.__lastCursorPosition = event.target.selectionEnd;\n\n\t\t\t\t\t// get new value\n\t\t\t\t\tvar nValue = handleTabKey(value, event);\n\n\t\t\t\t\t// adjust cusor position for new chars or removed chars\n\t\t\t\t\tthis.__lastCursorPosition += nValue.length - value.length;\n\n\t\t\t\t\t// update input value\n\t\t\t\t\tthis.set('instructions', nValue);\n\n\t\t\t\t\t// update cursor after the input is uptdated\n\t\t\t\t\tEmber.run.next(function () {\n\t\t\t\t\t\t// reset cursor position\n\t\t\t\t\t\tevent.target.setSelectionRange(_this5.__lastCursorPosition, _this5.__lastCursorPosition);\n\t\t\t\t\t});\n\n\t\t\t\t\t// update history\n\t\t\t\t\tthis.__textAreaHistory = updateState(this.__textAreaHistory, value);\n\t\t\t\t} else if (keyCode === 90 && isModifierKeyActive(event)) {\n\t\t\t\t\t// handles undo with [ cmd/ctrl + z ]\n\t\t\t\t\tpreventDefault(event);\n\t\t\t\t\tif (!Ember.isEmpty(this.__textAreaHistory.pop())) {\n\t\t\t\t\t\tvar lastValue = this.__textAreaHistory.pop();\n\t\t\t\t\t\tif (!Ember.isEmpty(lastValue)) {\n\t\t\t\t\t\t\tthis.set('instructions', lastValue);\n\t\t\t\t\t\t\tthis.__textAreaHistory = updateState(this.__textAreaHistory, lastValue);\n\t\t\t\t\t\t\tthis.__textAreaFuture = updateState(this.__textAreaFuture, value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.set('instructions', this.__textHistoryOriginalValue || '');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (keyCode === 82 && isModifierKeyActive(event)) {\n\t\t\t\t\t// handles redo with [ cmd/ctrl + r ]\n\t\t\t\t\tpreventDefault(event);\n\t\t\t\t\tvar _lastValue = this.__textAreaFuture.pop();\n\t\t\t\t\tif (!Ember.isEmpty(_lastValue)) {\n\t\t\t\t\t\tthis.set('instructions', _lastValue);\n\t\t\t\t\t\tthis.__textAreaHistory = updateState(this.__textAreaHistory, _lastValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn event.returnValue;\n\t\t\t},\n\t\t\tinstructionsKeyUpEvent: function instructionsKeyUpEvent(value, event) {\n\t\t\t\t// get event key code\n\t\t\t\tvar keyCode = event.keyCode || event.which;\n\n\t\t\t\t// check is number, numPad, letter, or symbol\n\t\t\t\tvar isNumber = keyCode >= 48 && keyCode <= 57;\n\t\t\t\tvar isNumPad = keyCode >= 96 && keyCode <= 111;\n\t\t\t\tvar isLetter = keyCode >= 65 && keyCode <= 90;\n\t\t\t\tvar isSymbol = SYMBOL_KEYCODES.indexOf(keyCode) !== -1;\n\n\t\t\t\t// if key is allowed then update state\n\t\t\t\tif (!isModifierKeyActive(event) && (isNumber || isNumPad || isLetter || isSymbol)) {\n\t\t\t\t\tthis.__textAreaHistory = updateState(this.__textAreaHistory, value);\n\t\t\t\t\tthis.__textAreaFuture = [];\n\t\t\t\t}\n\t\t\t},\n\t\t\tprojectMenuClosed: function projectMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tvar reminder = this.get('reminder');\n\n\t\t\t\tif (didSelectValue && Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this6, {\n\t\t\t\t\t\t\tcostCodesAutoOpen: Date.now()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else if (Ember.isNone(selectedItem) && openedBy === 'auto' && !Ember.isNone(reminder)) {\n\t\t\t\t\t// Logger.info(this, 'projectMenuClosed', 'revert to initial');\n\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this6, {\n\t\t\t\t\t\t\tproject: Ember.get(reminder, 'project'), // retrieve initial value\n\t\t\t\t\t\t\tcostCode: Ember.get(reminder, 'costCode') // retrieve initial value\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this7 = this;\n\n\t\t\t\t// Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n\t\t\t\t// if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this7, {\n\t\t\t\t\t\t\tcostCode: null,\n\t\t\t\t\t\t\tprojectsAutoOpen: Date.now()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n\tvar handleTabKey = function handleTabKey(value, event) {\n\t\tvar selectionStart = event.target.selectionStart;\n\t\tvar selectionEnd = event.target.selectionEnd;\n\n\t\tvar selected = value.slice(selectionStart, selectionEnd);\n\t\tvar preSelected = value.slice(0, selectionStart);\n\t\tvar postSelected = value.slice(selectionEnd);\n\n\t\tif (/^\\n/.test(selected)) {\n\t\t\tvar preSelectStart = preSelected.lastIndexOf('\\n');\n\t\t\tif (preSelectStart !== -1) {\n\t\t\t\tselected = value.slice(preSelectStart, selectionEnd);\n\t\t\t\tpreSelected = value.slice(0, preSelectStart);\n\t\t\t}\n\t\t}\n\n\t\tif (value[selectionEnd - 1] === \"\\n\") {\n\t\t\tvar postSelectEnd = postSelected.indexOf('\\n');\n\t\t\tif (postSelectEnd !== -1) {\n\t\t\t\tselected = value.slice(selectionStart, selectionEnd + postSelectEnd);\n\t\t\t\tpostSelected = value.slice(selectionEnd + postSelectEnd);\n\t\t\t}\n\t\t}\n\n\t\tif (event.shiftKey) {\n\t\t\t// handle tab back\n\t\t\tif (selected.length) {\n\t\t\t\tselected = selected.split('\\n').map(function (s) {\n\t\t\t\t\treturn s.replace(/\\t/, '');\n\t\t\t\t}).join('\\n');\n\t\t\t} else {\n\t\t\t\tpreSelected = preSelected.replace(/\\t$/, '');\n\t\t\t}\n\t\t} else {\n\t\t\t// handle tab forward\n\t\t\tif (selected.length) {\n\t\t\t\tselected = selected.split('\\n').map(function (s) {\n\t\t\t\t\treturn '\\t' + s;\n\t\t\t\t}).join('\\n');\n\t\t\t} else {\n\t\t\t\tselected = '\\t';\n\t\t\t}\n\t\t}\n\n\t\treturn preSelected + selected + postSelected;\n\t};\n\n\tvar adjustDate = function adjustDate(date, toDate) {\n\t\tvar _time = _utils.Time.date(toDate);\n\n\t\t// adjust the year month and day or time inputs\n\t\t// to match the startDate input\n\t\treturn _utils.Time.date(date).set({\n\t\t\tyear: _time.year(),\n\t\t\tmonth: _time.month(),\n\t\t\tdate: _time.date()\n\t\t}).unix();\n\t};\n\n\tvar updateTimeInputDates = function updateTimeInputDates(start, end, date) {\n\t\tvar startTime = adjustDate(start, date);\n\t\tvar endTime = adjustDate(end, date);\n\t\tif (endTime < startTime) {\n\t\t\tendTime = _utils.Time.date(endTime).add(1, 'days').unix();\n\t\t}\n\t\treturn { startTime: startTime, endTime: endTime };\n\t};\n\n\tvar isModifierKeyActive = function isModifierKeyActive(event) {\n\t\tvar keyboard = getKeyboardStyle();\n\t\tif (keyboard === 'MAC' && event.metaKey) {\n\t\t\treturn true;\n\t\t} else if (keyboard === 'PC' && event.ctrlKey) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar getKeyboardStyle = function getKeyboardStyle() {\n\t\tif (/Macintosh/.test(window.navigator.userAgent)) {\n\t\t\treturn 'MAC';\n\t\t} else {\n\t\t\treturn 'PC';\n\t\t}\n\t};\n\n\tvar preventDefault = function preventDefault(event) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t\tevent.returnValue = false;\n\t};\n\n\tvar updateState = function updateState(prevState, value) {\n\t\tvar state = (prevState || []).slice(-49);\n\t\tstate.push(value);\n\t\treturn state;\n\t};\n});","define('busy-app/components/bc-checkbox-input', ['exports', '@busy-web/components/components/bc-checkbox-input'], function (exports, _bcCheckboxInput) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcCheckboxInput.default;\n    }\n  });\n});","define('busy-app/components/bc-checkbox', ['exports', '@busy-web/components/components/bc-checkbox'], function (exports, _bcCheckbox) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcCheckbox.default;\n    }\n  });\n});","define('busy-app/components/bc-input', ['exports', '@busy-web/components/components/bc-input'], function (exports, _bcInput) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcInput.default;\n    }\n  });\n});","define('busy-app/components/bc-list', ['exports', '@busy-web/components/components/bc-list'], function (exports, _bcList) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcList.default;\n    }\n  });\n});","define('busy-app/components/bc-loading', ['exports', '@busy-web/components/components/bc-loading'], function (exports, _bcLoading) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcLoading.default;\n    }\n  });\n});","define('busy-app/components/bc-radio-button', ['exports', '@busy-web/components/components/bc-radio-button'], function (exports, _bcRadioButton) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcRadioButton.default;\n    }\n  });\n});","define('busy-app/components/bc-section-half', ['exports', '@busy-web/components/components/bc-section-half'], function (exports, _bcSectionHalf) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcSectionHalf.default;\n    }\n  });\n});","define('busy-app/components/bc-select-menu', ['exports', '@busy-web/components/components/bc-select-menu'], function (exports, _bcSelectMenu) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcSelectMenu.default;\n    }\n  });\n});","define('busy-app/components/bc-select', ['exports', '@busy-web/components/components/bc-select'], function (exports, _bcSelect) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcSelect.default;\n    }\n  });\n});","define('busy-app/components/bc-sortable-list', ['exports', '@busy-web/components/components/bc-sortable-list'], function (exports, _bcSortableList) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcSortableList.default;\n    }\n  });\n});","define('busy-app/components/bc-tab', ['exports', '@busy-web/components/components/bc-tab'], function (exports, _bcTab) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcTab.default;\n    }\n  });\n});","define('busy-app/components/bc-tabs', ['exports', '@busy-web/components/components/bc-tabs'], function (exports, _bcTabs) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcTabs.default;\n    }\n  });\n});","define('busy-app/components/bc-title', ['exports', '@busy-web/components/components/bc-title'], function (exports, _bcTitle) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcTitle.default;\n    }\n  });\n});","define('busy-app/components/bc-validate-password', ['exports', '@busy-web/components/components/bc-validate-password'], function (exports, _bcValidatePassword) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcValidatePassword.default;\n    }\n  });\n});","define('busy-app/components/bc-validate', ['exports', '@busy-web/components/components/bc-validate'], function (exports, _bcValidate) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _bcValidate.default;\n    }\n  });\n});","define('busy-app/components/busy-action-bar', ['exports', '@busy-web/utils/loc', 'busy-app/utils/logger'], function (exports, _loc, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\t\tinterop: Ember.inject.service('interop'),\n\n\t\tclassNames: [''],\n\t\tclassNameBindings: ['features.flexActionBar:busy-action-bar-flex:busy-action-bar', 'isFlipped:flip', 'hasAddAction:add', 'filterMenu:filter', 'groupMenu:group', 'selectMenu:select', 'isSub:no-padding'],\n\n\t\tselectMenu: null,\n\t\tfilterMenu: null,\n\n\t\tisFlipped: false,\n\t\thasAddAction: false,\n\n\t\tgroupMenu: null,\n\t\tgroupEditPermission: false,\n\t\tselectedGroup: null,\n\n\t\tsearch: '',\n\t\tplaceholder: (0, _loc.default)('Search'),\n\n\t\tinteropTarget: null, // url script for interop to target, for example, '/manage/employees'\n\t\tinteropLabel: (0, _loc.default)('Management Tool'),\n\n\t\t__groupMenuTop: null,\n\t\t__groupMenuBottom: null,\n\t\t__filterMenu: null,\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\t\t\tthis.setupGroups();\n\t\t\tthis.setupFilter();\n\t\t},\n\t\tgetDefaultGroups: function getDefaultGroups() {\n\t\t\treturn [Ember.Object.create({\n\t\t\t\tid: null,\n\t\t\t\tgroupName: (0, _loc.default)('All ') + Ember.get(this, 'defaultTitle'),\n\t\t\t\tdefaultGroup: true,\n\t\t\t\t_selected: false\n\t\t\t}), Ember.Object.create({ id: 'ungrouped', groupName: (0, _loc.default)('Ungrouped'), ungroupedGroup: true, _selected: false }), Ember.Object.create({ id: 'archived', groupName: (0, _loc.default)('Archived'), archivedGroup: true, _selected: false })];\n\t\t},\n\t\tsetupGroups: function setupGroups() {\n\t\t\tvar group = Ember.get(this, 'groupMenu');\n\t\t\tif (!Ember.isNone(group)) {\n\t\t\t\tif (group.toArray) {\n\t\t\t\t\tgroup = group.toArray();\n\t\t\t\t}\n\n\t\t\t\tvar selectedGroup = Ember.get(this, 'selectedGroup');\n\t\t\t\tvar defaultGroups = this.getDefaultGroups();\n\n\t\t\t\tvar item = void 0;\n\t\t\t\tif (!Ember.isNone(selectedGroup)) {\n\t\t\t\t\titem = defaultGroups.findBy('id', selectedGroup);\n\t\t\t\t\tif (Ember.isNone(item)) {\n\t\t\t\t\t\titem = group.findBy('id', selectedGroup);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// apply filter a filter is currently selected\n\t\t\t\tthis.applyFilter(item, 'group');\n\n\t\t\t\t// set top group menu\n\t\t\t\tEmber.set(this, '__groupMenuTop', defaultGroups);\n\n\t\t\t\t// set bottom group menu\n\t\t\t\tEmber.set(this, '__groupMenuBottom', group);\n\t\t\t}\n\t\t},\n\t\tsetupFilter: function setupFilter() {\n\t\t\tvar filterMenu = Ember.get(this, 'filterMenu');\n\t\t\tif (!Ember.isNone(filterMenu)) {\n\t\t\t\tif (filterMenu.toArray) {\n\t\t\t\t\tfilterMenu = filterMenu.toArray();\n\n\t\t\t\t\tvar selected = filterMenu.findBy('_selected', true);\n\t\t\t\t\tthis.applyFilter(selected, 'filter');\n\n\t\t\t\t\tEmber.set(this, '__filterMenu', filterMenu);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tapplyFilter: function applyFilter(item, type) {\n\t\t\tvar filterName = Ember.get(item || {}, 'groupName') || Ember.get(item || {}, 'value') || null;\n\n\t\t\tEmber.set(this, 'filter', filterName);\n\t\t\tEmber.set(this, 'filterApplied', !Ember.isEmpty(filterName));\n\n\t\t\tif (type === 'group') {\n\t\t\t\tif (!Ember.isNone(item)) {\n\t\t\t\t\tEmber.set(item, '_selected', true);\n\t\t\t\t\tEmber.set(this, 'isGroup', true);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'isGroup', false);\n\t\t\t\t}\n\t\t\t} else if (type === 'filter') {\n\t\t\t\tEmber.set(this, 'isFilter', !Ember.isNone(item));\n\t\t\t}\n\t\t},\n\t\topenInterop: function openInterop() {\n\t\t\tvar interop = Ember.get(this, 'interop');\n\t\t\tvar reactAppPath = Ember.get(this, 'interopTarget');\n\t\t\tconsole.log('openInterop -> reactAppPath', reactAppPath);\n\n\t\t\treturn interop.openReactApp(reactAppPath);\n\t\t},\n\n\n\t\t// hasFilter: observer('filterMenu', '__groupMenuTop', function() {\n\t\t//   if (!isNone(get(this, 'filterMenu')) || !isNone(get(this, '__groupMenuTop'))) {\n\t\t//     return true;\n\t\t//   }\n\t\t//   return false;\n\t\t// }),\n\n\t\tactions: {\n\t\t\tsubmit: function submit() {\n\t\t\t\tEmber.set(this, 'isFlipped', false);\n\t\t\t\tthis.sendAction('onSubmit');\n\t\t\t},\n\t\t\tcancel: function cancel() {\n\t\t\t\tEmber.set(this, 'isFlipped', false);\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t},\n\t\t\taddAction: function addAction() {\n\t\t\t\tthis.sendAction('onAdd');\n\t\t\t},\n\t\t\tselectAction: function selectAction(item) {\n\t\t\t\tEmber.set(this, 'isFlipped', true);\n\t\t\t\tEmber.set(item, '_selected', false);\n\n\t\t\t\tthis.sendAction('onSelect', item);\n\t\t\t},\n\t\t\tsearchAction: function searchAction(keyword) {\n\t\t\t\tthis.sendAction('onSearch', keyword);\n\t\t\t},\n\t\t\tfilterAction: function filterAction(item) {\n\t\t\t\tthis.applyFilter(item, 'filter');\n\n\t\t\t\tif (Ember.get(item, 'value') === 'Archived') {\n\t\t\t\t\tEmber.set(this, 'archived', true);\n\t\t\t\t}\n\n\t\t\t\tthis.sendAction('onFilter', item);\n\t\t\t},\n\t\t\tclearFilter: function clearFilter() {\n\t\t\t\t//clear filter type\n\t\t\t\tif (Ember.get(this, 'isFilter') === true) {\n\t\t\t\t\t// reset filter\n\t\t\t\t\tthis.applyFilter(null, 'filter');\n\n\t\t\t\t\tvar defaultFilter = Ember.Object.create({ key: 'active' });\n\t\t\t\t\tthis.sendAction('onFilter', defaultFilter);\n\t\t\t\t}\n\n\t\t\t\t// clear group filter type\n\t\t\t\tif (Ember.get(this, 'isGroup') === true) {\n\t\t\t\t\tEmber.get(this, 'groupMenu').forEach(function (item) {\n\t\t\t\t\t\treturn Ember.set(item, '_selected', false);\n\t\t\t\t\t});\n\n\t\t\t\t\t// reset filter\n\t\t\t\t\tthis.applyFilter(null, 'group');\n\n\t\t\t\t\tvar defaultGroup = Ember.get(this, '__groupMenuTop').findBy('defaultGroup', true);\n\t\t\t\t\tthis.sendAction('onSelectGroup', defaultGroup, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\titemSelectAction: function itemSelectAction(item) {\n\t\t\t\tthis.applyFilter(item, 'group');\n\t\t\t\tthis.sendAction('onSelectGroup', item, Ember.get(item, 'defaultGroup') === true);\n\t\t\t},\n\t\t\taddNewGroup: function addNewGroup(value) {\n\t\t\t\tvalue = value.trim();\n\t\t\t\tif (!Ember.isEmpty(value)) {\n\t\t\t\t\tthis.sendAction('addGroup', value);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDeleteGroup: function onDeleteGroup(value) {\n\t\t\t\t_logger.default.info(this, 'onDeleteGroup', value);\n\t\t\t\tthis.sendAction('onDeleteGroup', value);\n\t\t\t},\n\t\t\tinterop: function interop() {\n\t\t\t\t_logger.default.info(this, 'interop');\n\t\t\t\tthis.openInterop();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-button-bar', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\n\t\tclassNames: ['busy-button-bar'],\n\n\t\tsaveCloseText: (0, _utils.loc)('Save and Close'),\n\t\tsaveText: (0, _utils.loc)('Save'),\n\t\tdeleteText: (0, _utils.loc)('Delete'),\n\t\tcancelText: (0, _utils.loc)('Cancel'),\n\t\tcloseText: (0, _utils.loc)('Close'),\n\t\tsavingMessage: (0, _utils.loc)('Saving'),\n\t\tsavedMessage: (0, _utils.loc)('Successfully Saved'),\n\t\terrorMessage: (0, _utils.loc)('An error occurred! Please try again later.'),\n\n\t\tshowSaveClose: false,\n\t\tshowSave: false,\n\t\tshowDelete: false,\n\t\tshowCancel: false,\n\t\tshowClose: false,\n\n\t\tisDisabled: false,\n\t\tcanClose: false,\n\n\t\ttargetParent: null,\n\n\t\tshowSaving: Ember.computed('showSaveClose', 'showSave', 'showDelete', function () {\n\t\t\treturn this.get('showSaveClose') || this.get('showSave') || this.get('showDelete');\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tif (!Ember.isNone(this.get('targetParent'))) {\n\t\t\t\tthis.set('targetParent.busySave', this);\n\t\t\t}\n\n\t\t\tif (Ember.isNone(this.get('busySave'))) {\n\t\t\t\tthis.set('busySave', {});\n\t\t\t}\n\n\t\t\tthis._super.apply(this, arguments);\n\t\t},\n\n\n\t\t/**\n   * Shows a saving message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showSavingMessage\n   * @param message {string} The save message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowSavingMessage: function showSavingMessage(message, timeout) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('isDisabled', true);\n\t\t\t}\n\n\t\t\treturn this.get('busySave').savingMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows an error message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showErrorMessage\n   * @param message {string} The error message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowErrorMessage: function showErrorMessage(message, timeout) {\n\t\t\tEmber.run.next(this, function () {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('isDisabled', false);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn this.get('busySave').errorMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows a saved message at the\n   * bottom of the dialog and fires the close dialog event.\n   *\n   * @public\n   * @method showSavedMessage\n   * @param message {string} The saved message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowSavedMessage: function showSavedMessage(message, timeout) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('isDisabled', false);\n\n\t\t\t\treturn this.get('busySave').showSavedMessage(message, timeout).then(function () {\n\t\t\t\t\tif (_this.get('canClose')) {\n\t\t\t\t\t\t_this.set('canClose', false);\n\t\t\t\t\t\t_this.sendAction('onClose');\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(true).then(function () {\n\t\t\t\t\t_this.sendAction('onClose');\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsaveCloseAction: function saveCloseAction() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.set('canClose', true);\n\t\t\t\t\tthis.sendAction('closeOnSave', this);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tif (!this.get('showSaveClose')) {\n\t\t\t\t\t\tthis.set('canClose', true);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction('onSave', this);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.set('canClose', true);\n\t\t\t\t\tthis.sendAction('onDelete', this);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.sendAction('onClose', this);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.sendAction('onCancel', this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-container', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar kNotificationTypes = ['warning', 'success', 'error', 'info'];\n\n\t/**\n  * `Component/BusyContainer`\n  *\n  * @class BusyContainer\n  * @namespace Components\n  * @extends Component\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-container'],\n\t\tclassNameBindings: ['fullWidth:full-width', 'fullNav:full-nav-bar', '_notificationName:notif'],\n\n\t\taccess: Ember.inject.service('access'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tfullNav: false,\n\t\tfullWidth: false,\n\t\thideMenu: false,\n\t\thasBackButton: false,\n\t\tisBeta: false,\n\n\t\tnotificationName: '',\n\t\tnotificationType: '',\n\t\tnotificationText: '',\n\t\tisDismissable: true,\n\t\tclickText: '',\n\n\t\t_notificationName: Ember.computed('notificationName', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn 'lockout-account';\n\t\t\t}\n\t\t\treturn this.get('notificationName');\n\t\t}),\n\n\t\t_notificationText: Ember.computed('notificationText', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn (0, _utils.loc)(\"Your account is locked. Employees can not log in until a new payment method is submitted. To avoid further interruption\");\n\t\t\t}\n\t\t\treturn this.get('notificationText');\n\t\t}),\n\n\t\t_clickText: Ember.computed('clickText', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn (0, _utils.loc)('please resolve this issue now.');\n\t\t\t}\n\t\t\treturn this.get('clickText');\n\t\t}),\n\n\t\t_isDismissable: Ember.computed('isDismissable', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this.get('isDismissable');\n\t\t}),\n\n\t\t_notificationType: Ember.computed('notificationType', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn 'error';\n\t\t\t} else if (!Ember.isEmpty(this.get('notificationName'))) {\n\t\t\t\t_utils.Assert.test(\"notificationType must be a string: `warning` `success` `error` `info`\", kNotificationTypes.indexOf(this.get('notificationType')) !== -1);\n\t\t\t\treturn this.get('notificationType');\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}),\n\n\t\t_onClick: Ember.computed('onClick', 'subscription.subscriptionStatus.isLockout', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isLockout')) {\n\t\t\t\treturn 'openSubscription';\n\t\t\t}\n\t\t\treturn this.get('onClick') ? 'notifClick' : undefined;\n\t\t}),\n\n\t\tactions: {\n\t\t\tnotifClick: function notifClick() {\n\t\t\t\tthis.sendAction('onClick');\n\t\t\t},\n\t\t\topenSubscription: function openSubscription() {\n\t\t\t\tif (this.get('access').hasPermissionFor('manageCompanySettings')) {\n\t\t\t\t\twindow.location = '/company-settings#tab-subscription';\n\t\t\t\t}\n\t\t\t},\n\t\t\tbackButton: function backButton() {\n\t\t\t\tif (!Ember.isNone(this.get('onBack'))) {\n\t\t\t\t\tthis.sendAction('onBack');\n\t\t\t\t} else {\n\t\t\t\t\twindow.history.back();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-date-range', ['exports', 'moment', '@busy-web/utils'], function (exports, _moment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-date-range'],\n\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tstartDate: null,\n\t\tendDate: null,\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\tshowButton: true,\n\n\t\tformat: Ember.computed(function () {\n\t\t\treturn _utils.Locale.format(\"MMM Do, YYYY\", _moment.default.locale());\n\t\t}),\n\n\t\tshowPayPeriods: false,\n\t\tisPayPeriodSelector: false,\n\t\tdefaultPayPeriod: true,\n\n\t\ttitleBar: Ember.computed('defaultPayPeriod', function () {\n\t\t\tvar str = '<span class=\"toggle\">';\n\t\t\tif (this.get('defaultPayPeriod')) {\n\t\t\t\tstr += '<input class=\"toggle-custom-date\" type=\"checkbox\" checked=\"checked\"/><label>';\n\t\t\t} else {\n\t\t\t\tstr += '<input class=\"toggle-custom-date\" type=\"checkbox\" /><label>';\n\t\t\t}\n\n\t\t\tstr += (0, _utils.loc)('Use Pay Period Dates');\n\t\t\tstr += '</label></span>';\n\t\t\treturn str;\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (this.get('showPayPeriods') && this.get('defaultPayPeriod')) {\n\t\t\t\tthis.set('isPayPeriodSelector', true);\n\t\t\t} else {\n\t\t\t\tthis.set('isPayPeriodSelector', false);\n\t\t\t}\n\t\t},\n\t\tbeforeShowDay: function beforeShowDay(date) {\n\t\t\tvar startTime = _utils.Time.date(date.valueOf() / 1000).startOf('day').unix();\n\t\t\tvar endTime = _utils.Time.date(date.valueOf() / 1000).endOf('day').unix();\n\t\t\tvar args = [];\n\n\t\t\t// set isClickable\n\t\t\targs.push(true);\n\n\t\t\tif (this.get('showPayPeriods')) {\n\t\t\t\tvar period = this.get('payPeriods').getPayPeriod(startTime);\n\n\t\t\t\tvar classNames = 'pay-period';\n\t\t\t\tif (startTime === period.get('start')) {\n\t\t\t\t\tclassNames += ' start';\n\t\t\t\t}\n\n\t\t\t\tif (endTime === period.get('end')) {\n\t\t\t\t\tclassNames += ' end';\n\t\t\t\t}\n\n\t\t\t\targs.push(classNames);\n\t\t\t}\n\t\t\treturn args;\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tif (this.get('showPayPeriods')) {\n\t\t\t\tvar datePicker = this.$().find('.js-date-picker > input').data('dateRangePicker');\n\t\t\t\tvar el = datePicker.getDatePicker();\n\t\t\t\tvar $toggle = el.find('.toggle > input.toggle-custom-date');\n\n\t\t\t\t$toggle.bind('change.busy-date-range-toggle', function () {\n\t\t\t\t\t_this.set('isPayPeriodSelector', $toggle.is(':checked'));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tif (this.get('showPayPeriods')) {\n\t\t\t\tvar el = this.$().find('.js-date-picker > input').data('dateRangePicker').getDatePicker();\n\t\t\t\tel.find('.toggle > input.toggle-custom-date').unbind('change.busy-date-range-toggle');\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangeDate: function changeDate(time1, time2) {\n\t\t\t\tif (this.get('isPayPeriodSelector')) {\n\t\t\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(time1);\n\n\t\t\t\t\ttime1 = payPeriod.get('start');\n\t\t\t\t\ttime2 = payPeriod.get('end');\n\n\t\t\t\t\tvar datePicker = this.$().find('.js-date-picker > input').data('dateRangePicker');\n\t\t\t\t\tdatePicker.setDateRange(payPeriod.get('startDate').format(this.get('format')), payPeriod.get('endDate').format(this.get('format')));\n\t\t\t\t}\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tthis.set('startDate', time1);\n\t\t\t\t\tthis.set('endDate', time2);\n\t\t\t\t\tthis.sendAction('onChange', time1, time2);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-date-time', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-date-time'],\n\n\t\tdate: null,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\tformat: \"ddd. MMM Do h:mm A\",\n\n\t\tactions: {\n\t\t\tchangeDate: function changeDate(time1) {\n\t\t\t\tthis.sendAction('onChange', time1);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-dialog-footer', ['exports', 'busy-app/templates/components/busy-dialog-footer'], function (exports, _busyDialogFooter) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tlayout: _busyDialogFooter.default,\n\t\tclassNames: ['busy-dialog-footer'],\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.set('parentView.parentView.parentView.hasFooter', true);\n\t\t}\n\t});\n});","define('busy-app/components/busy-file-uploader', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/**\n  * File object property helper for file uploader\n  *\n  * @class FileObject\n  * @namespace Components.BusyFileUploader\n  * @extends EmberObject\n  */\n\tvar FileObject = Ember.Object.extend(Ember.Evented, {\n\t\t_debugKey: 'FileUploader.FileObject',\n\t\tfile: null,\n\t\tuploadPercent: 0,\n\n\t\t_percent: 0,\n\n\t\t/**\n   * ember property method\n   *\n   * returns the css for the upload percentage in the progress bar\n   *\n   * @public\n   * @method uploadPercent\n   * @returns {string}\n   */\n\t\tuploadProgressStyle: Ember.computed('uploadPercent', function () {\n\t\t\treturn Ember.String.htmlSafe('width:' + this.get('uploadPercent') + '%');\n\t\t}),\n\n\t\tinnerStyle: Ember.computed('uploadPercent', function () {\n\t\t\tif (this.get('_state') === 'inDOM') {\n\t\t\t\treturn Ember.String.htmlSafe('width:' + this.$('.progress').width() + 'px;');\n\t\t\t}\n\t\t\treturn Ember.String.htmlSafe('');\n\t\t}),\n\n\t\tuploadStart: function uploadStart() {\n\t\t\tthis.trigger('start');\n\t\t},\n\t\tuploadComplete: function uploadComplete() {\n\t\t\tthis.trigger('complete');\n\t\t},\n\t\tuploadProgress: function uploadProgress(e) {\n\t\t\te.percent = e.loaded / e.total * 100;\n\t\t\tthis.trigger('progress', e);\n\t\t\tthis.progress(e.percent);\n\t\t},\n\t\tprogress: function progress(percent) {\n\t\t\tif (percent !== undefined) {\n\t\t\t\tthis.set('_percent', percent);\n\t\t\t}\n\n\t\t\tif (this.get('uploadPercent') === 100) {\n\t\t\t\treturn;\n\t\t\t} else if (this.get('uploadPercent') <= this.get('_percent')) {\n\t\t\t\tthis.set('uploadPercent', this.get('uploadPercent') + 1);\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tthis.progress();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n  * `Component/BusyFileUploader`\n  *\n  * @class BusyFileUploader\n  * @namespace Components\n  * @extends Component\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-file-uploader'],\n\n\t\ttitle: (0, _utils.loc)('Choose File'),\n\t\tfileLabel: (0, _utils.loc)('File Name'),\n\t\tfileName: (0, _utils.loc)('Choose a file to upload.'),\n\t\terrorMessage: (0, _utils.loc)('There was an error. Please try again.'),\n\n\t\tfiles: null,\n\t\tfileUrl: null,\n\n\t\tmultiple: false,\n\n\t\trestrictedTypes: null,\n\n\t\t/**\n   * set this to false if the view doesn't show a preview\n   *\n   * @property\n   * @type bool\n   */\n\t\tshowPreview: true,\n\n\t\t/**\n   * set this to false if the view doesn't show the progress\n   *\n   * @property\n   * @type bool\n   */\n\t\tshowProgress: true,\n\n\t\t/**\n   * gets set by the uplader to true once the\n   * preview image is ready to be shown\n   *\n   * @property\n   * @type bool\n   */\n\t\tisPreviewReady: false,\n\n\t\tisSaving: false,\n\n\t\t/**\n   * the percent uploaded out of 100\n   *\n   * @property\n   * @type float\n   */\n\t\tuploadPercent: 0,\n\n\t\t_percent: 0,\n\n\t\t/**\n   * the css for the upload percentage in the progress bar\n   *\n   * @private\n   * @property uploadProgress\n   * @type string\n   */\n\t\tuploadProgress: Ember.computed('uploadPercent', function () {\n\t\t\treturn Ember.String.htmlSafe('width:' + this.get('uploadPercent') + '%;');\n\t\t}),\n\n\t\t/**\n   * the css for the inner upload percent progress bar.\n   *\n   * @private\n   * @property innerStyle\n   * @type string\n   */\n\t\tinnerStyle: Ember.computed('uploadPercent', function () {\n\t\t\tif (this.get('_state') === 'inDOM') {\n\t\t\t\treturn Ember.String.htmlSafe('width:' + this.$('.progress').width() + 'px;');\n\t\t\t}\n\t\t\treturn Ember.String.htmlSafe('');\n\t\t}),\n\n\t\t/**\n   * sets the progress float from the uploaders progress event\n   *\n   * @public\n   * @param evt {object} event callback object\n   */\n\t\tprogress: function progress(evt) {\n\t\t\tthis._progress(evt.percent);\n\t\t},\n\t\t_progress: function _progress(percent) {\n\t\t\tif (percent !== undefined) {\n\t\t\t\tthis.set('_percent', percent);\n\t\t\t} else {\n\t\t\t\tthis.set('_percent', 100);\n\t\t\t}\n\n\t\t\tif (this.get('uploadPercent') === 100) {\n\t\t\t\treturn;\n\t\t\t} else if (this.get('uploadPercent') <= this.get('_percent')) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('uploadPercent', this.get('uploadPercent') + 1);\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tthis._progress();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * remove any data and reset the upload view\n   *\n   * @public\n   */\n\t\tcleanup: function cleanup() {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('files', null);\n\t\t\t\tthis.set('fileUrl', null);\n\t\t\t\tthis.set('isPreviewReady', false);\n\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\t\tthis.set('isSaving', false);\n\n\t\t\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\t\t\t\tthis.set('uploadPercent', 0);\n\t\t\t\t\t\t\t\tthis.set('_percent', 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * renders the file for a preview\n   *\n   * @public\n   * @param files {array}\n   */\n\t\trenderFiles: function renderFiles(file) {\n\t\t\tvar _this = this;\n\n\t\t\tvar showPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\treturn this.readFile(file).then(function (fileInfo) {\n\t\t\t\tvar fileUrl = Ember.get(fileInfo, 'target.result');\n\t\t\t\tif (showPreview) {\n\t\t\t\t\t_this.set('fileUrl', fileUrl);\n\t\t\t\t\t_this.set('isPreviewReady', true);\n\t\t\t\t}\n\t\t\t\treturn fileUrl;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * reads file data\n   *\n   * @public\n   * @param {file}\n   * @returns {promise} ember promise callback\n   */\n\t\treadFile: function readFile(file) {\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\tvar reader = new window.FileReader();\n\t\t\t\treader.onload = function (data) {\n\t\t\t\t\treturn Ember.run(null, resolve, data);\n\t\t\t\t};\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t});\n\t\t},\n\t\tsendObjects: function sendObjects(files, urls) {\n\t\t\tvar _this2 = this,\n\t\t\t    _arguments = arguments;\n\n\t\t\tObject.keys(files).forEach(function (key) {\n\t\t\t\tvar file = Ember.get(files, key);\n\t\t\t\tvar url = Ember.get(urls, key);\n\t\t\t\tvar obj = FileObject.create({ file: file });\n\n\t\t\t\tobj.on('start', function () {\n\t\t\t\t\treturn _this2.set('isSaving', true);\n\t\t\t\t});\n\t\t\t\tobj.on('progress', function () {\n\t\t\t\t\treturn _this2.progress.apply(_this2, _arguments);\n\t\t\t\t});\n\t\t\t\tobj.on('complete', function () {\n\t\t\t\t\treturn _this2.cleanup();\n\t\t\t\t});\n\n\t\t\t\t_this2.sendAction('onChange', obj, url);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tremoveFile: function removeFile() {\n\t\t\t\tthis.cleanup();\n\t\t\t},\n\t\t\tuploadFile: function uploadFile(files) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tthis.set('files', files);\n\t\t\t\tthis.set('showError', false);\n\n\t\t\t\tvar showError = false;\n\t\t\t\tvar typeArray = [];\n\n\t\t\t\tif (!Ember.isNone(this.get('restrictedTypes'))) {\n\t\t\t\t\tvar restrictedTypesStripped = this.get('restrictedTypes').replace(/ /g, '');\n\t\t\t\t\ttypeArray = restrictedTypesStripped.split(',');\n\t\t\t\t}\n\n\t\t\t\tif (typeArray.length > 0) {\n\t\t\t\t\tEmber.$.each(files, function (key, val) {\n\t\t\t\t\t\tif (!Ember.isNone(val.type) && !typeArray.includes(val.type)) {\n\t\t\t\t\t\t\tshowError = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (showError) {\n\t\t\t\t\tthis.set('showError', true);\n\t\t\t\t} else {\n\t\t\t\t\tif (this.get('showPreview')) {\n\t\t\t\t\t\tthis.renderFiles(files[0], true).then(function (url) {\n\t\t\t\t\t\t\t_this3.sendObjects(files, url);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar promise = [];\n\t\t\t\t\t\tObject.keys(files).forEach(function (key) {\n\t\t\t\t\t\t\tvar file = Ember.get(files, key);\n\t\t\t\t\t\t\tpromise.push(_this3.renderFiles(file, false));\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tEmber.RSVP.all(promise).then(function (urls) {\n\t\t\t\t\t\t\t_this3.sendObjects(files, urls);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-header-floating', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-header-floating', 'page-hide'],\n\t\tclassNameBindings: ['isResponsive:is-responsive:not-responsive'],\n\t\ttagName: 'header',\n\n\t\tisResponsive: true\n\t});\n});","define('busy-app/components/busy-header', ['exports', 'busy-app/templates/components/busy-header'], function (exports, _busyHeader) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tlayout: _busyHeader.default,\n\t\ttagName: 'header',\n\n\t\tclassNames: ['busy-header'],\n\n\t\theaderTitle: '',\n\t\thasBackButton: false,\n\n\t\tactions: {\n\t\t\tbackButton: function backButton() {\n\t\t\t\tthis.sendAction('onBack');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-image-uploader', ['exports', 'busy-app/components/busy-file-uploader', '@busy-web/utils'], function (exports, _busyFileUploader, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _busyFileUploader.default.extend({\n\t\tclassNames: ['busy-image-uploader'],\n\n\t\timageUrl: null,\n\n\t\ttitle: Ember.computed('fileName', function () {\n\t\t\tvar title = '';\n\t\t\tif (!this.get('multiple')) {\n\t\t\t\ttitle = (0, _utils.loc)('Drag a file or click here to upload a photo.');\n\t\t\t\tif (!Ember.isNone(this.get('imageUrl')) && !Ember.isEmpty(this.get('imageUrl'))) {\n\t\t\t\t\ttitle = (0, _utils.loc)('Drag a file or click here to change your photo.');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttitle = (0, _utils.loc)('Drag files or click here to upload a photos.');\n\t\t\t\tif (!Ember.isNone(this.get('imageUrl')) && !Ember.isEmpty(this.get('imageUrl'))) {\n\t\t\t\t\ttitle = (0, _utils.loc)('Drag files or click here to change your photos.');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn title;\n\t\t}),\n\n\t\tfileNameUrl: Ember.computed('fileUrl', 'imageUrl', function () {\n\t\t\tvar url = this.get('fileUrl');\n\t\t\tif (Ember.isNone(this.get('fileUrl'))) {\n\t\t\t\tif (!Ember.isNone(this.get('imageUrl'))) {\n\t\t\t\t\turl = this.get('imageUrl');\n\t\t\t\t} else {\n\t\t\t\t\turl = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn url;\n\t\t})\n\t});\n});","define('busy-app/components/busy-infobox', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: 'span',\n\n\t\tclassNames: ['l-flex-infobox', 'page-hide'],\n\t\tclassNameBindings: ['active:active', 'isAbove:l-flex-infobox-above', 'isBelow:l-flex-infobox-below', 'isLeft:l-flex-infobox-left', 'isRight:l-flex-infobox-right', 'offset:l-flex-infobox-offset', 'multiline:l-flex-infobox-multiline'],\n\n\t\t// Attibutes\n\t\tactive: false,\n\t\tcontent: null,\n\t\tdirection: 'left',\n\t\tmultiline: false,\n\t\toffset: false,\n\t\tautoMultilineCutoff: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\t(true && !(!Ember.isNone(this.get('direction'))) && Ember.assert('busy-infobox :: Attibute \\'direction\\' is required', !Ember.isNone(this.get('direction'))));\n\t\t\t(true && !(this.isValidDirection(this.get('direction'))) && Ember.assert('busy-infobox :: Attibute \\'direction\\' recieved unsupported value: \\'' + this.get('direction') + '\\'. Supported values are above/below/left/right', this.isValidDirection(this.get('direction'))));\n\t\t\t(true && !(!Ember.isNone(this.get('content'))) && Ember.assert('busy-infobox :: Attribute \\'content\\' is required', !Ember.isNone(this.get('content'))));\n\t\t\t(true && !(this.isValidAutoMultilineCutoff(this.get('autoMultilineCutoff'))) && Ember.assert('busy-infobox :: Attribute \\'autoMultilineCutoff\\' must be an integer, got: ' + this.get('autoMultilineCutoff'), this.isValidAutoMultilineCutoff(this.get('autoMultilineCutoff'))));\n\n\t\t\tif (!Ember.isNone(this.get('autoMultilineCutoff'))) {\n\t\t\t\tif (this.get('content').length >= this.get('autoMultilineCutoff')) {\n\t\t\t\t\tthis.set('multiline', true);\n\t\t\t\t} else if (this.get('offset')) {\n\t\t\t\t\t// force offset to false if autoMultilineCutoff not met\n\t\t\t\t\tthis.set('offset', false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t(true && !(!this.get('offset') || this.get('multiline')) && Ember.assert('busy-infobox :: Attribute \\'offset\\' attribute requires attribute \\'multiline\\' to be true', !this.get('offset') || this.get('multiline')));\n\t\t},\n\n\n\t\tisAbove: Ember.computed('direction', function () {\n\t\t\treturn this.get('direction') === 'above';\n\t\t}),\n\t\tisBelow: Ember.computed('direction', function () {\n\t\t\treturn this.get('direction') === 'below';\n\t\t}),\n\t\tisLeft: Ember.computed('direction', function () {\n\t\t\treturn this.get('direction') === 'left';\n\t\t}),\n\t\tisRight: Ember.computed('direction', function () {\n\t\t\treturn this.get('direction') === 'right';\n\t\t}),\n\n\t\tisValidDirection: function isValidDirection(direction) {\n\t\t\tvar validDirectionsRegex = /^(above|below|left|right)$/;\n\t\t\treturn validDirectionsRegex.test(direction);\n\t\t},\n\t\tisValidAutoMultilineCutoff: function isValidAutoMultilineCutoff(cutoff) {\n\t\t\treturn Ember.isNone(cutoff) || parseInt(cutoff, 0) === cutoff;\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonClick: function onClick(e) {\n\t\t\t\te.stopPropagation();\n\n\t\t\t\t// Logger.info(this, 'onClick');\n\n\t\t\t\tthis.sendAction('onClick', e);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-map-google', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar kDefaultLocation = [37.10102990074617, -113.53877082086876];\n\n\t/**\n  * `Component/BusyMapGoogle`\n  * Component map for displaying a map to a user.\n  *\n  * @class BusyMapGoogle\n  * @namespace Components\n  *\n  * @property locationInfo {object} Object of info for a place to be shown on a map\n  * @property canEdit {boolean} Bool used to show edit options for map.\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-map'],\n\t\tclassNameBindings: ['canEdit:edit'],\n\n\t\t/** public property list */\n\t\tmap: null,\n\t\tmapMarkers: null,\n\t\tmapAutocomplete: null,\n\t\tcanEdit: false,\n\t\tlocationInfo: null,\n\t\terror: false,\n\n\t\tlocationString: '',\n\n\t\t/**\n   * inititalizes the Map\n   *\n   * @private\n   * @method initializer\n   * @returns {void}\n   */\n\t\treloadMap: Ember.observer('locationInfo.latitude', 'locationInfo.longitude', 'locationInfo.locationRadius', function () {\n\t\t\tif (!Ember.isNone(this.get('locationInfo')) && !this.get('canEdit')) {\n\t\t\t\tthis.loadMap();\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Method to see whether a map\n   * should be shown or not.\n   *\n   * @public\n   * @method shouldShowMap\n   * @property {canEdit, locationInfo.hasLocation}\n   * @returns {boolean}\n   */\n\t\tshouldShowMap: Ember.computed('canEdit', 'locationInfo.hasLocation', function () {\n\t\t\tif (this.get('canEdit') || this.get('locationInfo.hasLocation')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisDefaultLocation: Ember.computed('locationInfo', function () {\n\t\t\treturn this.get('locationInfo.latitude') === kDefaultLocation[0] && this.get('locationInfo.longitude') === kDefaultLocation[1];\n\t\t}),\n\n\t\t/**\n   * Loads the Map based on info\n   * from locationInfo. If no locationInfo\n   * it will load the default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadMap\n   * @returns {void}\n   */\n\t\tloadMap: function loadMap() {\n\t\t\tvar _this = this;\n\n\t\t\tvar $map = this.$('#map-canvas');\n\t\t\tvar locationInfo = Ember.get(this, 'locationInfo');\n\n\t\t\tif ($map && $map.length > 0 && $map.is(':visible') && !Ember.isNone(locationInfo)) {\n\t\t\t\tvar isDefaultLocation = Ember.get(this, 'isDefaultLocation');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(locationInfo, ['locationString', 'hasLocation']),\n\t\t\t\t    locationString = _EmberGetProperties.locationString,\n\t\t\t\t    hasLocation = _EmberGetProperties.hasLocation;\n\n\t\t\t\tif (hasLocation && !isDefaultLocation) {\n\t\t\t\t\treturn this.loadMapByLocation(Ember.get(locationInfo, 'latitude'), Ember.get(locationInfo, 'longitude'), Ember.get(locationInfo, 'locationRadius'));\n\t\t\t\t} else if (!Ember.isNone(locationString) && locationString !== '') {\n\t\t\t\t\t// geolocateAddress sets locationInfo properties\n\t\t\t\t\treturn this.geolocateAddress(locationString).then(function (geo) {\n\t\t\t\t\t\tif (Ember.isNone(geo)) {\n\t\t\t\t\t\t\treturn _this.loadDefaultMap();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn _this.loadMapByLocation(Ember.get(locationInfo, 'latitude'), Ember.get(locationInfo, 'longitude'), Ember.get(locationInfo, 'locationRadius'));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn this.loadDefaultMap();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Ember.run.later(this, function () {\n\t\t\t\t\treturn _this.loadMap();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Loads the Map based on params\n   *\n   * @public\n   * @method loadMapByLocation\n   * @param latitude {number} The latitude of the location\n   * @param longitude {number} The longitude of the location\n   * @param radius {number} The accuracy or radius of location.\n   * @returns {void}\n   */\n\t\tloadMapByLocation: function loadMapByLocation(latitude, longitude, radius) {\n\t\t\tvar google = window.google;\n\t\t\tvar latlng = new google.maps.LatLng(latitude, longitude);\n\t\t\tvar container = this.$('#map-canvas').get(0);\n\n\t\t\t//Map Options\n\t\t\tvar options = {\n\t\t\t\tzoom: 15,\n\t\t\t\tcenter: latlng,\n\t\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t\t\t};\n\n\t\t\tvar map = new google.maps.Map(container, options);\n\n\t\t\tthis.set('map', map);\n\n\t\t\tthis.setMapMarkerCircle(map, latlng, radius);\n\t\t},\n\n\n\t\t/**\n   * Loads the Default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadDefaultMap\n   * @returns {void}\n   */\n\t\tloadDefaultMap: function loadDefaultMap() {\n\t\t\t// default to busy office\n\t\t\t// 37.10102990074617 -113.53877082086876\n\t\t\tthis.loadMapByLocation.apply(this, kDefaultLocation);\n\t\t},\n\t\tclearMap: function clearMap() {\n\t\t\tvar map = this.get('map');\n\t\t\tvar container = this.$('#map-canvas');\n\n\t\t\tif (!Ember.isNone(map)) {\n\t\t\t\tthis.set('map', null);\n\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(window);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(document);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(container[0]);\n\n\t\t\t\tcontainer.children().detach();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Sets Marker and Circle on the map\n   * that is passed in at the lat and\n   * long params. Radius is used for\n   * the circle. There are listeners\n   * on the circle. If circle moves, location\n   * of the marker and circle get updated as well as\n   * location info. If circle Radius changes, radius value\n   * gets updated. The marker is boundTo\n   * the circle.\n   *\n   * @public\n   * @method setMapMarkerCircle\n   * @param map {object} The Map that the options need to be set on\n   * @param latlng {object} The Latitdue & longitude of center of Map\n   * @param radius {number} The accuracy or radius of location.\n   * @returns {void}\n   */\n\t\tsetMapMarkerCircle: function setMapMarkerCircle(map, latlng, radius) {\n\t\t\tvar _this2 = this;\n\n\t\t\tradius = !Ember.isNone(radius) ? radius : 50;\n\t\t\tvar object = {};\n\t\t\tvar circle = new window.google.maps.Circle({\n\t\t\t\tfillOpacity: '0.0',\n\t\t\t\tstrokeColor: '#30AEEF',\n\t\t\t\tstrokeWeight: 1,\n\t\t\t\tmap: map,\n\t\t\t\tcenter: latlng,\n\t\t\t\tradius: radius,\n\t\t\t\tdraggable: this.get('canEdit'),\n\t\t\t\tgeodesic: this.get('canEdit'),\n\t\t\t\teditable: this.get('canEdit')\n\t\t\t});\n\n\t\t\tobject.circle = circle;\n\n\t\t\tvar marker = new window.google.maps.Marker({\n\t\t\t\tmap: map,\n\t\t\t\tposition: circle.center,\n\t\t\t\tanimation: window.google.maps.Animation.DROP\n\t\t\t});\n\n\t\t\tobject.marker = marker;\n\n\t\t\tmarker.bindTo('position', circle, 'center');\n\n\t\t\tif (this.get('canEdit')) {\n\t\t\t\tcircle.addListener('center_changed', function () {\n\t\t\t\t\t_this2.geolocateLocation(circle.getCenter());\n\t\t\t\t});\n\n\t\t\t\tcircle.addListener('radius_changed', function () {\n\t\t\t\t\t//locationRadius needs to be an int\n\t\t\t\t\t_this2.set('locationInfo.locationRadius', Math.floor(circle.getRadius()));\n\t\t\t\t});\n\n\t\t\t\tif (this.get('locationInfo.hasLocation')) {\n\t\t\t\t\tthis.set('locationString', this.get('locationInfo.locationString'));\n\t\t\t\t}\n\n\t\t\t\tthis.attachAutoCompleteWidget(map, circle);\n\t\t\t}\n\t\t},\n\n\n\t\t/*\n   *\tFrom a notice in Google API documentation:\n   * \t\t\"IMPORTANT: To avoid paying for data that you don't need, be sure to use Autocomplete.setFields() to specify only the place data that you will use.\"\n   *\n   */\n\t\tattachAutoCompleteWidget: function attachAutoCompleteWidget(map, circle) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar $address = this.$('#address');\n\t\t\tvar addressInput = $address.get(0);\n\n\t\t\tif (!Ember.isNone(addressInput)) {\n\t\t\t\tthis.selectFirstOnEnter(addressInput);\n\n\t\t\t\tmap.controls[window.google.maps.ControlPosition.TOP_LEFT].push(addressInput);\n\n\t\t\t\tvar bounds = new window.google.maps.LatLngBounds(new window.google.maps.LatLng(-90, -180), new window.google.maps.LatLng(90, 180));\n\n\t\t\t\t// To reduce API costs, explicitly specify the autocomplete fields necessary\n\t\t\t\t// https://developers.google.com/maps/documentation/javascript/reference/places-widget#Autocomplete.setFields\n\t\t\t\t// https://developers.google.com/maps/documentation/javascript/reference/places-service#PlaceResult\n\t\t\t\tvar fields = ['geometry.location', 'address_components'];\n\n\t\t\t\tvar autocomplete = new window.google.maps.places.Autocomplete(addressInput, { bounds: bounds, fields: fields });\n\n\t\t\t\twindow.google.maps.event.addListener(autocomplete, 'place_changed', function () {\n\t\t\t\t\tvar place = autocomplete.getPlace(); // only call the getPlace() lookup once and hang on to the result\n\n\t\t\t\t\tif (typeof place.address_components === 'undefined') {\n\t\t\t\t\t\t$address.addClass('error');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$address.removeClass('error');\n\t\t\t\t\t\tcircle.setCenter(place.geometry.location);\n\t\t\t\t\t\tmap.panTo(place.geometry.location);\n\t\t\t\t\t\t_this3.parseAddress(place);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// create event for when the map is ready\n\t\t\t// window.google.maps.event.addListener(map, 'bounds_changed', () => {});\n\t\t},\n\n\n\t\t// If the user presses the enter key while searching, auto select the first result\n\t\t// https://stackoverflow.com/a/49620828\n\t\tselectFirstOnEnter: function selectFirstOnEnter(input) {\n\t\t\t/* Store original event listener */\n\t\t\tvar _addEventListener = input.addEventListener ? input.addEventListener : input.attachEvent;\n\n\t\t\tvar addEventListenerWrapper = function addEventListenerWrapper(type, listener) {\n\t\t\t\tif (type === 'keydown') {\n\t\t\t\t\t/* Store existing listener function */\n\t\t\t\t\tvar _listener = listener;\n\t\t\t\t\tlistener = function listener(event) {\n\t\t\t\t\t\t/* Simulate a 'down arrow' keypress if no address has been selected */\n\t\t\t\t\t\tvar suggestion_selected = document.getElementsByClassName('pac-item-selected').length > 0;\n\n\t\t\t\t\t\tif (event.which === 13 && !suggestion_selected) {\n\t\t\t\t\t\t\tvar e = Object.assign({}, event);\n\n\t\t\t\t\t\t\te.which = 40;\n\t\t\t\t\t\t\te.keyCode = 40;\n\n\t\t\t\t\t\t\t_listener.apply(input, [e]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_listener.apply(input, [event]);\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t_addEventListener.apply(input, [type, listener]);\n\t\t\t};\n\n\t\t\tinput.addEventListener = addEventListenerWrapper;\n\t\t\tinput.attachEvent = addEventListenerWrapper;\n\t\t},\n\n\n\t\t/**\n   * Gets address info for the lat and\n   * long params that are passed in.\n   *\n   * @public\n   * @method geolocateLocation\n   * @param lattitude {number} The Latitude of Map location to find address for\n   * @param longitude {number} The Longitude of Map location to find address for\n   * @returns {void}\n   */\n\t\tgeolocateLocation: function geolocateLocation(center) {\n\t\t\tvar _this4 = this;\n\n\t\t\tif (!Ember.isNone(center)) {\n\t\t\t\tthis.set('locationInfo.latitude', center.lat());\n\t\t\t\tthis.set('locationInfo.longitude', center.lng());\n\n\t\t\t\tif (Ember.isNone(this.get('locationInfo.locationRadius'))) {\n\t\t\t\t\tthis.set('locationInfo.locationRadius', 50);\n\t\t\t\t}\n\n\t\t\t\tvar geocoder = new window.google.maps.Geocoder();\n\t\t\t\tgeocoder.geocode({ 'location': center }, function (results, status) {\n\t\t\t\t\tif (status === window.google.maps.GeocoderStatus.OK) {\n\t\t\t\t\t\tif (results.length > 0) {\n\t\t\t\t\t\t\t_this4.parseAddress(results.objectAt(0));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Gets Latitude and Longitude  info\n   * for the address param that is passed in.\n   *\n   * @public\n   * @method geolocateAddress\n   * @param address {object} The address to find map location for\n   * @returns {void}\n   */\n\t\tgeolocateAddress: function geolocateAddress(address) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar google = window.google;\n\t\t\tvar geocoder = new google.maps.Geocoder();\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\tgeocoder.geocode({ 'address': address }, function (results, status) {\n\t\t\t\t\tif (status === google.maps.GeocoderStatus.OK && results.length > 0) {\n\t\t\t\t\t\tvar result = results.objectAt(0);\n\t\t\t\t\t\tif (!Ember.isNone(result.geometry) && !Ember.isNone(result.geometry.location)) {\n\t\t\t\t\t\t\t_this5.set('locationInfo.latitude', result.geometry.location.lat());\n\t\t\t\t\t\t\t_this5.set('locationInfo.longitude', result.geometry.location.lng());\n\n\t\t\t\t\t\t\tif (Ember.isNone(_this5.get('locationInfo.locationRadius'))) {\n\t\t\t\t\t\t\t\t_this5.set('locationInfo.locationRadius', 50);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_this5.parseAddress(result);\n\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(status);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Seperates the address from a google geolocate result\n   *\n   * @public\n   * @method parseAddress\n   * @param results {object} The result from a geolocate function\n   * @returns {void}\n   */\n\t\tparseAddress: function parseAddress(result) {\n\t\t\tvar object = {};\n\t\t\tvar addrObj = result.address_components;\n\n\t\t\taddrObj.forEach(function (item) {\n\t\t\t\tif (item.types[0] === 'street_number') {\n\t\t\t\t\tobject.address1 = (item.short_name + ' ' + (object.address1 || '')).trim();\n\t\t\t\t} else if (item.types[0] === 'route') {\n\t\t\t\t\tobject.address1 = ((object.address1 || '') + ' ' + item.short_name).trim();\n\t\t\t\t} else if (item.types[0] === 'locality') {\n\t\t\t\t\tobject.city = item.long_name;\n\t\t\t\t} else if (item.types[0] === 'administrative_area_level_1') {\n\t\t\t\t\tobject.state = item.short_name;\n\t\t\t\t} else if (item.types[0] === 'postal_code') {\n\t\t\t\t\tobject.postalCode = item.short_name;\n\t\t\t\t} else if (item.types[0] === 'country') {\n\t\t\t\t\tobject.country = item.short_name;\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.set('locationString', result.formatted_address);\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.loadMap();\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.clearMap();\n\t\t}\n\t});\n});","define('busy-app/components/busy-map-leaflet-locations', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar _window = window,\n\t    L = _window.L,\n\t    MQ = _window.MQ;\n\n\n\tvar kTileServiceProviders = {\n\t\t'osm': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n\t\t'wikimedia': 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png',\n\t\t'carto-light': 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',\n\t\t'carto-dark': 'http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',\n\t\t'stamen-watercolor': 'http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png',\n\t\t'stamen-toner': 'http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png'\n\t};\n\n\tvar kDefaultLocation = [37.10102990074617, -113.53877082086876];\n\n\t/**\n  * `BusyMapLeafletLocations`\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-map-leaflet c-busy-map-leaflet-locations'],\n\n\t\t_tileProvider: 'default',\n\t\tmodel: null,\n\n\t\tlocations: Ember.computed.map('model', function (location) {\n\t\t\treturn this.createLocationObject(location);\n\t\t}),\n\n\t\tbounds: Ember.computed('locations', function () {\n\t\t\tvar locations = this.get('locations');\n\n\t\t\tvar coords = locations.map(function (location) {\n\t\t\t\tif (!Ember.isNone(location) && !Ember.isEmpty(location)) {\n\t\t\t\t\treturn [location.get('lat'), location.get('lng')];\n\t\t\t\t}\n\t\t\t}).compact();\n\n\t\t\tif (Ember.isNone(coords) || Ember.isEmpty(coords)) {\n\t\t\t\tcoords.push(kDefaultLocation);\n\t\t\t}\n\n\t\t\treturn L.latLngBounds(coords);\n\t\t}),\n\n\t\thasBounds: Ember.computed.and('locations', 'bounds'),\n\n\t\ttileServiceUrl: Ember.computed('_tileProvider', function () {\n\t\t\tif (this.get('isTileDefault')) {\n\t\t\t\treturn kTileServiceProviders['osm'];\n\t\t\t} else if (this.get('isTileHybrid')) {\n\t\t\t\treturn this.getMapQuestTileServiceUrl('hybridLayer');\n\t\t\t}\n\t\t}),\n\n\t\tisTileDefault: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'default';\n\t\t}),\n\n\t\tisTileHybrid: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'satellite';\n\t\t}),\n\n\t\tcreateLocationObject: function createLocationObject(location) {\n\t\t\tif (Ember.isNone(location)) {\n\t\t\t\treturn Ember.Object.create(null);\n\t\t\t}\n\n\t\t\tvar obj = {\n\t\t\t\timage: location.get('member.imageThumbUrl'),\n\t\t\t\tname: location.get('member.fullName'),\n\t\t\t\tlat: location.get('latitude'),\n\t\t\t\tlng: location.get('longitude'),\n\n\t\t\t\tget coords() {\n\t\t\t\t\treturn [this.lat, this.lng];\n\t\t\t\t},\n\n\t\t\t\tget timeStr() {\n\t\t\t\t\treturn _utils.Time.date(this.locationTime).format('h:mm A');\n\t\t\t\t},\n\n\t\t\t\tget clockString() {\n\t\t\t\t\treturn this.clockType + ' ' + this.timeStr;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(location.get('startTimeEntry.id'))) {\n\t\t\t\tobj.locationTime = location.get('startTimeEntry.startTime');\n\t\t\t\tobj.locationType = 'startLocation';\n\t\t\t\tobj.clockType = (0, _utils.loc)('Clocked In @');\n\t\t\t} else if (!Ember.isNone(location.get('endTimeEntry.id'))) {\n\t\t\t\tobj.locationTime = location.get('endTimeEntry.endTime');\n\t\t\t\tobj.locationType = 'endLocation';\n\t\t\t\tobj.clockType = (0, _utils.loc)('Clocked Out @');\n\t\t\t} else if (!Ember.isNone(location.get('breakStart'))) {\n\t\t\t\tobj.locationTime = location.get('breakStart.startTime');\n\t\t\t\tobj.locationType = 'breakStartLocation';\n\t\t\t\tobj.clockType = (0, _utils.loc)('Break start @');\n\t\t\t} else if (!Ember.isNone(location.get('breakEnd'))) {\n\t\t\t\tobj.locationTime = location.get('breakEnd.endTime');\n\t\t\t\tobj.locationType = 'breakEndLocation';\n\t\t\t\tobj.clockType = (0, _utils.loc)('Break end @');\n\t\t\t}\n\n\t\t\tobj.icon = this.getIconForLocationType(obj.locationType);\n\n\t\t\treturn Ember.Object.create(obj);\n\t\t},\n\t\tgetIconForLocationType: function getIconForLocationType(locationType) {\n\t\t\tvar props = {\n\t\t\t\ticonSize: [22, 32],\n\t\t\t\ticonAnchor: [10, 32],\n\t\t\t\tshadowUrl: '/assets/images/marker-shadow.png',\n\t\t\t\tshadowAnchor: [12, 42]\n\t\t\t};\n\n\t\t\tif (locationType === 'startLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_start.png';\n\t\t\t\tprops.className = 'map-icon map-icon-start';\n\t\t\t} else if (locationType === 'endLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_end.png';\n\t\t\t\tprops.className = 'map-icon map-icon-end';\n\t\t\t} else if (locationType === 'breakStartLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_start-break.png';\n\t\t\t\tprops.className = 'map-icon map-icon-start-break';\n\t\t\t} else if (locationType === 'breakEndLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_end-break.png';\n\t\t\t\tprops.className = 'map-icon map-icon-end-break';\n\t\t\t}\n\n\t\t\treturn L.icon(props);\n\t\t},\n\n\n\t\t// onload action is triggered by leaflet\n\t\tonMapLoad: function onMapLoad(_mapElement) {\n\t\t\tthis.setProperties({\n\t\t\t\t_mapElement: _mapElement,\n\t\t\t\tisMapReady: true\n\t\t\t});\n\t\t},\n\t\tgetMapQuestTileServiceUrl: function getMapQuestTileServiceUrl(type) {\n\t\t\t// hybridLayer\n\t\t\t// mapLayer\n\t\t\t// satelliteLayer\n\t\t\t// darkLayer\n\t\t\t// lightLayer\n\n\t\t\treturn MQ[type]()._url.replace('{ext}', 'png');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonLoad: function onLoad(e) {\n\t\t\t\tvar _mapElement = e.target;\n\n\t\t\t\tthis.onMapLoad(_mapElement);\n\t\t\t},\n\t\t\tsetTileProvider: function setTileProvider(tileProvider) {\n\t\t\t\tthis.set('_tileProvider', tileProvider);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-map-leaflet-time-entry-locations', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar _window = window,\n\t    L = _window.L,\n\t    MQ = _window.MQ;\n\n\tvar DEVIATION = 0.000009;\n\n\t/***/\n\tvar kTileServiceProviders = {\n\t\t'osm': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n\t\t'wikimedia': 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png',\n\t\t'carto-light': 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',\n\t\t'carto-dark': 'http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',\n\t\t'stamen-watercolor': 'http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png',\n\t\t'stamen-toner': 'http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png'\n\t};\n\n\tvar kDefaultLocation = [37.10102990074617, -113.53877082086876];\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-map-leaflet c-busy-map-leaflet-time-entry-locations'],\n\n\t\ttimeEntry: null,\n\t\tfilter: null,\n\t\t_tileProvider: 'default',\n\n\t\tlocations: Ember.computed('timeEntry', function () {\n\t\t\treturn this.createLocationObjects(this.get('timeEntry'));\n\t\t}),\n\n\t\tbounds: Ember.computed('locations', function () {\n\t\t\tvar locations = this.get('locations');\n\n\t\t\tvar coords = locations.map(function (location) {\n\t\t\t\tif (!Ember.isNone(location) && !Ember.isEmpty(location)) {\n\t\t\t\t\treturn [location.get('lat'), location.get('lng')];\n\t\t\t\t}\n\t\t\t}).compact();\n\n\t\t\tif (Ember.isNone(coords) || Ember.isEmpty(coords)) {\n\t\t\t\tcoords.push(kDefaultLocation);\n\t\t\t}\n\n\t\t\treturn L.latLngBounds(coords);\n\t\t}),\n\n\t\thasBounds: Ember.computed.and('timeEntry', 'bounds'),\n\n\t\ttileServiceUrl: Ember.computed('_tileProvider', function () {\n\t\t\tif (this.get('isTileDefault')) {\n\t\t\t\treturn kTileServiceProviders['osm'];\n\t\t\t} else if (this.get('isTileHybrid')) {\n\t\t\t\treturn this.getMapQuestTileServiceUrl('hybridLayer');\n\t\t\t}\n\t\t}),\n\n\t\tisTileDefault: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'default';\n\t\t}),\n\n\t\tisTileHybrid: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'satellite';\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\t// this.set('tileService', kTileServiceProviders[this.get('_defaultTileService')]);\n\t\t},\n\n\n\t\t// onload action is triggered by leaflet\n\t\tonMapLoad: function onMapLoad(_mapElement) {\n\t\t\tthis.setProperties({\n\t\t\t\t_mapElement: _mapElement,\n\t\t\t\tisMapReady: true\n\t\t\t});\n\t\t},\n\t\tgetMapQuestTileServiceUrl: function getMapQuestTileServiceUrl(type) {\n\t\t\t// hybridLayer\n\t\t\t// mapLayer\n\t\t\t// satelliteLayer\n\t\t\t// darkLayer\n\t\t\t// lightLayer\n\n\t\t\treturn MQ[type]()._url.replace('{ext}', 'png');\n\t\t},\n\t\tcreateLocationObjects: function createLocationObjects(timeEntry) {\n\t\t\tvar _this = this;\n\n\t\t\tvar markers = [];\n\t\t\tvar lats = [];\n\t\t\tvar longs = [];\n\t\t\tvar filter = this.get('filter');\n\n\t\t\tif (!Ember.isNone(timeEntry.get('startLocation')) && timeEntry.get('isStartLocationValid')) {\n\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(timeEntry.get('startLocation.id')) !== -1) {\n\t\t\t\t\tvar timeStr = _utils.Time.date(timeEntry.get('startTime')).format('h:mm A');\n\t\t\t\t\tmarkers.pushObject(this.createMarkerObj(timeEntry.get('startLocation'), 'startLocation', (0, _utils.loc)('Clocked In @'), timeStr, lats, longs));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(timeEntry.get('endLocation')) && timeEntry.get('isEndLocationValid')) {\n\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(timeEntry.get('endLocation.id')) !== -1) {\n\t\t\t\t\tvar _timeStr = _utils.Time.date(timeEntry.get('endTime')).format('h:mm A');\n\t\t\t\t\tmarkers.pushObject(this.createMarkerObj(timeEntry.get('endLocation'), 'endLocation', (0, _utils.loc)('Clocked Out @'), _timeStr, lats, longs));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttimeEntry.get('timeEntryBreaks').forEach(function (model) {\n\t\t\t\tif (!Ember.isNone(model.get('startLocation')) && model.get('isStartLocationValid')) {\n\t\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(model.get('startLocation.id')) !== -1) {\n\t\t\t\t\t\tvar _timeStr2 = _utils.Time.date(model.get('startTime')).format('h:mm A');\n\t\t\t\t\t\tmarkers.pushObject(_this.createMarkerObj(model.get('startLocation'), 'breakStartLocation', (0, _utils.loc)('Break start @'), _timeStr2, lats, longs));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(model.get('endLocation')) && model.get('isEndLocationValid')) {\n\t\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(model.get('endLocation.id')) !== -1) {\n\t\t\t\t\t\tvar _timeStr3 = _utils.Time.date(model.get('endTime')).format('h:mm A');\n\t\t\t\t\t\tmarkers.pushObject(_this.createMarkerObj(model.get('endLocation'), 'breakEndLocation', (0, _utils.loc)('Break end @'), _timeStr3, lats, longs));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn markers;\n\t\t},\n\t\tcreateMarkerObj: function createMarkerObj(location, locationType, clockType, timeStr, lats, longs) {\n\t\t\tvar lat = this.adjustLatitude(lats, location.get('latitude'));\n\t\t\tvar lng = this.adjustLongitude(longs, location.get('longitude'));\n\n\t\t\tvar marker = Ember.Object.create({\n\t\t\t\timage: this.get('timeEntry.member.imageThumbUrl'),\n\t\t\t\tname: this.get('timeEntry.member.fullName'),\n\t\t\t\tlat: lat,\n\t\t\t\tlng: lng,\n\t\t\t\tcoords: [lat, lng],\n\t\t\t\tlocationType: locationType,\n\t\t\t\tclockString: clockType + timeStr,\n\t\t\t\ticon: this.getIconForLocationType(locationType)\n\t\t\t});\n\n\t\t\treturn marker;\n\t\t},\n\t\tadjustLatitude: function adjustLatitude(lats, lat) {\n\t\t\tif (!matchCoord(lats, DEVIATION, lat)) {\n\t\t\t\tlats.push(lat);\n\t\t\t} else {\n\t\t\t\tlat = this.adjustLatitude(lats, lat + DEVIATION);\n\t\t\t}\n\t\t\treturn lat;\n\t\t},\n\t\tadjustLongitude: function adjustLongitude(longs, lng) {\n\t\t\tif (!matchCoord(longs, DEVIATION, lng)) {\n\t\t\t\tlongs.push(lng);\n\t\t\t} else {\n\t\t\t\tlng = this.adjustLongitude(longs, lng + DEVIATION);\n\t\t\t}\n\t\t\treturn lng;\n\t\t},\n\t\tgetIconForLocationType: function getIconForLocationType(locationType) {\n\t\t\tvar props = {\n\t\t\t\ticonSize: [22, 32],\n\t\t\t\ticonAnchor: [10, 32],\n\t\t\t\tshadowUrl: '/assets/images/marker-shadow.png',\n\t\t\t\tshadowAnchor: [12, 42]\n\t\t\t};\n\n\t\t\tif (locationType === 'startLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_start.png';\n\t\t\t\tprops.className = 'map-icon map-icon-start';\n\t\t\t} else if (locationType === 'endLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_end.png';\n\t\t\t\tprops.className = 'map-icon map-icon-end';\n\t\t\t} else if (locationType === 'breakStartLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_start-break.png';\n\t\t\t\tprops.className = 'map-icon map-icon-start-break';\n\t\t\t} else if (locationType === 'breakEndLocation') {\n\t\t\t\tprops.iconUrl = '/images/icons/map_icons_end-break.png';\n\t\t\t\tprops.className = 'map-icon map-icon-end-break';\n\t\t\t}\n\n\t\t\treturn L.icon(props);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonLoad: function onLoad(e) {\n\t\t\t\tvar _mapElement = e.target;\n\n\t\t\t\tthis.onMapLoad(_mapElement);\n\t\t\t},\n\t\t\tsetTileProvider: function setTileProvider(tileProvider) {\n\t\t\t\tthis.set('_tileProvider', tileProvider);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tfunction matchCoord(coordArray, deviation, coord) {\n\t\treturn coordArray.find(function (c) {\n\t\t\treturn c - deviation < coord && c + deviation > coord;\n\t\t});\n\t}\n});","define('busy-app/components/busy-map-leaflet', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar _window = window,\n\t    L = _window.L,\n\t    MQ = _window.MQ;\n\n\n\t/***/\n\n\t// default to busy office\n\t// 37.10102990074617 -113.53877082086876\n\tvar kDefaultLocation = [37.10102990074617, -113.53877082086876];\n\n\tvar kTileServiceProviders = {\n\t\t'osm': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n\t\t'wikimedia': 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png',\n\t\t'carto-light': 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',\n\t\t'carto-dark': 'http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',\n\t\t'stamen-watercolor': 'http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png',\n\t\t'stamen-toner': 'http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png'\n\t};\n\n\tvar kDefaultLocationRadius = 50;\n\tvar kAddressSearchDebounce = 1000 / 4;\n\tvar kAddressSearchMinLength = 3;\n\n\t/**\n  * `Component/BusyMapLeaflet`\n  * Component map for displaying a map to a user.\n  *\n  * Ember-Leaflet docs: http://www.ember-leaflet.com/docs\n  * Leaflet docs: http://leafletjs.com/reference-1.2.0.html\n  *\n  * @class BusyMap\n  * @namespace Components\n  *\n  * @property locationInfo {object} Object of info for a place to be shown on a map\n  * @property canEdit {boolean} Bool used to show edit options for map.\n  * @property error {object}\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-map-leaflet'],\n\n\t\t/** params */\n\n\t\tlocationInfo: null,\n\t\tcanEdit: false,\n\t\tmapAutocomplete: null,\n\t\tzoom: 15,\n\t\t// showLayerControl: true,\n\t\tshowRadius: false,\n\t\tonLocationChange: null, // action\n\n\t\tmapInit: Date.now(),\n\n\t\t/** public properties */\n\n\t\tmapMarkers: null,\n\t\terror: false,\n\t\tisMapReady: false,\n\t\ttileService: null,\n\t\tlocationString: '',\n\t\tgeocodeSearchResults: null,\n\t\tshowGeocodeSearchResults: false,\n\n\t\t/** private properties */\n\n\t\t_defaultTileService: 'osm',\n\t\t_tileServices: null,\n\t\t_mapElement: null,\n\t\t_radiusControl: null,\n\t\t// _layerControl: null,\n\t\t_hoverLocation: null,\n\t\t_tileProvider: 'default',\n\n\t\t/** computeds */\n\n\t\thasLocation: Ember.computed('locationInfo.{latitude,longitude}', function () {\n\t\t\treturn !Ember.isNone(this.get('locationInfo.latitude')) && !Ember.isNone(this.get('locationInfo.longitude'));\n\t\t}),\n\n\t\tlatitude: Ember.computed('hasLocation', 'locationInfo.latitude', '_hoverLocation', function () {\n\n\t\t\t// if the user is hovering over a geo search result, center on that location temporarily\n\t\t\tif (!Ember.isNone(this.get('_hoverLocation.latlng.lat'))) {\n\t\t\t\treturn this.get('_hoverLocation.latlng.lat');\n\t\t\t}\n\n\t\t\treturn this.get('hasLocation') ? this.get('locationInfo.latitude') : kDefaultLocation[0];\n\t\t}),\n\n\t\tlongitude: Ember.computed('hasLocation', 'locationInfo.longitude', '_hoverLocation', function () {\n\n\t\t\t// if the user is hovering over a geo search result, center on that location temporarily\n\t\t\tif (!Ember.isNone(this.get('_hoverLocation.latlng.lng'))) {\n\t\t\t\treturn this.get('_hoverLocation.latlng.lng');\n\t\t\t}\n\n\t\t\treturn this.get('hasLocation') ? this.get('locationInfo.longitude') : kDefaultLocation[1];\n\t\t}),\n\n\t\tcoords: Ember.computed('latitude', 'longitude', function () {\n\t\t\treturn [this.get('latitude'), this.get('longitude')];\n\t\t}),\n\n\t\thasRadius: Ember.computed('locationInfo.locationRadius', function () {\n\t\t\treturn !Ember.isNone(this.get('locationInfo.locationRadius')) && !Number.isNaN(this.get('locationInfo.locationRadius'));\n\t\t}),\n\n\t\ttileServiceUrl: Ember.computed('_tileProvider', function () {\n\t\t\tif (this.get('isTileDefault')) {\n\t\t\t\treturn kTileServiceProviders['osm'];\n\t\t\t} else if (this.get('isTileHybrid')) {\n\t\t\t\treturn this.getMapQuestTileServiceUrl('hybridLayer');\n\t\t\t}\n\t\t}),\n\n\t\tisTileDefault: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'default';\n\t\t}),\n\n\t\tisTileHybrid: Ember.computed('_tileProvider', function () {\n\t\t\treturn this.get('_tileProvider') === 'satellite';\n\t\t}),\n\n\t\t/** observers */\n\n\t\tonLocationChanged: Ember.observer('locationInfo.latitude', 'locationInfo.longitude', function () {\n\t\t\treturn this.redrawRadiusCircle();\n\t\t}),\n\n\t\tonRadiusChanged: Ember.observer('locationInfo.locationRadius', function () {\n\t\t\treturn this.redrawRadiusCircle();\n\t\t}),\n\n\t\t// whenever the `mapInit` param changes, trigger the leaflet map invalidateSize() method\n\t\t// leaflet does not render properly if it it not visible in the DOM, changing to a tab with a map will be broken, and it needs to be re-rendered\n\t\tonReInit: Ember.observer('mapInit', function () {\n\t\t\t// Logger.info(this, 'onReInit', this.get('mapInit'));\n\n\t\t\tif (!Ember.isNone(this.get('_mapElement'))) {\n\t\t\t\tthis.set('locationString', null);\n\t\t\t\tthis.get('_mapElement').invalidateSize();\n\t\t\t}\n\t\t}),\n\n\t\t/** component lifecylcle */\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.set('locationString', null);\n\t\t\tthis.set('tileService', kTileServiceProviders[this.get('_defaultTileService')]);\n\t\t},\n\n\n\t\t// onload action is triggered by leaflet\n\t\tonMapLoad: function onMapLoad(_mapElement) {\n\t\t\tthis.setProperties({\n\t\t\t\t_mapElement: _mapElement,\n\t\t\t\tisMapReady: true\n\t\t\t});\n\n\t\t\tthis.getReverseGeocode({\n\t\t\t\tlat: this.get('locationInfo.latitude'),\n\t\t\t\tlng: this.get('locationInfo.longitude')\n\t\t\t});\n\n\t\t\t// if (this.get('showLayerControl')) {\n\t\t\t// \tthis.drawMapQuestLayerControl();\n\t\t\t// }\n\n\t\t\tif (this.get('showRadius') && this.get('hasRadius')) {\n\t\t\t\tthis.drawRadiusCircle();\n\t\t\t}\n\t\t},\n\t\tdrawRadiusCircle: function drawRadiusCircle() {\n\t\t\tvar _this = this;\n\n\t\t\tvar _mapElement = this.get('_mapElement');\n\n\t\t\tvar circleOptions = {\n\t\t\t\tradius: this.get('locationInfo.locationRadius'),\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: this.get('canEdit')\n\t\t\t};\n\n\t\t\tvar _radiusControl = new L.CircleEditor(this.get('coords'), circleOptions).on('resizeend', function (e) {\n\t\t\t\treturn _this.send('onRadiusResize', e);\n\t\t\t}).addTo(_mapElement);\n\n\t\t\tthis.setProperties({ _radiusControl: _radiusControl });\n\n\t\t\treturn _radiusControl;\n\t\t},\n\t\tredrawRadiusCircle: function redrawRadiusCircle() {\n\t\t\tvar _radiusControl = this.get('_radiusControl');\n\n\t\t\tif (this.get('hasRadius')) {\n\t\t\t\tif (!Ember.isNone(_radiusControl)) {\n\t\t\t\t\t_radiusControl.remove();\n\t\t\t\t}\n\n\t\t\t\treturn this.drawRadiusCircle();\n\t\t\t}\n\t\t},\n\n\n\t\t// drawMapQuestLayerControl() {\n\t\t// \tconst _mapElement = this.get('_mapElement');\n\t\t//\n\t\t// \tconst baseLayers = {\n\t\t// \t\t'Street Map': this.createTileLayer('osm'),\n\t\t// \t\t'Satellite': MQ.hybridLayer(),\n\t\t//\n\t\t// \t\t// 'Carto Light': this.createTileLayer('carto-light'),\n\t\t// \t\t// 'Carto Dark': this.createTileLayer('carto-dark'),\n\t\t// \t\t// 'Stamen Watercolor': this.createTileLayer('stamen-watercolor'),\n\t\t// \t\t// 'Stamen Toner': this.createTileLayer('stamen-toner'),\n\t\t// \t\t//\n\t\t// \t\t// 'MapQuest Map': MQ.mapLayer(),\n\t\t// \t\t// 'MapQuest Satellite': MQ.satelliteLayer(),\n\t\t// \t\t// 'MapQuest Dark': MQ.darkLayer(),\n\t\t// \t\t// 'MapQuest Light': MQ.lightLayer(),\n\t\t// \t};\n\t\t//\n\t\t// \tconst _layerControl = L.control.layers(baseLayers).addTo(_mapElement);\n\t\t//\n\t\t// \tthis.setProperties({ _layerControl });\n\t\t// },\n\n\t\t// createTileLayer(key) {\n\t\t// \treturn L.tileLayer(kTileServiceProviders[key], { detectRetina: true });\n\t\t// },\n\n\n\t\trequestBrowserGeolocation: function requestBrowserGeolocation() {\n\t\t\tif (!navigator.geolocation) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\treturn navigator.geolocation.getCurrentPosition(resolve, reject);\n\t\t\t});\n\t\t},\n\t\tsetUserGeolocation: function setUserGeolocation() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.requestBrowserGeolocation().then(function (position) {\n\t\t\t\tif (!Ember.isNone(position) && !Ember.isNone(position.coords)) {\n\t\t\t\t\t_this2.setProperties({\n\t\t\t\t\t\t'locationInfo.latitude': position.coords.latitude,\n\t\t\t\t\t\t'locationInfo.longitude': position.coords.longitude\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tisLocationDefault: function isLocationDefault(location) {\n\t\t\t// Logger.info(this, 'isLocationDefault', { location, kDefaultLocation, isValid: this.isValidLocationObject(location) });\n\n\t\t\tif (!this.isValidLocationObject(location)) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn location.lat === kDefaultLocation[0] && location.lng === kDefaultLocation[1];\n\t\t\t}\n\t\t},\n\t\tisValidLocationObject: function isValidLocationObject(location) {\n\t\t\t// Logger.info(this, 'isValidLocationObject', { location });\n\n\t\t\treturn Ember.isPresent(location) && location.hasOwnProperty('lat') && location.hasOwnProperty('lng') && Ember.isPresent(location.lat) && Ember.isPresent(location.lng);\n\t\t},\n\n\n\t\t// location: {lat, lng}\n\t\tgetReverseGeocode: function getReverseGeocode(location) {\n\t\t\tvar _this3 = this;\n\n\t\t\t// Logger.info(this, 'getReverseGeocode', { location, isValid: this.isValidLocationObject(location) });\n\n\t\t\tthis.set('locationString', null);\n\n\t\t\tif (!this.isValidLocationObject(location)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn this.mapquestGeocodeReverse(location).then(function (_ref) {\n\t\t\t\tvar best = _ref.best;\n\n\t\t\t\tif (!_this3.get('isDestroyed') && !_this3.isLocationDefault(location)) {\n\t\t\t\t\tvar locationString = _this3.describeLocation(best);\n\t\t\t\t\t_this3.set('locationString', locationString);\n\t\t\t\t}\n\n\t\t\t\t// Logger.info(this, 'getReverseGeocode', { best, matches, search, locationString });\n\t\t\t}).catch(function (err) {\n\t\t\t\t_this3.set('geolocationError', err);\n\t\t\t});\n\t\t},\n\n\n\t\t// location: {lat, lng}\n\t\tmapquestGeocodeReverse: function mapquestGeocodeReverse(location) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\ttry {\n\t\t\t\t\tMQ.geocode().reverse(location).on('success', function (e) {\n\t\t\t\t\t\tvar result = e.result;\n\n\n\t\t\t\t\t\tif (Ember.isNone(result)) {\n\t\t\t\t\t\t\treturn reject((0, _utils.loc)('No results found'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar best = result.best,\n\t\t\t\t\t\t\t    matches = result.matches,\n\t\t\t\t\t\t\t    search = result.search;\n\n\t\t\t\t\t\t\t// Logger.info(this, 'mapquestGeocodeReverse', { best, matches, search });\n\n\t\t\t\t\t\t\treturn resolve({ best: best, matches: matches, search: search });\n\t\t\t\t\t\t}\n\t\t\t\t\t}).on('error', function (e) {\n\t\t\t\t\t\t_logger.default.error(_this4, 'mapquestGeocodeReverse', e);\n\n\t\t\t\t\t\tvar message = e.message;\n\n\n\t\t\t\t\t\treturn reject(message);\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tmapquestGeocodeSearch: function mapquestGeocodeSearch(input) {\n\t\t\tvar _this5 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\ttry {\n\t\t\t\t\tMQ.geocode().search(input).on('success', function (e) {\n\t\t\t\t\t\tvar result = e.result;\n\n\n\t\t\t\t\t\tif (Ember.isNone(result)) {\n\t\t\t\t\t\t\treturn reject((0, _utils.loc)('No results found'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar best = result.best,\n\t\t\t\t\t\t\t    matches = result.matches,\n\t\t\t\t\t\t\t    search = result.search;\n\n\t\t\t\t\t\t\t// Logger.info(this, 'mapquestGeocodeSearch', { best, matches, search });\n\n\t\t\t\t\t\t\treturn resolve({ best: best, matches: matches, search: search });\n\t\t\t\t\t\t}\n\t\t\t\t\t}).on('error', function (e) {\n\t\t\t\t\t\t_logger.default.error(_this5, 'mapquestGeocodeSearch', e);\n\n\t\t\t\t\t\tvar message = e.message;\n\n\n\t\t\t\t\t\treturn reject(message);\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t// based on MQ.geocde().describeLocation()\n\t\tdescribeLocation: function describeLocation(location) {\n\t\t\tvar result = [];\n\n\t\t\tif (location.street) {\n\t\t\t\tresult.push(location.street);\n\t\t\t}\n\n\t\t\t// city\n\t\t\tif (location.adminArea5) {\n\t\t\t\t// state\n\t\t\t\tif (location.adminArea3) {\n\t\t\t\t\tresult.push(location.adminArea5 + ', ' + location.adminArea3);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(location.adminArea5);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (location.adminArea3) {\n\t\t\t\t\tresult.push(location.adminArea3);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result.join(', ');\n\t\t},\n\t\taddressSearch: function addressSearch() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar locationString = this.get('locationString');\n\t\t\tthis.mapquestGeocodeSearch(locationString).then(function (_ref2) {\n\t\t\t\tvar matches = _ref2.matches;\n\n\t\t\t\tif (Ember.isNone(matches) || Ember.isEmpty(matches)) {\n\t\t\t\t\t_this6.setProperties({\n\t\t\t\t\t\tshowGeocodeSearchResults: true,\n\t\t\t\t\t\tgeocodeSearchResults: []\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar geocodeSearchResults = matches.map(function (match) {\n\t\t\t\t\tvar description = _this6.describeLocation(match);\n\t\t\t\t\treturn Object.assign(match, { description: description });\n\t\t\t\t});\n\n\t\t\t\t_this6.setProperties({\n\t\t\t\t\tshowGeocodeSearchResults: true,\n\t\t\t\t\tgeocodeSearchResults: geocodeSearchResults\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetMapQuestTileServiceUrl: function getMapQuestTileServiceUrl(type) {\n\t\t\t// hybridLayer\n\t\t\t// mapLayer\n\t\t\t// satelliteLayer\n\t\t\t// darkLayer\n\t\t\t// lightLayer\n\n\t\t\treturn MQ[type]()._url.replace('{ext}', 'png');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonLoad: function onLoad(e) {\n\t\t\t\tvar _mapElement = e.target;\n\t\t\t\tthis.onMapLoad(_mapElement);\n\t\t\t},\n\n\n\t\t\t// remove the radius control whenever the marker is being moved\n\t\t\tonDrag: function onDrag() {\n\t\t\t\tvar _radiusControl = this.get('_radiusControl');\n\t\t\t\tif (!Ember.isNone(_radiusControl)) {\n\t\t\t\t\t_radiusControl.remove();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonMarkerMove: function onMarkerMove(e) {\n\t\t\t\tvar location = e.target.getLatLng();\n\t\t\t\tthis.getReverseGeocode(location);\n\t\t\t\tthis.setProperties({\n\t\t\t\t\t'locationInfo.latitude': location.lat,\n\t\t\t\t\t'locationInfo.longitude': location.lng\n\t\t\t\t});\n\t\t\t\tthis.send('onLocationChange');\n\t\t\t},\n\t\t\tonRadiusResize: function onRadiusResize(e) {\n\t\t\t\tvar locationRadius = e.target.getRadius();\n\t\t\t\tthis.set('locationInfo.locationRadius', locationRadius);\n\t\t\t\tthis.send('onLocationChange');\n\t\t\t},\n\t\t\tonLocationChange: function onLocationChange() {\n\t\t\t\tvar args = [this.get('locationInfo.latitude'), this.get('locationInfo.longitude'), this.get('locationInfo.locationRadius')];\n\t\t\t\tthis.sendAction.apply(this, ['onLocationChange'].concat(args));\n\t\t\t},\n\t\t\tlocationInputChange: function locationInputChange() {\n\t\t\t\tif (this.get('locationString.length') >= kAddressSearchMinLength) {\n\t\t\t\t\tEmber.run.debounce(this, this.addressSearch, kAddressSearchDebounce);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSearchResultsClick: function onSearchResultsClick(location) {\n\t\t\t\tvar locationInfo = this.get('locationInfo');\n\t\t\t\tlocationInfo.setProperties({\n\t\t\t\t\tlatitude: location.latlng.lat,\n\t\t\t\t\tlongitude: location.latlng.lng,\n\t\t\t\t\tlocationRadius: kDefaultLocationRadius\n\t\t\t\t});\n\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tlocationString: location.description,\n\t\t\t\t\tshowGeocodeSearchResults: false,\n\t\t\t\t\tlocationInfo: locationInfo\n\t\t\t\t});\n\t\t\t},\n\t\t\tonGeoSearchFocus: function onGeoSearchFocus() {\n\t\t\t\tif (this.get('locationString.length') >= kAddressSearchMinLength) {\n\t\t\t\t\tEmber.run.debounce(this, this.addressSearch, kAddressSearchDebounce);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonGeoSearchBlur: function onGeoSearchBlur() {\n\t\t\t\tthis.set('showGeocodeSearchResults', false);\n\t\t\t},\n\t\t\tmouseEnterGeoSearchResult: function mouseEnterGeoSearchResult(location) {\n\t\t\t\tthis.set('_hoverLocation', location);\n\t\t\t},\n\t\t\tmouseLeaveGeoSearchResult: function mouseLeaveGeoSearchResult() {\n\t\t\t\tthis.set('_hoverLocation', null);\n\t\t\t},\n\t\t\tsetTileProvider: function setTileProvider(tileProvider) {\n\t\t\t\tthis.set('_tileProvider', tileProvider);\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/*\n  * based on https://github.com/kartena/Leaflet.EditableHandlers\n  *\n  * L.CircleEditor is an extension of L.Circle, just to add the edition part (remember, radius in meters).\n  */\n\tL.CircleEditor = L.Circle.extend({\n\t\toptions: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects\n\t\t\ticon: new L.DivIcon({\n\t\t\t\ticonSize: new L.Point(8, 8),\n\t\t\t\tclassName: 'leaflet-div-icon leaflet-editing-icon'\n\t\t\t}),\n\n\t\t\textendedIconClass: 'extend-icon',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tstroke: true,\n\t\t\tcolor: '#30aeef', // $busy-color-1\n\t\t\topacity: 0.8,\n\t\t\tweight: 1,\n\t\t\tfill: true,\n\t\t\tfillOpacity: 0.5\n\t\t},\n\n\t\tonAdd: function onAdd(map) {\n\t\t\tL.Path.prototype.onAdd.call(this, map);\n\t\t\tthis.addHooks();\n\t\t},\n\t\tonRemove: function onRemove(map) {\n\t\t\tthis.removeHooks();\n\t\t\tL.Path.prototype.onRemove.call(this, map);\n\t\t},\n\t\taddHooks: function addHooks() {\n\t\t\tif (this._map) {\n\t\t\t\tif (!this._markerGroup) {\n\t\t\t\t\tthis._initMarkers();\n\t\t\t\t}\n\t\t\t\tthis._map.addLayer(this._markerGroup);\n\t\t\t}\n\t\t},\n\t\tremoveHooks: function removeHooks() {\n\t\t\tif (this._map) {\n\t\t\t\tthis._map.removeLayer(this._markerGroup);\n\t\t\t\tdelete this._markerGroup;\n\t\t\t\tdelete this._markers;\n\t\t\t}\n\t\t},\n\t\tupdateMarkers: function updateMarkers() {\n\t\t\tthis._markerGroup.clearLayers();\n\t\t\tthis._initMarkers();\n\t\t},\n\t\t_initMarkers: function _initMarkers() {\n\t\t\tthis._markerGroup = new L.LayerGroup();\n\t\t\tthis._markers = [];\n\t\t\tthis._createCenterMarker();\n\t\t\tthis._createResizeMarker();\n\t\t},\n\t\t_createCenterMarker: function _createCenterMarker() {\n\t\t\tvar markerCenter = this._createMarker(this._latlng, 0, true);\n\n\t\t\t// must be this._markers[0];\n\t\t\tthis._markers[0] = markerCenter;\n\t\t},\n\t\t_createResizeMarker: function _createResizeMarker() {\n\t\t\tvar circleBounds = this.getBounds();\n\t\t\tvar center = circleBounds.getCenter();\n\t\t\tvar neCoord = circleBounds.getNorthEast();\n\t\t\tvar northCenterCoord = new L.LatLng(center.lat, neCoord.lng, true);\n\t\t\tvar markerNorthCenter = this._createMarker(northCenterCoord, 1);\n\n\t\t\t// must be this._markers[1];\n\t\t\tthis._markers[1] = markerNorthCenter;\n\t\t},\n\t\t_createMarker: function _createMarker(latlng, index) {\n\t\t\tvar isCenter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\tvar options = {\n\t\t\t\tdraggable: true,\n\t\t\t\ticon: this.options.icon\n\t\t\t};\n\n\t\t\tvar marker = new L.Marker(latlng, options);\n\n\t\t\t// these have to be set on the marker object, not in the options\n\t\t\tmarker._origLatLng = latlng;\n\t\t\tmarker._index = index;\n\t\t\tmarker._isCenter = isCenter;\n\n\t\t\t// the dragging handle is disabled\n\t\t\tif (isCenter && !this.options.draggable) {\n\t\t\t\treturn marker;\n\t\t\t} else if (!isCenter && !this.options.resizable) {\n\t\t\t\t// the resizing handle is disabled\n\t\t\t\treturn marker;\n\t\t\t}\n\n\t\t\tif (isCenter) {\n\t\t\t\tmarker.on('drag', this._onCenterMove, this).on('dragend', this._onCenterMoveEnd, this);\n\t\t\t} else {\n\t\t\t\tmarker.on('drag', this._onMarkerDrag, this).on('dragend', this._onResizeEnd, this);\n\t\t\t}\n\n\t\t\tmarker.on('dragend', this._fireEdit, this).on('mouseover', this._onMouseOver, this).on('mouseout', this._onMouseOut, this);\n\n\t\t\tthis._markerGroup.addLayer(marker);\n\t\t\treturn marker;\n\t\t},\n\t\t_onMouseOver: function _onMouseOver(e) {\n\t\t\tvar target = e.target;\n\t\t\tvar icon = target._icon;\n\t\t\tvar classValues = icon.getAttribute(\"class\");\n\n\t\t\t//icon.setAttribute(\"class\", \"extend-icon \" + classValues);\n\t\t\ticon.setAttribute(\"class\", this.options.extendedIconClass + \" \" + classValues);\n\t\t},\n\t\t_onMouseOut: function _onMouseOut(e) {\n\t\t\tvar target = e.target;\n\t\t\tvar icon = target._icon;\n\t\t\tvar classValues = icon.getAttribute(\"class\");\n\n\t\t\t//icon.setAttribute(\"class\", classValues.replace(\"extend-icon\", \"\"));\n\t\t\ticon.setAttribute(\"class\", classValues.replace(this.options.extendedIconClass, \"\"));\n\t\t},\n\t\t_fireEdit: function _fireEdit() {\n\t\t\tthis.fire('edit');\n\t\t},\n\t\t_onResizeEnd: function _onResizeEnd() {\n\t\t\tthis.fire('resizeend');\n\t\t},\n\t\t_onCenterMove: function _onCenterMove(e) {\n\t\t\tvar marker = e.target;\n\t\t\tL.Util.extend(marker._origLatLng, marker._latlng);\n\n\t\t\tvar mm = this._markers[1];\n\t\t\tmm.setOpacity(0.1);\n\n\t\t\tthis.redraw();\n\t\t\tthis.fire('drag');\n\t\t},\n\t\t_onCenterMoveEnd: function _onCenterMoveEnd() {\n\t\t\t//now resetting the side point\n\t\t\tvar circleBounds = this.getBounds();\n\t\t\tvar center = circleBounds.getCenter();\n\t\t\tvar neCoord = circleBounds.getNorthEast();\n\t\t\tvar northCenterCoord = new L.LatLng(center.lat, neCoord.lng, true);\n\t\t\tvar mm = this._markers[1];\n\n\t\t\tmm.setLatLng(northCenterCoord);\n\t\t\tmm.setOpacity(1);\n\n\t\t\tthis.fire('dragend');\n\t\t},\n\t\t_onMarkerDrag: function _onMarkerDrag(e) {\n\t\t\tvar marker = e.target;\n\t\t\tvar center = this._markers[0].getLatLng();\n\t\t\tvar axis = marker._latlng;\n\t\t\tvar distance = Math.floor(center.distanceTo(axis));\n\n\t\t\tthis.setRadius(distance);\n\t\t\tthis.redraw();\n\t\t\tthis.fire('resize');\n\t\t}\n\t});\n});","define('busy-app/components/busy-map-locations', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-map-locations'],\n\n\t\t/** public property list */\n\t\tmap: null,\n\t\tmapMarkers: null,\n\t\tmapAutocomplete: null,\n\t\tcanEdit: false,\n\t\tlocationsInfo: null,\n\t\tselectedEmployees: null,\n\n\t\tactiveInfoWindow: null,\n\n\t\tmodel: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.initializer();\n\t\t},\n\n\n\t\t/**\n   * inititalizes the Map\n   *\n   * @private\n   * @method initializer\n   * @returns {void}\n   */\n\t\tinitializer: Ember.observer('model', 'model.length', function () {\n\t\t\tif (this.get('model.length') > 0) {\n\t\t\t\tthis.loadMap(this.get('model'));\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Loads the Map based on info\n   * from locationsInfo. If no locationsInfo\n   * it will load the default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadMap\n   * @returns {void}\n   */\n\t\tloadMap: function loadMap(locations) {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.$('#map-canvas') && this.$('#map-canvas').length > 0 && !Ember.isNone(locations) && locations.get('length') > 0) {\n\t\t\t\tvar markers = [];\n\t\t\t\tlocations.forEach(function (item) {\n\t\t\t\t\tvar obj = _this.createLocationObject(item);\n\t\t\t\t\tmarkers.pushObject(obj);\n\t\t\t\t});\n\t\t\t\tthis.set('mapMarkers', markers);\n\t\t\t\tthis.loadMapByLocation(markers);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Creates a location object from a timeEntry\n   *\n   * @public\n   * @method createLocationObject\n   * @param location {object} The timeEntry to get locations on\n   * @returns {obj}\n   */\n\t\tcreateLocationObject: function createLocationObject(location) {\n\t\t\tvar locationType = '';\n\t\t\tvar clockType = '';\n\t\t\tvar timeStr = '';\n\n\t\t\tif (!Ember.isNone(location.get('startTimeEntry.id'))) {\n\t\t\t\ttimeStr = _utils.Time.date(location.get('startTimeEntry.startTime')).format('h:mm A');\n\t\t\t\tlocationType = 'startLocation';\n\t\t\t\tclockType = 'Clocked In @ ';\n\t\t\t} else if (!Ember.isNone(location.get('endTimeEntry.id'))) {\n\t\t\t\ttimeStr = _utils.Time.date(location.get('endTimeEntry.endTime')).format('h:mm A');\n\t\t\t\tlocationType = 'endLocation';\n\t\t\t\tclockType = 'Clocked Out @ ';\n\t\t\t} else if (!Ember.isNone(location.get('breakStart'))) {\n\t\t\t\ttimeStr = _utils.Time.date(location.get('breakStart.startTime')).format('h:mm A');\n\t\t\t\tlocationType = 'breakStartLocation';\n\t\t\t\tclockType = 'Break started @ ';\n\t\t\t} else if (!Ember.isNone(location.get('breakEnd'))) {\n\t\t\t\ttimeStr = _utils.Time.date(location.get('breakEnd.endTime')).format('h:mm A');\n\t\t\t\tlocationType = 'breakEndLocation';\n\t\t\t\tclockType = 'Break ended @ ';\n\t\t\t}\n\n\t\t\tvar obj = {\n\t\t\t\timage: location.get('member.imageThumbUrl'),\n\t\t\t\tname: location.get('member.fullName'),\n\t\t\t\tlat: location.get('latitude'),\n\t\t\t\tlng: location.get('longitude'),\n\t\t\t\tlocationType: locationType,\n\t\t\t\tclockString: clockType + timeStr\n\t\t\t};\n\t\t\treturn obj;\n\t\t},\n\n\n\t\t/**\n   * Loads the Map based on params\n   *\n   * @public\n   * @method loadMapByLocation\n   * @param latitude {number} The latitude of the location\n   * @param longitude {number} The longitude of the location\n   * @param radius {number} The accuracy or radius of location.\n   * @returns {void}\n   */\n\t\tloadMapByLocation: function loadMapByLocation(markersObj) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar noLocation = true;\n\t\t\tif (markersObj.length > 0) {\n\t\t\t\tthis.clearMap();\n\n\t\t\t\tvar google = window.google;\n\t\t\t\tvar container = this.$('#map-canvas').get(0);\n\t\t\t\tvar bounds = new google.maps.LatLngBounds();\n\n\t\t\t\t// var mapCenter = this.getMapCenter(markersObj.objectAt(0));\n\t\t\t\t// var mapZoom = this.getMapZoom();\n\n\t\t\t\t//Map Options\n\t\t\t\tvar options = {\n\t\t\t\t\t// zoom: mapZoom,\n\t\t\t\t\t// center: mapCenter,\n\t\t\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t\t\t\t};\n\n\t\t\t\tvar map = new google.maps.Map(container, options);\n\n\t\t\t\tthis.set('map', map);\n\n\t\t\t\tmarkersObj.forEach(function (mapMarker) {\n\t\t\t\t\tvar position = new window.google.maps.LatLng(mapMarker.lat, mapMarker.lng);\n\t\t\t\t\tbounds.extend(position);\n\t\t\t\t\tthis.createMarker(mapMarker);\n\t\t\t\t}, this);\n\n\t\t\t\tmap.fitBounds(bounds);\n\t\t\t\tnoLocation = false;\n\n\t\t\t\t// add listener to close any open InfoWindow when the map is clicked\n\t\t\t\tmap.addListener('click', function () {\n\t\t\t\t\t_this2.closeActiveInfoWindow();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.set('noLocation', noLocation);\n\t\t},\n\t\tclearMap: function clearMap() {\n\t\t\tvar map = this.get('map');\n\t\t\tvar container = this.$('#map-canvas');\n\n\t\t\tif (!Ember.isNone(map)) {\n\t\t\t\tthis.set('map', null);\n\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(window);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(document);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(container[0]);\n\n\t\t\t\tcontainer.children().detach();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Loads the Default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadDefaultMap\n   * @returns {void}\n   */\n\t\tloadDefaultMap: function loadDefaultMap() {\n\t\t\tvar latitude = 37.100999;\n\t\t\tvar longitude = -113.538680;\n\t\t\tthis.loadMapByLocation(latitude, longitude);\n\t\t},\n\n\n\t\t/**\n   * Finds the center of the gps locations array and returns the latlng\n   * as the center of the map.\n   *\n   * TODO:\n   * Finish this someday!!!\n   *\n   * @public\n   * @method getMapCenter\n   * @param marker {object} The first location object until this is improved\n   * @returns {Google.LatLng}\n   */\n\t\tgetMapCenter: function getMapCenter(marker) {\n\t\t\treturn new window.google.maps.LatLng(marker.lat, marker.lng);\n\t\t},\n\t\tgetMapZoom: function getMapZoom() {\n\t\t\treturn 17;\n\t\t},\n\t\tcreateMarker: function createMarker(mapMarker) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar map = this.get('map');\n\t\t\tvar marker = new window.google.maps.Marker({ //jshint ignore:line\n\t\t\t\tmap: map,\n\t\t\t\tposition: new window.google.maps.LatLng(mapMarker.lat, mapMarker.lng),\n\t\t\t\tanimation: window.google.maps.Animation.DROP,\n\t\t\t\ticon: this.setMarkerType(mapMarker.locationType),\n\t\t\t\tshape: {\n\t\t\t\t\tcoords: [1, 1, 1, 30, 20, 30, 30, 1],\n\t\t\t\t\ttype: 'poly'\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar infoWindow = new window.google.maps.InfoWindow({\n\t\t\t\tcontent: this.markerHTML(mapMarker.image, mapMarker.name, mapMarker.clockString)\n\t\t\t});\n\n\t\t\tmarker.addListener('click', function () {\n\t\t\t\t_this3.closeActiveInfoWindow();\n\n\t\t\t\tinfoWindow.open(map, marker);\n\t\t\t\t_this3.set('activeInfoWindow', infoWindow);\n\t\t\t});\n\t\t},\n\t\tmarkerHTML: function markerHTML(imageUrl, memberName, clockString) {\n\t\t\timageUrl = !Ember.isNone(imageUrl) ? imageUrl : '/images/imageplaceholder.png';\n\n\t\t\treturn '<div class=\"map-marker-info\">' + '<span class=\"image\">' + '<img src=\"' + imageUrl + '\">' + '</span>' + '<span class=\"info\">' + '<h3 class=\"name\">' + memberName + '</h3>' + '<p>' + clockString + '</p>' + '</span>' + '</div>';\n\t\t},\n\t\tsetMarkerType: function setMarkerType(locationType) {\n\t\t\tvar image = {\n\t\t\t\turl: '/images/icons/map_icons_sprite_22x32.png',\n\t\t\t\tsize: new window.google.maps.Size(22, 32),\n\t\t\t\tanchor: new window.google.maps.Point(10, 32)\n\t\t\t};\n\n\t\t\tif (locationType === 'startLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(23, 0);\n\t\t\t} else if (locationType === 'endLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(0, 0);\n\t\t\t} else if (locationType === 'breakStartLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(45, 0);\n\t\t\t} else if (locationType === 'breakEndLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(67, 0);\n\t\t\t} else {\n\t\t\t\t(true && !(false) && Ember.assert('Location Id is Invalid'));\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn image;\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.loadMap(this.get('model'));\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.clearMap();\n\t\t},\n\t\tcloseActiveInfoWindow: function closeActiveInfoWindow() {\n\t\t\tvar activeInfoWindow = this.get('activeInfoWindow');\n\n\t\t\tif (!Ember.isNone(activeInfoWindow)) {\n\t\t\t\treturn activeInfoWindow.close();\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-map-time-entry-locations', ['exports', '@busy-web/utils/time', '@busy-web/utils/loc'], function (exports, _time, _loc) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-map-time-entry-locations', 'c-busy-map'],\n\n\t\t/** public property list */\n\t\tmap: null,\n\t\t$mapCanvas: null,\n\t\tmapAutocomplete: null,\n\t\tcanEdit: false,\n\t\ttimeEntry: null,\n\t\tfilter: null,\n\t\tactiveInfoWindow: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.initializer();\n\t\t},\n\n\n\t\t/**\n   * inititalizes the Map\n   *\n   * @private\n   * @method initializer\n   * @returns {void}\n   */\n\t\tinitializer: Ember.observer('timeEntry.startLocation.id', 'timeEntry.endLocation.id', 'timeEntry.isStartLocationValid', 'timeEntry.isEndLocationValid', 'timeEntry.timeEntryBreaks.@each.startLocationCreatedOn', 'timeEntry.timeEntryBreaks.@each.endLocationCreatedOn', 'timeEntry.timeEntryBreaks.@each.isStartLocationValid', 'timeEntry.timeEntryBreaks.@each.isEndLocationValid', 'filter', function () {\n\t\t\tthis.loadMap();\n\t\t}),\n\n\t\t/**\n   * Loads the Map based on info\n   * from locationsInfo. If no locationsInfo\n   * it will load the default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadMap\n   * @returns {void}\n   */\n\t\tloadMap: function loadMap() {\n\t\t\tvar $mapCanvas = this.$('#map-canvas');\n\n\t\t\tif ($mapCanvas && $mapCanvas.length > 0 && !Ember.isNone(this.get('timeEntry'))) {\n\t\t\t\tthis.set('$mapCanvas', $mapCanvas);\n\t\t\t\tvar markers = this.createLocationObjects();\n\t\t\t\tthis.loadMapByLocation(markers);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Creates a location object from a timeEntry\n   *\n   * @public\n   * @method createLocationObjects\n   * @param timeEntry {object} The timeEntry to get locations on\n   * @returns {obj}\n   */\n\t\tcreateLocationObjects: function createLocationObjects() {\n\t\t\tvar _this = this;\n\n\t\t\tvar markers = [];\n\t\t\tvar lats = [];\n\t\t\tvar longs = [];\n\t\t\tvar filter = this.get('filter');\n\n\t\t\tif (!Ember.isNone(this.get('timeEntry.startLocation')) && this.get('timeEntry.isStartLocationValid')) {\n\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(this.get('timeEntry.startLocation.id')) !== -1) {\n\t\t\t\t\tvar timeStr = _time.default.date(this.get('timeEntry.startTime')).format('h:mm A');\n\t\t\t\t\tmarkers.pushObject(this.createMarkerObj(this.get('timeEntry.startLocation'), 'startLocation', (0, _loc.default)('Clocked In @ '), timeStr, lats, longs));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('timeEntry.endLocation')) && this.get('timeEntry.isEndLocationValid')) {\n\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(this.get('timeEntry.endLocation.id')) !== -1) {\n\t\t\t\t\tvar _timeStr = _time.default.date(this.get('timeEntry.endTime')).format('h:mm A');\n\t\t\t\t\tmarkers.pushObject(this.createMarkerObj(this.get('timeEntry.endLocation'), 'endLocation', (0, _loc.default)('Clocked Out @ '), _timeStr, lats, longs));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.get('timeEntry.timeEntryBreaks').forEach(function (model) {\n\t\t\t\tif (!Ember.isNone(model.get('startLocation')) && model.get('isStartLocationValid')) {\n\t\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(model.get('startLocation.id')) !== -1) {\n\t\t\t\t\t\tvar _timeStr2 = _time.default.date(model.get('startTime')).format('h:mm A');\n\t\t\t\t\t\tmarkers.pushObject(_this.createMarkerObj(model.get('startLocation'), 'breakStartLocation', (0, _loc.default)('Break start @ '), _timeStr2, lats, longs));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(model.get('endLocation')) && model.get('isEndLocationValid')) {\n\t\t\t\t\tif (Ember.isEmpty(filter) || filter.indexOf(model.get('endLocation.id')) !== -1) {\n\t\t\t\t\t\tvar _timeStr3 = _time.default.date(model.get('endTime')).format('h:mm A');\n\t\t\t\t\t\tmarkers.pushObject(_this.createMarkerObj(model.get('endLocation'), 'breakEndLocation', (0, _loc.default)('Break end @ '), _timeStr3, lats, longs));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn markers;\n\t\t},\n\t\tcreateMarkerObj: function createMarkerObj(location, locationType, clockType, timeStr, lats, longs) {\n\t\t\tvar lat = this.adjustLatitude(lats, location.get('latitude'));\n\t\t\tvar lng = this.adjustLongitude(longs, location.get('longitude'));\n\n\t\t\treturn Ember.Object.create({\n\t\t\t\timage: this.get('timeEntry.member.imageThumbUrl'),\n\t\t\t\tname: this.get('timeEntry.member.fullName'),\n\t\t\t\tlat: lat,\n\t\t\t\tlng: lng,\n\t\t\t\tlocationType: locationType,\n\t\t\t\tclockString: clockType + timeStr\n\t\t\t});\n\t\t},\n\t\tadjustLatitude: function adjustLatitude(lats, lat) {\n\t\t\tif (lats.indexOf(lat) === -1) {\n\t\t\t\tlats.push(lat);\n\t\t\t} else {\n\t\t\t\tlat = this.adjustLatitude(lats, lat + 0.000005);\n\t\t\t}\n\t\t\treturn lat;\n\t\t},\n\t\tadjustLongitude: function adjustLongitude(longs, lng) {\n\t\t\tif (longs.indexOf(lng) === -1) {\n\t\t\t\tlongs.push(lng);\n\t\t\t} else {\n\t\t\t\tlng = this.adjustLongitude(longs, lng + 0.000005);\n\t\t\t}\n\t\t\treturn lng;\n\t\t},\n\n\n\t\t/**\n   * Loads the Map based on params\n   *\n   * @public\n   * @method loadMapByLocation\n   * @param latitude {number} The latitude of the location\n   * @param longitude {number} The longitude of the location\n   * @param radius {number} The accuracy or radius of location.\n   * @returns {void}\n   */\n\t\tloadMapByLocation: function loadMapByLocation(markersObj) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar noLocation = true;\n\t\t\tif (markersObj.length > 0) {\n\t\t\t\tthis.clearMap();\n\n\t\t\t\tvar google = window.google;\n\t\t\t\tvar bounds = new google.maps.LatLngBounds();\n\t\t\t\tvar container = this.get('$mapCanvas').get(0);\n\t\t\t\t//var mapCenter = this.getMapCenter(markersObj.objectAt(0));\n\t\t\t\t//var mapZoom = this.getMapZoom();\n\n\t\t\t\t//Map Options\n\t\t\t\tvar options = {\n\t\t\t\t\t//zoom: mapZoom,\n\t\t\t\t\t//center: mapCenter,\n\t\t\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP,\n\t\t\t\t\tscrollWHeelZoom: 'center'\n\t\t\t\t};\n\n\t\t\t\tvar map = new google.maps.Map(container, options);\n\n\t\t\t\tthis.set('map', map);\n\n\t\t\t\tmarkersObj.forEach(function (mapMarker) {\n\t\t\t\t\tvar position = new window.google.maps.LatLng(mapMarker.lat, mapMarker.lng);\n\t\t\t\t\tbounds.extend(position);\n\t\t\t\t\t_this2.createMarker(mapMarker);\n\t\t\t\t});\n\n\t\t\t\tmap.fitBounds(bounds);\n\t\t\t\tnoLocation = false;\n\n\t\t\t\t// add listener to close any open InfoWindow when the map is clicked\n\t\t\t\tmap.addListener('click', function () {\n\t\t\t\t\t_this2.closeActiveInfoWindow();\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.set('noLocation', noLocation);\n\t\t},\n\t\tclearMap: function clearMap() {\n\t\t\tvar map = this.get('map');\n\t\t\tvar container = this.get('$mapCanvas');\n\n\t\t\tif (!Ember.isNone(map)) {\n\t\t\t\tthis.set('map', null);\n\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(window);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(document);\n\t\t\t\twindow.google.maps.event.clearInstanceListeners(container[0]);\n\n\t\t\t\tcontainer.children().detach();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Loads the Default Map which is\n   * busybusy office building.\n   *\n   * @public\n   * @method loadDefaultMap\n   * @returns {void}\n   */\n\t\tloadDefaultMap: function loadDefaultMap() {\n\t\t\tvar latitude = 37.100999;\n\t\t\tvar longitude = -113.538680;\n\n\t\t\tthis.loadMapByLocation(latitude, longitude);\n\t\t},\n\n\n\t\t/**\n   * Finds the center of the gps locations array and returns the latlng\n   * as the center of the map.\n   *\n   * TODO:\n   * Finish this someday!!!\n   *\n   * @public\n   * @method getMapCenter\n   * @param marker {object} The first location object until this is improved\n   * @returns {Google.LatLng}\n   */\n\t\tgetMapCenter: function getMapCenter(marker) {\n\t\t\treturn new window.google.maps.LatLng(marker.lat, marker.lng);\n\t\t},\n\t\tgetMapZoom: function getMapZoom() {\n\t\t\treturn 12;\n\t\t},\n\t\tcreateMarker: function createMarker(mapMarker) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar map = this.get('map');\n\t\t\tvar marker = new window.google.maps.Marker({ //jshint ignore:line\n\t\t\t\tmap: map,\n\t\t\t\tposition: new window.google.maps.LatLng(mapMarker.lat, mapMarker.lng),\n\t\t\t\tanimation: window.google.maps.Animation.DROP,\n\t\t\t\ticon: this.setMarkerType(mapMarker.locationType),\n\t\t\t\tshape: {\n\t\t\t\t\tcoords: [1, 1, 1, 30, 20, 30, 30, 1],\n\t\t\t\t\ttype: 'poly'\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar infoWindow = new window.google.maps.InfoWindow({\n\t\t\t\tcontent: this.markerHTML(mapMarker.image, mapMarker.name, mapMarker.clockString)\n\t\t\t});\n\n\t\t\tmarker.addListener('click', function () {\n\t\t\t\t_this3.closeActiveInfoWindow();\n\n\t\t\t\tinfoWindow.open(map, marker);\n\t\t\t\t_this3.set('activeInfoWindow', infoWindow);\n\t\t\t});\n\t\t},\n\t\tmarkerHTML: function markerHTML(imageUrl, memberName, clockString) {\n\t\t\timageUrl = !Ember.isNone(imageUrl) ? imageUrl : '/images/imageplaceholder.png';\n\n\t\t\treturn '<div class=\"map-marker-info\">' + '<span class=\"image\">' + '<img src=\"' + imageUrl + '\">' + '</span>' + '<span class=\"info\">' + '<h3 class=\"name\">' + memberName + '</h3>' + '<p>' + clockString + '</p>' + '</span>' + '</div>';\n\t\t},\n\t\tsetMarkerType: function setMarkerType(locationType) {\n\t\t\tvar image = {\n\t\t\t\turl: '/images/icons/map_icons_sprite_22x32.png',\n\t\t\t\tsize: new window.google.maps.Size(22, 32),\n\t\t\t\tanchor: new window.google.maps.Point(10, 32)\n\t\t\t};\n\n\t\t\tif (locationType === 'startLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(23, 0);\n\t\t\t} else if (locationType === 'endLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(0, 0);\n\t\t\t} else if (locationType === 'breakStartLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(45, 0);\n\t\t\t} else if (locationType === 'breakEndLocation') {\n\t\t\t\timage.origin = new window.google.maps.Point(67, 0);\n\t\t\t} else {\n\t\t\t\t(true && !(false) && Ember.assert('Location Id is Invalid'));\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn image;\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.loadMap();\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.clearMap();\n\t\t},\n\t\tcloseActiveInfoWindow: function closeActiveInfoWindow() {\n\t\t\tvar activeInfoWindow = this.get('activeInfoWindow');\n\n\t\t\tif (!Ember.isNone(activeInfoWindow)) {\n\t\t\t\treturn activeInfoWindow.close();\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-map', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-map'],\n\t\tclassNameBindings: ['canEdit:edit'],\n\n\t\t/** public property list */\n\t\tmap: null,\n\t\tmapMarkers: null,\n\t\tmapAutocomplete: null,\n\t\tcanEdit: false,\n\t\tlocationInfo: null,\n\t\terror: false,\n\t\tzoom: 15,\n\t\tshowRadius: false,\n\n\t\tmapInit: Date.now(),\n\n\t\tactions: {\n\t\t\tonLocationChange: function onLocationChange() {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\tthis.sendAction.apply(this, ['onLocationChange'].concat(_toConsumableArray(args)));\n\t\t\t}\n\t\t}\n\t});\n});","define(\"busy-app/components/busy-nav\", [\"exports\", \"@busy-web/utils\", \"busy-app/components/busy-notification-bar\", \"busy-app/utils/settings\"], function (exports, _utils, _busyNotificationBar, _settings) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kEmailVerificationGracePeriodInHours = 4;\n\n\t/**\n  * `Component/BusyNav`\n  *\n  * @class BusyNav\n  * @namespace Components\n  * @extends Component\n  * @uses Services.Store\n  * @uses Services.Analytics\n  * @uses Services.Auth\n  * @uses Services.Session\n  * @uses Services.Access\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\t// classNames: [\"busy-nav\"],\n\n\t\teventEmitter: Ember.inject.service(),\n\t\tdataStore: Ember.inject.service(\"data-store\"),\n\t\tstore: Ember.inject.service(\"store\"),\n\t\tanalytics: Ember.inject.service(\"analytics\"),\n\t\tauth: Ember.inject.service(\"auth\"),\n\t\tsession: Ember.inject.service(\"session\"),\n\t\taccess: Ember.inject.service(\"access\"),\n\t\tsubscription: Ember.inject.service(\"subscription\"),\n\t\tfeatures: Ember.inject.service(\"features\"),\n\t\trouter: Ember.inject.service(\"router\"),\n\t\tinterop: Ember.inject.service(\"interop\"),\n\t\tgraylog: Ember.inject.service(\"graylog\"),\n\n\t\tisReady: false,\n\n\t\tshowCover: false,\n\n\t\tisIndex: true,\n\t\tactiveLink: \"index\",\n\n\t\tshowCostCodesSplashScreen: false,\n\t\tshowEquipmentSplashScreen: false,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tthis.set(\"isReady\", true);\n\t\t\tif (window.BusyApp._application !== undefined) {\n\t\t\t\twindow.BusyApp._application.set(\"container\", this);\n\t\t\t}\n\n\t\t\tif (!/testing/.test(Ember.$(\"body\").attr(\"class\"))) {\n\t\t\t\tvar location = window.location.pathname.replace(/^\\/([^/]*)[#]?[\\s\\S]*$/, \"$1\");\n\t\t\t\tthis.setActiveMenu(location);\n\n\t\t\t\tthis.get(\"eventEmitter\").on(\"router\", \"transition\", function (route) {\n\t\t\t\t\treturn _this.setActiveMenu(route);\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar hideSideNav = this.get(\"features.reactMainApp\");\n\t\t\tif (hideSideNav) {\n\t\t\t\tthis.set(\"classNames\", [\"busy-nav\", \"hidden\"]);\n\t\t\t} else {\n\t\t\t\tthis.set(\"classNames\", [\"busy-nav\"]);\n\t\t\t}\n\n\t\t\tif (window.BusyApp.isMobile) {\n\t\t\t\tEmber.$(\"body\").addClass(\"mobile\");\n\t\t\t}\n\t\t},\n\n\n\t\tshowIntercom: Ember.computed(\"features.integrations/analytics\", function () {\n\t\t\treturn this.get(\"features.integrations/analytics\");\n\t\t}),\n\n\t\tshowReceptive: Ember.computed(\"features.integrations/receptive\", function () {\n\t\t\treturn this.get(\"features.integrations/receptive\");\n\t\t}),\n\n\t\tequipmentUrl: Ember.computed(\"session.isAuthenticated\", function () {\n\t\t\treturn _settings.default.get(\"equipment_url\") + \"?authorize=\" + window.btoa(this.get(\"session.data.authenticated.token\") + \":\" + this.get(\"session.data.authenticated.id\"));\n\t\t}),\n\n\t\t/**\n   * check for if the member should be able to see the employees section\n   *\n   * @private\n   * @property showEmployees\n   * @type boolean\n   */\n\t\tshowEmployees: Ember.computed(\"auth.authMemberPosition.id\", function () {\n\t\t\t// return true if the authMemberPosition is set and manageEmployees or manageTime or timeEvents or manageEmployeeGroups is true.\n\t\t\treturn !Ember.isNone(this.get(\"auth.authMemberPosition.id\")) && (this.get(\"auth.authMemberPosition.manageEmployees\") > 1 || // can manage employee models\n\t\t\tthis.get(\"auth.authMemberPosition.manageTime\") > 1 || // can manage time entries\n\t\t\tthis.get(\"auth.authMemberPosition.timeEvents\") > 1 || // can manage time events (clock in, clock out, ect.)\n\t\t\tthis.get(\"auth.authMemberPosition.manageEmployeeGroups\")); // can manage employee groups\n\t\t}),\n\n\t\t/**\n   * The list of organizations this member is authenticated with\n   *\n   * @private\n   * @property organizationList\n   * @type array\n   */\n\t\torganizationList: Ember.computed(\"accountList.[]\", function () {\n\t\t\t// if the accountList is set the return it otherwise return and empty array.\n\t\t\tif (!Ember.isEmpty(this.get(\"accountList\"))) {\n\t\t\t\treturn this.get(\"accountList\");\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\tuserImage: Ember.computed(\"auth.member.imageThumbUrl\", function () {\n\t\t\tvar image = this.get(\"auth.member.imageThumbUrl\");\n\t\t\tif (Ember.isNone(image)) {\n\t\t\t\timage = \"/images/imageplaceholder.png\";\n\t\t\t}\n\t\t\treturn Ember.String.htmlSafe(\"background-image: url(\" + image + \");\");\n\t\t}),\n\n\t\taccountSettingsBadge: Ember.computed(\"needsEmailVerification\", function () {\n\t\t\tvar badgeCount = 0;\n\n\t\t\tif (this.get(\"needsEmailVerification\")) {\n\t\t\t\tbadgeCount++;\n\t\t\t}\n\n\t\t\treturn badgeCount;\n\t\t}),\n\n\t\tcompanySettingsBadge: Ember.computed(\"showFreeTrialExpirationWarning\", \"subscription.subscriptionStatus.{isPastDue,isLockout}\", function () {\n\t\t\tvar badgeCount = 0;\n\n\t\t\t// show warning if free trial is expired and the warning hasn't been dismissed previously\n\t\t\tif (!(0, _busyNotificationBar.isDismissed)(\"free-trial-expired\")) {\n\t\t\t\tbadgeCount += this.get(\"showFreeTrialExpirationWarning\") ? 1 : 0;\n\t\t\t}\n\n\t\t\t// show warning if account is past due\n\t\t\tbadgeCount += this.get(\"subscription.subscriptionStatus.isPastDue\") ? 1 : 0;\n\n\t\t\tbadgeCount += this.get(\"subscription.subscriptionStatus.isLockout\") ? 1 : 0;\n\n\t\t\treturn badgeCount;\n\t\t}),\n\n\t\tneedsEmailVerification: Ember.computed(\"auth.member.{id,verifiedEmail}\", \"subscription.subscriptionStatus.createdOn\", function () {\n\t\t\tvar isOwner = this.get(\"access\").isOwner(this.get(\"auth.member.id\"));\n\n\t\t\tif (isOwner && !this.get(\"auth.member.verifiedEmail\") && this.get(\"auth.member.emailVerificationRequired\") && !Ember.isNone(this.get(\"subscription.subscriptionStatus.createdOn\"))) {\n\t\t\t\t// subscriptionStatus.createdOn is a UTC date\n\t\t\t\tvar signupDate = _utils.Time.date(this.get(\"subscription.subscriptionStatus.createdOn\"));\n\t\t\t\tvar now = _utils.Time.date(_utils.Time.utcTimestamp());\n\t\t\t\tvar gracePeriodEnd = signupDate.clone().add(kEmailVerificationGracePeriodInHours, \"hours\");\n\n\t\t\t\treturn now.isAfter(gracePeriodEnd);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}),\n\n\t\tshowFreeTrialExpirationWarning: Ember.computed(\"subscription.subscriptionStatus.{isTrialEnded,userCanceled}\", \"isFreeTrialExpirationWarningDismissed\", function () {\n\t\t\treturn !this.get(\"isFreeTrialExpirationWarningDismissed\") && !this.get(\"subscription.subscriptionStatus.userCanceled\") && this.get(\"subscription.subscriptionStatus.isTrialEnded\");\n\t\t}),\n\n\t\t// Appears once a trial has started. Remains even after the trial expires.\n\t\t// Dissappears if the user is on free (unexpired), is on Pro, or has submitted a payment method.\n\t\tshowTrialRemaining: Ember.computed(\"subscription.{isFreeTrial,hasPaymentMethod}\", function () {\n\t\t\t// disable this feature\n\t\t\treturn false;\n\n\t\t\t// if (this.get('subscription.isFreeTrial') && !this.get('subscription.hasPaymentMethod')) {\n\t\t\t// \treturn true;\n\t\t\t// } else {\n\t\t\t// \treturn false;\n\t\t\t// }\n\t\t}),\n\n\t\tshowUpgradeToProFooter: Ember.computed(\"subscription.subscriptionStatus.{isFreeAccount,isFreeTrial,isFreeTrialUpgraded}\", function () {\n\t\t\treturn this.get(\"subscription.subscriptionStatus.isFreeAccount\") || this.get(\"subscription.subscriptionStatus.isFreeTrial\") && !this.get(\"subscription.subscriptionStatus.isFreeTrialUpgraded\");\n\t\t}),\n\n\t\t// show the `busy-nav-sticky-footer` section and add a `show-sticky-footer` to the main aside\n\t\tshowStickyFooter: Ember.computed.or(\"showTrialRemaining\", \"showUpgradeToProFooter\"),\n\n\t\tshowCostCodesNavItem: Ember.computed(\"features.costCodes\", \"auth.{member.positionId,organization.trackCostCode}\", function () {\n\t\t\tthis.get(\"auth.member.positionId\");\n\n\t\t\treturn this.showNavItemWithSplash(\"costCodes\", \"trackCostCode\", \"manageCostCodes\");\n\t\t}),\n\n\t\tshowEquipmentNavItem: Ember.computed(\"features.equipment\", \"auth.{member.positionId,organization.trackEquipment}\", function () {\n\t\t\tthis.get(\"auth.member.positionId\");\n\n\t\t\treturn this.showNavItemWithSplash(\"equipment\", \"trackEquipment\", \"manageEquipment\");\n\t\t}),\n\n\t\tshowReportsNavItem: Ember.computed(\"auth.member.positionId\", function () {\n\t\t\tvar access = this.get(\"access\");\n\t\t\tif (access.hasPermissionFor(\"viewAllActivityReport\") || access.hasPermissionFor(\"viewProjectExpenses\")) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t// all pro users should be able to see the scheduling section\n\t\tshowSchedulingNavItem: Ember.computed.alias(\"features.scheduling\"),\n\n\t\tshowNavItemWithSplash: function showNavItemWithSplash(featureKey, settingKey, permissionKey) {\n\t\t\tvar access = this.get(\"access\");\n\n\t\t\tif (!this.get(\"features\").isEnabled(featureKey)) {\n\t\t\t\t// never show if the feature is disabled\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tvar canEnableFeature = access.hasPermissionFor(permissionKey) && access.hasPermissionFor(\"manageCompanySettings\");\n\t\t\t\tvar canViewFeature = access.hasPermissionFor(permissionKey) && this.get(\"auth.organization\").get(settingKey);\n\n\t\t\t\treturn canEnableFeature || canViewFeature;\n\t\t\t}\n\t\t},\n\t\tcreateAccountList: function createAccountList() {\n\t\t\tvar accounts = this.get(\"dataStore\").getAuthAccounts();\n\t\t\tthis.set(\"accountList\", accounts.sortBy(\"organizationName\"));\n\t\t},\n\n\n\t\t/**\n   * Change a view from one section to another.\n   *\n   * This handles the transition with the routes and setting the correct\n   * boolean values to highlight the section that is active.\n   *\n   * @public\n   * @method changeView\n   * @param [section='index'] {string} The section to transition to.\n   * @param [noTransition=false] {boolean} True to stop a route transition from triggering.\n   * @param [target] {string} a URL hash to navigate to after the route transition completes, for example, to get inside a tab `/company-settings?bc_tab=subscription`\n   */\n\t\tchangeView: function changeView() {\n\t\t\tvar section = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"index\";\n\t\t\tvar noTransition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\t\tvar target = arguments[2];\n\n\t\t\t// set isViewChanging flag\n\t\t\tthis.set(\"isViewChanging\", true);\n\t\t\tvar queryParams = {};\n\n\t\t\t// if not noTransition then transitionTo the new section.\n\t\t\tif (!noTransition) {\n\t\t\t\t// track the section change click\n\t\t\t\tthis.trackClick(section);\n\n\t\t\t\tif (section === \"index\" || section === \"company-settings\") {\n\t\t\t\t\tqueryParams = { bc_tab: null };\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(target)) {\n\t\t\t\t\tqueryParams = { bc_tab: target };\n\t\t\t\t\t//this.set('targetTab', target);\n\t\t\t\t}\n\n\t\t\t\tvar currentRoute = this.get(\"router.currentRouteName\");\n\t\t\t\tif (currentRoute === section) {\n\t\t\t\t\treturn this.get(\"router\").replaceWith(section, { queryParams: queryParams });\n\t\t\t\t}\n\n\t\t\t\t// lookup the main app route and transitionTo the new section.\n\t\t\t\treturn this.get(\"router\").transitionTo(section, { queryParams: queryParams });\n\t\t\t} else {\n\t\t\t\t// set the isViewChanging flag to false.\n\t\t\t\tthis.set(\"isViewChanging\", false);\n\t\t\t}\n\n\t\t\t// close the menu\n\t\t\tEmber.$(\"body\").removeClass(\"left-nav-open\");\n\t\t},\n\t\tsetActiveMenu: function setActiveMenu(path) {\n\t\t\tvar section = path.split(\".\")[0];\n\t\t\tvar places = [\"index\", \"employees\", \"project\", \"cost-code\", \"report\", \"company-settings\", \"account-settings\", \"scheduling\", \"map\"];\n\n\t\t\t// if (!isNone(this.get('targetTab'))) {\n\t\t\t//   window.location.hash = `#${this.get('targetTab')}`;\n\t\t\t// }\n\n\t\t\tif (places.indexOf(section) !== -1) {\n\t\t\t\t// save the original section string.\n\t\t\t\tvar activeLink = section;\n\n\t\t\t\t// set all active sections to false.\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tisIndex: false,\n\t\t\t\t\tisEmployees: false,\n\t\t\t\t\tisProject: false,\n\t\t\t\t\tisConnection: false,\n\t\t\t\t\tisReport: false,\n\t\t\t\t\tisCompanySettings: false,\n\t\t\t\t\tisAccountSettings: false,\n\t\t\t\t\tisCostCode: false,\n\t\t\t\t\tisCompanySettingsSubscriptionEdit: false,\n\t\t\t\t\tisScheduling: false,\n\t\t\t\t\tisMap: false\n\t\t\t\t});\n\n\t\t\t\t// set the new active section to true.\n\t\t\t\tthis.set(\"is\" + section.classify(), true);\n\n\t\t\t\t// save the section to the activeLink property\n\t\t\t\tthis.set(\"activeLink\", activeLink);\n\t\t\t}\n\n\t\t\t// set the isViewChanging flag to false.\n\t\t\tthis.set(\"isViewChanging\", false);\n\t\t},\n\t\tlogout: function logout() {\n\t\t\tthis.send(\"closeInteropWindows\");\n\t\t\treturn this.get(\"auth\").invalidateSession();\n\t\t},\n\t\ttrackClick: function trackClick(section) {\n\t\t\t// send tracking info for subscription-edit section only.\n\t\t\tif (section === \"company-settings.subscription-edit\") {\n\t\t\t\t// get browser info.\n\t\t\t\tvar browser = _utils.Browser.detect();\n\n\t\t\t\t// send analytics event\n\t\t\t\tthis.get(\"analytics\").addEvent(60, {\n\t\t\t\t\tos: browser.type,\n\t\t\t\t\tos_version: browser.version,\n\t\t\t\t\tdevice: browser.osType + \" \" + browser.osVersion + \" - \" + browser.type + \" \" + browser.version,\n\t\t\t\t\telement: \"Upgrade:LeftNav\"\n\t\t\t\t});\n\t\t\t}\n\t\t\t//graylog tracking\n\t\t\tif (section === \"cost-code\") {\n\t\t\t\tthis.graylogViewedCostCodeSection();\n\t\t\t} else if (section === \"project\") {\n\t\t\t\tthis.graylogViewedProjectSection();\n\t\t\t} else if (section === \"employees\") {\n\t\t\t\tthis.graylogViewedEmployeeSection();\n\t\t\t} else if (section === \"map\") {\n\t\t\t\tthis.graylogViewedUniversalMap();\n\t\t\t} else if (section === \"scheduling\") {\n\t\t\t\tthis.graylogViewedAdmingScheduling();\n\t\t\t}\n\t\t},\n\n\n\t\tstartTouch: null,\n\t\tendTouch: null,\n\t\ttouchStart: function touchStart(event) {\n\t\t\tthis.set(\"startTouch\", event.touches[0]);\n\t\t\tthis.set(\"startEvent\", event);\n\t\t},\n\t\ttouchMove: function touchMove(event) {\n\t\t\tthis.set(\"endTouch\", event.touches[0]);\n\t\t},\n\t\ttouchEnd: function touchEnd() {\n\t\t\tvar action = {};\n\t\t\tvar start = this.get(\"startTouch\");\n\t\t\tvar end = this.get(\"endTouch\");\n\n\t\t\tif (!Ember.isNone(start) && !Ember.isNone(end)) {\n\t\t\t\tvar xChange = Math.abs(end.pageX - start.pageX);\n\t\t\t\tvar yChange = Math.abs(end.pageY - start.pageY);\n\t\t\t\tvar deviation = (xChange + yChange) / 2;\n\n\t\t\t\tif (xChange > deviation) {\n\t\t\t\t\tif (end.pageX > start.pageX) {\n\t\t\t\t\t\taction.action = \"slide-right\";\n\t\t\t\t\t} else if (start.pageX > end.pageX) {\n\t\t\t\t\t\taction.action = \"slide-left\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\taction.action = \"slide\";\n\t\t\t\t\t}\n\n\t\t\t\t\taction.start = start.pageX;\n\t\t\t\t\taction.end = end.pageX;\n\t\t\t\t\taction.target = start.target;\n\t\t\t\t} else if (yChange > deviation) {\n\t\t\t\t\tif (end.pageY > start.pageY) {\n\t\t\t\t\t\taction.action = \"slide-down\";\n\t\t\t\t\t} else if (start.pageY > end.pageY) {\n\t\t\t\t\t\taction.action = \"slide-up\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\taction.action = \"slide\";\n\t\t\t\t\t}\n\n\t\t\t\t\taction.start = start.pageY;\n\t\t\t\t\taction.end = end.pageY;\n\t\t\t\t\taction.target = start.target;\n\t\t\t\t}\n\t\t\t} else if (!Ember.isNone(start)) {\n\t\t\t\taction.action = \"touch\";\n\t\t\t\taction.start = start.pageX;\n\t\t\t\taction.target = start.target;\n\t\t\t}\n\t\t\tthis.evalTouch(action);\n\t\t\tthis.set(\"startTouch\", null);\n\t\t\tthis.set(\"endTouch\", null);\n\t\t\tthis.set(\"startEvent\", null);\n\t\t},\n\t\tevalTouch: function evalTouch(item) {\n\t\t\tif (Ember.$(\"body\").hasClass(\"left-nav-open\")) {\n\t\t\t\tif (item.action === \"slide-left\") {\n\t\t\t\t\tEmber.$(\"body\").removeClass(\"left-nav-open\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (item.action === \"slide-right\") {\n\t\t\t\t\tif (item.start < 80) {\n\t\t\t\t\t\tEmber.$(\"body\").addClass(\"left-nav-open\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\topenReactApp: function openReactApp(path, customParameters, event) {\n\t\t\treturn Ember.get(this, \"interop\").openReactApp(path, customParameters, event);\n\t\t},\n\t\topenEquipmentApp: function openEquipmentApp(event) {\n\t\t\treturn Ember.get(this, \"interop\").openUrl(this.get(\"equipmentUrl\"), event, {\n\t\t\t\tnewWindow: true\n\t\t\t});\n\t\t},\n\n\n\t\t/* Graylog events */\n\n\t\tgraylogViewedEmployeeSection: function graylogViewedEmployeeSection() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Viewed Employee Section\",\n\t\t\t\tfull_message: \"Viewed Employee Section\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\")\n\t\t\t});\n\t\t},\n\t\tgraylogViewedProjectSection: function graylogViewedProjectSection() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Viewed Project Section\",\n\t\t\t\tfull_message: \"Viewed Project Section\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\")\n\t\t\t});\n\t\t},\n\t\tgraylogViewedCostCodeSection: function graylogViewedCostCodeSection() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Viewed Cost Code Section\",\n\t\t\t\tfull_message: \"Viewed Cost Code Section\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\")\n\t\t\t});\n\t\t},\n\t\tgraylogViewedUniversalMap: function graylogViewedUniversalMap() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Viewed Universal Map\",\n\t\t\t\tfull_message: \"Viewed Universal Map\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\")\n\t\t\t});\n\t\t},\n\t\tgraylogViewedAdmingScheduling: function graylogViewedAdmingScheduling() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Viewed Adming Scheduling\",\n\t\t\t\tfull_message: \"Viewed Adming Scheduling\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\")\n\t\t\t});\n\t\t},\n\t\tgraylogAccessedPhotosAndNotes: function graylogAccessedPhotosAndNotes() {\n\t\t\tthis.get(\"graylog\").sendEvent({\n\t\t\t\tshort_message: \"Accessed Photos And Notes\",\n\t\t\t\tfull_message: \"Accessed Photos And Notes\",\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get(\"auth.memberId\"),\n\t\t\t\t_member_position_id: this.get(\"auth.member.positionId\"),\n\t\t\t\t_view_type: \"side_nav\"\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangeViewAction: function changeViewAction(section, noTransition) {\n\t\t\t\tif (!this.get(\"isViewChanging\")) {\n\t\t\t\t\t// toggle the organization picker closed\n\t\t\t\t\tif (this.get(\"isOpen\")) {\n\t\t\t\t\t\tthis.set(\"isOpen\", false);\n\t\t\t\t\t}\n\t\t\t\t\tthis.send(\"closeSideMenu\");\n\t\t\t\t\treturn this.changeView(section, noTransition);\n\t\t\t\t}\n\t\t\t},\n\t\t\tlogoutAction: function logoutAction() {\n\t\t\t\tthis.logout.apply(this, arguments);\n\t\t\t},\n\t\t\topenWorkspace: function openWorkspace() {\n\t\t\t\tthis.createAccountList();\n\t\t\t\t// open organization picker\n\t\t\t\tthis.set(\"isOpen\", !this.get(\"isOpen\"));\n\t\t\t},\n\t\t\ttoggleAccountAction: function toggleAccountAction() {\n\t\t\t\tthis.get(\"router\").transitionTo(\"account-settings\");\n\t\t\t},\n\t\t\tcloseSideMenu: function closeSideMenu() {\n\t\t\t\t// close side menu\n\t\t\t\tEmber.$(\"body\").removeClass(\"left-nav-open\");\n\t\t\t},\n\t\t\taddAccount: function addAccount() {\n\t\t\t\tthis.get(\"dataStore\").suspendAuth();\n\t\t\t},\n\t\t\tuseAccount: function useAccount(org) {\n\t\t\t\tthis.get(\"dataStore\").switchAuth(org.id);\n\t\t\t\twindow.location = \"/\";\n\t\t\t},\n\t\t\topenHelpDialog: function openHelpDialog() {\n\t\t\t\tthis.set(\"showHelpDialog\", true);\n\t\t\t},\n\t\t\tcloseHelpDialog: function closeHelpDialog() {\n\t\t\t\tthis.set(\"showHelpDialog\", false);\n\t\t\t},\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\t// hide the help dialog\n\t\t\t\tthis.set(\"showHelpDialog\", false);\n\t\t\t\tthis.get(\"analytics\").openIntercom();\n\t\t\t},\n\t\t\topenFaq: function openFaq() {\n\t\t\t\tthis.set(\"showHelpDialog\", false);\n\t\t\t\twindow.open(\"http://support.busybusy.com/\");\n\t\t\t},\n\t\t\topenCostCodes: function openCostCodes() {\n\t\t\t\tif (this.get(\"auth.organization.trackCostCode\")) {\n\t\t\t\t\tthis.send(\"changeViewAction\", \"cost-code\");\n\t\t\t\t} else {\n\t\t\t\t\tthis.send(\"openCostCodesSplashScreen\");\n\t\t\t\t}\n\t\t\t},\n\t\t\topenCostCodesSplashScreen: function openCostCodesSplashScreen() {\n\t\t\t\tthis.set(\"showCostCodesSplashScreen\", true);\n\t\t\t},\n\t\t\tcloseCostCodesSplashScreen: function closeCostCodesSplashScreen() {\n\t\t\t\tthis.set(\"showCostCodesSplashScreen\", false);\n\t\t\t},\n\t\t\topenEquipment: function openEquipment(event) {\n\t\t\t\tif (this.get(\"auth.organization.trackEquipment\")) {\n\t\t\t\t\tthis.openEquipmentApp(event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.send(\"openEquipmentSplashScreen\");\n\t\t\t\t}\n\t\t\t},\n\t\t\topenEquipmentSplashScreen: function openEquipmentSplashScreen() {\n\t\t\t\tthis.set(\"showEquipmentSplashScreen\", true);\n\t\t\t},\n\t\t\tcloseEquipmentSplashScreen: function closeEquipmentSplashScreen() {\n\t\t\t\tthis.set(\"showEquipmentSplashScreen\", false);\n\t\t\t},\n\n\n\t\t\t// usage: <a onClick={{action 'openReactApp' 'media' (hash) bubbles=false allowedKeys=\"command control\"}} />\n\t\t\topenReactApp: function openReactApp() {\n\t\t\t\tvar path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n\t\t\t\tvar customParameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\t\tvar event = arguments[2];\n\n\t\t\t\tif (path === \"photos\") {\n\t\t\t\t\tthis.graylogAccessedPhotosAndNotes();\n\t\t\t\t} else if (path === \"scheduling\") {\n\t\t\t\t\tthis.graylogViewedAdmingScheduling();\n\t\t\t\t}\n\n\t\t\t\t// close the menu\n\t\t\t\tEmber.$(\"body\").removeClass(\"left-nav-open\");\n\n\t\t\t\treturn this.openReactApp(path, customParameters, event);\n\t\t\t},\n\t\t\topenSubscriptionDetails: function openSubscriptionDetails() {\n\t\t\t\treturn this.changeView(\"company-settings\", false, \"subscription\");\n\t\t\t},\n\t\t\tcloseInteropWindows: function closeInteropWindows() {\n\t\t\t\tEmber.get(this, \"interop\").closeWindows();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-notification-bar', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.isDismissed = isDismissed;\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-notification-bar', 'page-hide'],\n\n\t\tclassNameBindings: ['isWarning:busy-notification-bar-warning', 'isError:busy-notification-bar-error', 'isSuccess:busy-notification-bar-success', 'isInfo:busy-notification-bar-info', 'isShowing::is-dismissed'],\n\n\t\tisWarning: Ember.computed.equal('type', 'warning'),\n\t\tisError: Ember.computed.equal('type', 'error'),\n\t\tisSuccess: Ember.computed.equal('type', 'success'),\n\t\tisInfo: Ember.computed.equal('type', 'info'),\n\t\tisShowing: false,\n\n\t\tonDismiss: null,\n\t\tisDismissable: false,\n\n\t\tname: '',\n\t\tclickText: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\t_utils.Assert.test(\"name must be a string\", !Ember.isEmpty(this.get('name')));\n\n\t\t\tthis.setShowing();\n\t\t},\n\n\n\t\tsetShowing: Ember.observer('name', function () {\n\t\t\t// only show the notification if the notification is not in local storage\n\t\t\tvar isShowing = _utils.LocalStorage.getProperty(this.get('name')) ? false : true;\n\t\t\tthis.set('isShowing', isShowing);\n\t\t}),\n\n\t\tactions: {\n\t\t\tclickAction: function clickAction() {\n\t\t\t\tthis.sendAction('onClick');\n\t\t\t},\n\t\t\tonDismiss: function onDismiss() {\n\t\t\t\t_utils.LocalStorage.setProperty(this.get('name'), true);\n\t\t\t\tthis.setShowing();\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\t\t}\n\t});\n\tfunction isDismissed(name) {\n\t\treturn _utils.LocalStorage.getWithDefault(name, false);\n\t}\n});","define('busy-app/components/busy-pagination', ['exports', '@busy-web/utils/local-storage'], function (exports, _localStorage) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-pagination'],\n\n\t\tpagination: null,\n\t\ttotalRows: 0,\n\n\t\tpageSize: null,\n\n\t\tpage: 1,\n\t\tmaxPageSize: 1000,\n\t\topenTop: false,\n\n\t\tshowPages: 5,\n\t\tshowPageNumbers: false,\n\n\t\tselectMenu: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.pageChangeHandler();\n\t\t\tthis.rowChange();\n\t\t},\n\t\tgetPageSize: function getPageSize() {\n\t\t\tvar size = this.get('pageSize') || _localStorage.default.getProperty('member-pagination-size');\n\t\t\tsize = size === 'all' ? this.get('maxPageSize') : size;\n\t\t\treturn parseInt(size, 10);\n\t\t},\n\t\tsetPageSize: function setPageSize(size) {\n\t\t\t// check if pagesize is max page size\n\t\t\tsize = size === 'all' ? this.get('maxPageSize') : size;\n\n\t\t\t// add pagesize to local storage for lookup after refresh\n\t\t\t_localStorage.default.setProperty('member-pagination-size', size);\n\n\t\t\t// set the pagesize and send changeSize action\n\t\t\tthis.set('pageSize', size);\n\t\t\treturn this;\n\t\t},\n\n\n\t\tpageChangeHandler: Ember.observer('pageSize', function () {\n\t\t\t// get page size\n\t\t\tvar size = this.getPageSize();\n\n\t\t\tvar selectMenu = [Ember.Object.create({ key: 30, value: 30, _selected: size === 30 }), Ember.Object.create({ key: 50, value: 50, _selected: size === 50 }), Ember.Object.create({ key: 75, value: 75, _selected: size === 75 }), Ember.Object.create({ key: 100, value: 100, _selected: size === 100 }), Ember.Object.create({ key: 200, value: 200, _selected: size === 200 }), Ember.Object.create({ key: 'all', value: 'all', _selected: size === this.get('maxPageSize') })];\n\n\t\t\tif (Ember.isNone(selectMenu.findBy('_selected', true))) {\n\t\t\t\tselectMenu.objectAt(0).set('_selected', true);\n\t\t\t}\n\n\t\t\tthis.set('selectMenu', selectMenu);\n\t\t}),\n\n\t\thasPaging: Ember.computed('totalRows', 'page', 'pageSize', function () {\n\t\t\tvar size = this.getPageSize();\n\t\t\tvar hasPaging = false;\n\n\t\t\t// always show page size when all is selected\n\t\t\tif (this.getPageSize() === this.get('maxPageSize')) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (size > 30) {\n\t\t\t\thasPaging = true;\n\t\t\t} else if (this.get('page') > 1) {\n\t\t\t\thasPaging = true;\n\t\t\t} else if (this.get('totalRows') > size) {\n\t\t\t\thasPaging = true;\n\t\t\t}\n\t\t\treturn hasPaging;\n\t\t}),\n\n\t\thasPrevPage: Ember.computed('page', function () {\n\t\t\tif (this.get('page') > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasNextPage: Ember.computed('totalRows', 'pageSize', 'page', function () {\n\t\t\tvar size = this.getPageSize();\n\t\t\tif (this.get('page') < Math.ceil(this.get('totalRows') / size)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasPrevOrNext: Ember.computed('hasPrevPage', 'hasNextPage', function () {\n\t\t\treturn this.get('hasPrevPage') || this.get('hasNextPage');\n\t\t}),\n\n\t\trowChange: Ember.observer('totalRows', function () {\n\t\t\tif (this.get('totalRows') > 0) {\n\t\t\t\tthis.setPageArray();\n\t\t\t}\n\t\t}),\n\n\t\tsetPageArray: function setPageArray() {\n\t\t\tif (this.get('showPageNumbers')) {\n\t\t\t\t(true && Ember.warn(\"This is not a finished paging style. Do not use this\"));\n\n\n\t\t\t\tvar size = this.getPageSize();\n\t\t\t\tvar totalPages = Math.ceil(this.get('totalRows') / size);\n\t\t\t\tvar startPage = this.get('page') - 2;\n\n\t\t\t\tif (startPage < 1) {\n\t\t\t\t\tstartPage = 1;\n\t\t\t\t} else if (startPage > totalPages - this.get('showPages')) {\n\t\t\t\t\tstartPage = totalPages - this.get('showPages');\n\t\t\t\t}\n\n\t\t\t\tvar pages = [];\n\t\t\t\tfor (var i = startPage; i <= this.get('showPages'); i++) {\n\t\t\t\t\tpages.pushObject(Ember.Object.create({ page: i }));\n\t\t\t\t}\n\n\t\t\t\tthis.set('pagination', pages);\n\t\t\t}\n\t\t},\n\t\t_changePage: function _changePage(page) {\n\t\t\tthis.set('page', page);\n\t\t\tthis.sendAction('changePage', page);\n\t\t\tthis.setPageArray();\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangePageSize: function changePageSize(item) {\n\t\t\t\t// get the page size\n\t\t\t\tvar size = item.get('key');\n\t\t\t\tsize = this.setPageSize(size).getPageSize();\n\t\t\t\tthis.sendAction('changeSize', size);\n\t\t\t},\n\t\t\topenPage: function openPage(pageObj) {\n\t\t\t\tthis._changePage(pageObj.get('page'));\n\t\t\t},\n\t\t\tprevPage: function prevPage() {\n\t\t\t\tif (this.get('page') > 1 && this.get('hasPrevPage')) {\n\t\t\t\t\tthis._changePage(this.get('page') - 1);\n\t\t\t\t}\n\t\t\t},\n\t\t\tnextPage: function nextPage() {\n\t\t\t\tvar size = this.getPageSize();\n\t\t\t\tif (this.get('page') < Math.ceil(this.get('totalRows') / size) && this.get('hasNextPage')) {\n\t\t\t\t\tthis._changePage(this.get('page') + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-report-header', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _emberData, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-busy-report-header', 'page-padding'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tstart: null,\n\t\tend: null,\n\t\tcurrentPeriodStart: null,\n\n\t\tisRangeSelector: false,\n\n\t\tcolumns: null,\n\t\toptions: null,\n\n\t\tcolumnLabel: '',\n\t\tcolumDefault: '',\n\n\t\tdateSelector: null,\n\t\thideDateSelector: false,\n\n\t\tshowDateTitle: false,\n\t\tdateTitle: null,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\thideExport: false,\n\t\tprintContainer: null,\n\t\tinlinePrint: false,\n\t\tsortOrder: null,\n\t\tnoMargin: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tvar start = _utils.Time.date().startOf('day').unix();\n\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(start);\n\t\t\tthis.set('currentPeriodStart', payPeriod.get('start'));\n\n\t\t\tif (Ember.isNone(this.get('maxDate'))) {\n\t\t\t\tthis.set('maxDate', payPeriod.get('endDate').unix());\n\t\t\t}\n\n\t\t\tthis.dateSetter();\n\t\t\tthis.setupSelectors();\n\t\t},\n\n\n\t\tshowCurrentPeriodWarning: Ember.computed('currentPeriodStart', 'start', function () {\n\t\t\tif (!Ember.isNone(this.get('start')) && this.get('start') === this.get('currentPeriodStart')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tshowExportMenu: Ember.computed('options', function () {\n\t\t\tif (!Ember.isNone(this.get('options')) && this.get('options.length') > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tdateSetter: Ember.observer('start', 'end', function () {\n\t\t\tvar start, end;\n\t\t\tif (!Ember.isNone(this.get('start')) && this.get('start') > 0 && !Ember.isNone(this.get('end')) && this.get('end') > 0) {\n\t\t\t\tstart = _utils.Time.date(this.get('start'));\n\t\t\t\tend = _utils.Time.date(this.get('end'));\n\t\t\t} else {\n\t\t\t\tstart = _utils.Time.date().startOf('day').subtract(1, 'weeks');\n\t\t\t\tend = _utils.Time.date().endOf('day');\n\t\t\t}\n\n\t\t\tthis.set('startDate', start);\n\t\t\tthis.set('endDate', end);\n\t\t}),\n\n\t\theaderDateRange: Ember.computed('dateSelector.@each._selected', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('dateSelector')) && !this.get('isRangeSelector')) {\n\t\t\t\tvar selected = this.get('dateSelector').findBy('_selected', true);\n\t\t\t\tdate = selected.get('startDate').format('MM/DD/YYYY') + ' - ' + selected.get('endDate').format('MM/DD/YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tcreatorName: Ember.computed('auth.member.fullName', function () {\n\t\t\treturn this.get('auth.member.fullName');\n\t\t}),\n\n\t\tcreatedDate: Ember.computed(function () {\n\t\t\treturn _utils.Time.date().format('MM/DD/YYYY h:mm A');\n\t\t}),\n\n\t\tsetupSelectors: Ember.observer('start', 'payPeriodsCutoff', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\tvar _this = this;\n\n\t\t\tvar now, payPeriodsCutoff, payPeriods;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tnow = _utils.Time.timestamp();\n\t\t\t\t\t\t\t_context.next = 3;\n\t\t\t\t\t\t\treturn Ember.get(this, 'payPeriodsCutoff');\n\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tpayPeriodsCutoff = _context.sent;\n\t\t\t\t\t\t\tpayPeriods = this.get('payPeriods').getPayPeriodDateRange(now, payPeriodsCutoff);\n\n\t\t\t\t\t\t\tif (!Ember.isNone(this.get('start'))) {\n\t\t\t\t\t\t\t\tpayPeriods.forEach(function (item) {\n\t\t\t\t\t\t\t\t\tif (_this.get('start') >= item.get('start') && _this.get('start') <= item.get('end')) {\n\t\t\t\t\t\t\t\t\t\titem.set('_selected', true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpayPeriods.objectAt(0).set('_selected', true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.set('dateSelector', payPeriods);\n\n\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}))),\n\n\t\tpayPeriodsCutoff: Ember.computed('auth.organization.createdOn', 'earliestTimeEntry', function () {\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.getPayPeriodCutoff(Ember.get(this, 'auth.organization.createdOn'))\n\t\t\t});\n\t\t}),\n\n\t\tearliestTimeEntry: Ember.computed('auth.organization.createdOn', function () {\n\t\t\tvar query = { page_size: 1, _asc: ['startTime'] };\n\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: Ember.get(this, 'store').query('time-entry', query).then(function (results) {\n\t\t\t\t\treturn Ember.isNone(results) ? null : Ember.get(results, 'firstObject');\n\t\t\t\t})\n\t\t\t});\n\t\t}),\n\n\t\t// get the older of the first time entry start time and the organization start date\n\t\t// using that oldest date, calculate a baseline date for generating pay periods\n\t\tgetPayPeriodCutoff: function getPayPeriodCutoff(organizationCreatedOn) {\n\t\t\tvar minDate = organizationCreatedOn;\n\n\t\t\treturn Ember.get(this, 'earliestTimeEntry').then(function (results) {\n\t\t\t\tif (!Ember.isNone(results)) {\n\t\t\t\t\tminDate = Math.min(minDate, Ember.get(results, 'startTime'));\n\t\t\t\t}\n\n\t\t\t\t// subtract 3 months, then go to the start of that year\n\t\t\t\t// this guarantees there will be at least 3 pay periods listed in the selector\n\t\t\t\treturn _utils.Time.date(minDate).subtract(3, 'months').startOf('year').unix();\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tdateChange: function dateChange(item) {\n\t\t\t\tif (this.get('isRangeSelector')) {\n\t\t\t\t\tthis.sendAction('dateSelected', this.get('startDate').unix(), this.get('endDate').unix());\n\t\t\t\t} else {\n\t\t\t\t\tthis.sendAction('dateSelected', item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tprintChanged: function printChanged(item) {\n\t\t\t\tthis.sendAction('printSelected', item);\n\t\t\t},\n\t\t\toptionChange: function optionChange(item) {\n\t\t\t\tif (Ember.isNone(item) && !Ember.isNone(this.get('options'))) {\n\t\t\t\t\titem = this.get('options')[0];\n\t\t\t\t}\n\t\t\t\tthis.sendAction('optionSelected', item);\n\t\t\t},\n\t\t\tcolumnChange: function columnChange(val, item) {\n\t\t\t\tthis.sendAction('columnSelected', val, item);\n\t\t\t},\n\t\t\tprintPage: function printPage() {\n\t\t\t\tvar container = !this.get('inlinePrint') ? this.$() : null;\n\t\t\t\tif (!Ember.isNone(this.get('printContainer'))) {\n\t\t\t\t\tcontainer = Ember.$(this.get('printContainer'));\n\t\t\t\t}\n\t\t\t\t_docs.default.print(container);\n\t\t\t},\n\t\t\tchangeSort: function changeSort() {\n\t\t\t\tvar sort = this.get('sortOrder') === 'desc' ? 'asc' : 'desc';\n\t\t\t\tthis.set('sortOrder', sort);\n\t\t\t\tthis.sendAction('onSort', sort);\n\t\t\t},\n\t\t\tfilterChanged: function filterChanged(item) {\n\t\t\t\tthis.sendAction('filterSelected', item.get('key'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-save-message', ['exports', '@busy-web/utils/loc'], function (exports, _loc) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['busy-save-message'],\n\n    classNameBindings: ['isLoading:active', 'minimal'],\n\n    isLoading: false,\n    minimal: false,\n    loadingMessage: (0, _loc.default)('Loading...')\n  });\n});","define('busy-app/components/busy-save', ['exports', '@busy-web/utils/loc'], function (exports, _loc) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: 'busy-save',\n\n\t\tclassNames: ['busy-save'],\n\n\t\tisShowing: false,\n\n\t\tisSaving: false,\n\t\tisSaved: false,\n\t\tisError: false,\n\n\t\ttimeout: null,\n\n\t\tsavingMessageText: (0, _loc.default)('Saving'),\n\t\tsavedMessageText: (0, _loc.default)('Successfully Saved'),\n\t\terrorMessageText: (0, _loc.default)('An error occurred! Please try again later.'),\n\n\t\tmessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (!Ember.isNone(this.get('targetParent'))) {\n\t\t\t\tthis.set('targetParent.busySave', this);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * Shows a saving message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showSavingMessage\n   * @param message {string} The save message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {Promise}\n   */\n\t\tshowSavingMessage: function showSavingMessage(message, timeout) {\n\t\t\treturn this.savingMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows an error message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showErrorMessage\n   * @param message {string} The error message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {Promise}\n   */\n\t\tshowErrorMessage: function showErrorMessage(message, timeout) {\n\t\t\treturn this.errorMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows a saved message at the\n   * bottom of the dialog and fires the close dialog event.\n   *\n   * @public\n   * @method showSavedMessage\n   * @param message {string} The saved message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {Promise}\n   */\n\t\tshowSavedMessage: function showSavedMessage(message, timeout) {\n\t\t\treturn this.successMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * shows a saving message box. this box will not hide until\n   * either success or error message calls have been made\n   *\n   * @public\n   * @param message {string} the message to show when saving (not required)\n   */\n\t\tsavingMessage: function savingMessage(message) {\n\t\t\treturn this._savingMessage(message);\n\t\t},\n\n\n\t\t/**\n   * private save message call for internal class use\n   *\n   * @public\n   * @param message {string} the message to show when saving\n   * @param complete {function} the callback function called when the timeout has finished\n   */\n\t\t_savingMessage: function _savingMessage(message) {\n\t\t\tvar _this = this;\n\n\t\t\tmessage = typeof message === 'string' ? message : this.get('savingMessageText');\n\n\t\t\tthis.set('savingMessageText', message);\n\n\t\t\tthis.set('isSaved', false);\n\t\t\tthis.set('isError', false);\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\t_this.set('isSaving', true);\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * show the message success box\n   *\n   * @private\n   * @param message {string} the success message (not required)\n   * @param timeout {int} the time in milliseconds for the message to display (not required) default 2000 miliseconds\n   */\n\t\tsuccessMessage: function successMessage(message, timeout) {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\treturn _this2._successMessage(message, timeout);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * private success message call\n   *\n   * @private\n   */\n\t\t_successMessage: function _successMessage(message, timeout) {\n\t\t\tvar _this3 = this;\n\n\t\t\tmessage = message !== undefined ? message : this.get('savedMessageText');\n\t\t\ttimeout = timeout !== undefined ? timeout : 2000;\n\n\t\t\tif (this.get('timeout')) {\n\t\t\t\twindow.clearTimeout(this.get('timeout'));\n\t\t\t}\n\n\t\t\tthis.set('savedMessageText', message);\n\t\t\tthis.set('isSaving', false);\n\t\t\tthis.set('isSaved', true);\n\t\t\tthis.set('isError', false);\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\t_this3.sendAction('onSaved');\n\t\t\t\treturn _this3.hide();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * shows the message error box\n   *\n   * @public\n   * @param message {string} the success message (not required)\n   * @param timeout {int} the time in milliseconds for the message to display (not required) default 4000 miliseconds\n   */\n\t\terrorMessage: function errorMessage(message, timeout) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\treturn _this4._errorMessage(message, timeout);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * private error message call\n   *\n   * @private\n   */\n\t\t_errorMessage: function _errorMessage(message, timeout) {\n\t\t\tvar _this5 = this;\n\n\t\t\tmessage = message !== undefined ? message : this.get('errorMessageText');\n\t\t\ttimeout = timeout !== undefined ? timeout : 4000;\n\n\t\t\tthis.set('errorMessageText', message);\n\t\t\tthis.set('isSaving', false);\n\t\t\tthis.set('isSaved', false);\n\t\t\tthis.set('isError', true);\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\t_this5.sendAction('onError');\n\t\t\t\treturn _this5.hide();\n\t\t\t});\n\t\t},\n\t\tshow: function show() {\n\t\t\tvar timeout = 0;\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (!this.get('isShowing')) {\n\t\t\t\t\t// set isShowing flag to true\n\t\t\t\t\tthis.set('isShowing', true);\n\n\t\t\t\t\t// set the timeout to a 200 milliseconds\n\t\t\t\t\ttimeout = 200;\n\t\t\t\t} else if (!Ember.isNone(this.get('timeout'))) {\n\t\t\t\t\t// get the stored timeout\n\t\t\t\t\tvar timer = this.get('timeout');\n\n\t\t\t\t\t// calculate the time spent since the timeout was stored\n\t\t\t\t\tvar timeSpent = new Date().valueOf() - timer.timestamp;\n\n\t\t\t\t\t// get the time left for this timeout\n\t\t\t\t\ttimeout = timer.duration - timeSpent;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.promise(timeout);\n\t\t},\n\t\thide: function hide() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar timeout = 0;\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (this.get('isError') || this.get('isSaved')) {\n\t\t\t\t\t// reset the error flag\n\t\t\t\t\tthis.set('isError', false);\n\n\t\t\t\t\t// set the isSaved flag to off\n\t\t\t\t\tthis.set('isSaved', false);\n\n\t\t\t\t\t// set a timeout of 300 milliseconds\n\t\t\t\t\ttimeout = 300;\n\t\t\t\t} else if (!Ember.isNone(this.get('timeout'))) {\n\t\t\t\t\t// get the stored timeout\n\t\t\t\t\tvar timer = this.get('timeout');\n\n\t\t\t\t\t// calculate the time left in the timeout\n\t\t\t\t\tvar timeSpent = new Date().valueOf() - timer.timestamp;\n\n\t\t\t\t\t// get the time left for the timeout\n\t\t\t\t\ttimeout = timer.duration - timeSpent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\tif (!_this6.get('isDestroyed')) {\n\t\t\t\t\t_this6.set('isShowing', false);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\t\tpromise: function promise(duration) {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar timestamp = new Date().valueOf();\n\n\t\t\tif (this.get('timeout')) {\n\t\t\t\twindow.clearTimeout(this.get('timeout').timeout);\n\t\t\t}\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\tvar timer = window.setTimeout(function () {\n\t\t\t\t\tif (!_this7.get('isDestroyed')) {\n\t\t\t\t\t\tEmber.run(null, resolve, true);\n\t\t\t\t\t}\n\t\t\t\t}, duration);\n\n\t\t\t\tif (!_this7.get('isDestroyed')) {\n\t\t\t\t\t_this7.set('timeout', { timeout: timer, timestamp: timestamp, duration: duration });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/components/busy-search-bar', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-search-bar'],\n\n\t\t/**\n   * The value of the current keyword in\n   * the input field.\n   *\n   * @public\n   * @property keyword\n   * @type string\n   */\n\t\tkeyword: '',\n\n\t\t/**\n   * The placeholder text for the input.\n   *\n   * @public\n   * @property placeholder\n   * @type string\n   */\n\t\tplaceholder: (0, _utils.loc)('Search'),\n\n\t\t/**\n   * The time to wait before sending an api call after a letter\n   * has been typed in the text field.\n   *\n   * @public\n   * @property timeout\n   * @type number\n   */\n\t\ttimeout: null,\n\n\t\t/**\n   *\n   * @public\n   * @property keywordSetter\n   * @type string\n   */\n\t\tkeywordSetter: null,\n\n\t\t/**\n   * Internal initialization method.\n   *\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t// if keywordSetter is set the set the keyword to it.\n\t\t\tif (!Ember.isNone(this.get('keywordSetter'))) {\n\t\t\t\tthis.set('keyword', this.get('keywordSetter'));\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * Key press action event.\n    *\n    * @public\n    * @event onSubmit\n    * @method keyPressAction\n    */\n\t\t\tkeyPressAction: function keyPressAction() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tif (!Ember.isNone(this.get('timeout'))) {\n\t\t\t\t\twindow.clearTimeout(this.get('timeout'));\n\t\t\t\t}\n\n\t\t\t\tif (this.get('keyword').length >= 4 || this.get('keyword').length === 0) {\n\t\t\t\t\tthis.set('timeout', setTimeout(function () {\n\t\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t\t_this.set('timeout', null);\n\t\t\t\t\t\t\t_this.sendAction('onSubmit', _this.get('keyword'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 600));\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\n\t\t\t/**\n    * Enter or click submit action event.\n    *\n    * @public\n    * @event onSubmit\n    * @method submitAction\n    */\n\t\t\tsubmitAction: function submitAction() {\n\t\t\t\tthis.sendAction('onSubmit', this.get('keyword'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-select-checkbox', ['exports', '@busy-web/components/components/bc-select'], function (exports, _bcSelect) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _bcSelect.default.extend({\n\t\tmenuTitle: 'Options',\n\t\titemVal: null,\n\n\t\tactions: {\n\t\t\tselectChange: function selectChange(val, item) {\n\t\t\t\tthis.sendAction('onSelect', val, item);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-select-create', ['exports', '@busy-web/components/components/bc-select', '@busy-web/utils'], function (exports, _bcSelect, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = _bcSelect.default.extend({\n\t\tclassNames: ['busy-select-create'],\n\n\t\taddPlaceholder: (0, _utils.loc)('Name'),\n\t\tcanAddItem: false,\n\t\tcanEditItems: false,\n\t\tisItemEdit: false,\n\t\taddNewValue: '',\n\t\tshowEdit: true,\n\t\tdefaultList: null,\n\n\t\tselectedItem: Ember.computed('model.{@each._selected,[]}', 'defaultList.{@each._selected,[]}', function () {\n\t\t\tvar selected = null;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tselected = this.getSelected();\n\t\t\t}\n\t\t\treturn selected;\n\t\t}),\n\n\t\tgetSelected: function getSelected() {\n\t\t\tvar defaults = this.get('defaultList');\n\t\t\tvar selected = null;\n\t\t\tif ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) === 'object' && typeof defaults.forEach === 'function') {\n\t\t\t\tdefaults.forEach(function (item) {\n\t\t\t\t\tif (Ember.get(item, '_selected')) {\n\t\t\t\t\t\tselected = item;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tObject.keys(defaults).forEach(function (key) {\n\t\t\t\t\tif (Ember.get(defaults[key], '_selected')) {\n\t\t\t\t\t\tselected = defaults[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (selected === null) {\n\t\t\t\tselected = this._super();\n\t\t\t}\n\t\t\treturn selected;\n\t\t},\n\t\tunselectAll: function unselectAll() {\n\t\t\tvar items = this.get('defaultList');\n\t\t\tif ((typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && typeof items.forEach === 'function') {\n\t\t\t\titems.forEach(function (item) {\n\t\t\t\t\tEmber.set(item, '_selected', false);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tObject.keys(items).forEach(function (key) {\n\t\t\t\t\tEmber.set(items[key], '_selected', false);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\tcloseMenuAction: function closeMenuAction() {\n\t\t\tthis.set('canAddItem', false);\n\t\t\tthis.set('canEditItems', false);\n\t\t\tthis.set('isItemEdit', false);\n\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\titem.set('canEdit', false);\n\t\t\t\titem.rollbackAttributes();\n\t\t\t});\n\t\t\tthis._super();\n\t\t},\n\t\trefreshValue: function refreshValue(item) {\n\t\t\tthis.itemClicked(item);\n\t\t},\n\n\n\t\tactions: {\n\t\t\taddNewItem: function addNewItem() {\n\t\t\t\tthis.set('canAddItem', !this.get('canAddItem'));\n\t\t\t},\n\t\t\tsaveNewItem: function saveNewItem() {\n\t\t\t\tthis.sendAction('onAddNew', this.get('addNewValue'));\n\t\t\t\tthis.set('addNewValue', '');\n\t\t\t\tthis.set('canAddItem', false);\n\t\t\t},\n\t\t\tcancelAddnewItem: function cancelAddnewItem() {\n\t\t\t\tthis.set('canAddItem', false);\n\t\t\t},\n\t\t\teditItems: function editItems() {\n\t\t\t\tthis.set('canAddItem', false);\n\t\t\t\tthis.set('canEditItems', true);\n\t\t\t},\n\t\t\teditSelectItem: function editSelectItem(item) {\n\t\t\t\titem.set('canEdit', true);\n\t\t\t\tvar index = this.get('model').indexOf(item);\n\t\t\t\tthis.set('selectItemEdit', index);\n\t\t\t\tthis.set('isItemEdit', true);\n\t\t\t},\n\t\t\tshowDeleteDialog: function showDeleteDialog(item) {\n\t\t\t\tthis.unbindClick();\n\t\t\t\tthis.set('selectItemEdit', item);\n\t\t\t\tthis.set('showDeleteDialog', true);\n\t\t\t},\n\t\t\tcloseDeleteDialog: function closeDeleteDialog() {\n\t\t\t\tthis.set('showDeleteDialog', false);\n\t\t\t\tthis.bindClick();\n\t\t\t},\n\t\t\tdeleteListItem: function deleteListItem() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\treturn this.get('selectItemEdit').destroyRecord().then(function (item) {\n\t\t\t\t\t_this.sendAction('onDelete', item);\n\t\t\t\t\t_this.get('model').removeObject(item);\n\t\t\t\t\t_this.set('showDeleteDialog', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsaveItem: function saveItem() {\n\t\t\t\tvar item = this.get('model').objectAt(this.get('selectItemEdit'));\n\t\t\t\titem.set('canEdit', false);\n\t\t\t\titem.save();\n\n\t\t\t\tthis.set('selectItemEdit', null);\n\t\t\t\tthis.set('isItemEdit', false);\n\t\t\t\tif (item.get('_selected')) {\n\t\t\t\t\tthis.itemClicked(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelItem: function cancelItem() {\n\t\t\t\tvar item = this.get('model').objectAt(this.get('selectItemEdit'));\n\t\t\t\titem.rollbackAttributes();\n\t\t\t\titem.set('canEdit', false);\n\n\t\t\t\tthis.set('selectItemEdit', null);\n\t\t\t\tthis.set('isItemEdit', false);\n\t\t\t},\n\t\t\tdoneEditItems: function doneEditItems() {\n\t\t\t\tthis.set('canEditItems', false);\n\t\t\t},\n\t\t\titemClickAction: function itemClickAction(item) {\n\t\t\t\tthis.itemClicked(item);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-signature-pad', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tclassNames: ['busy-signature-pad'],\n\t\tcolor: '#006',\n\t\tbackgroundColor: '#eee',\n\t\tlineColor: 'rgba(0,0,0,.1)',\n\t\tshowUndoButton: true,\n\t\tlineWidth: 3,\n\n\t\texportFormat: 'native',\n\t\timportFormat: 'native',\n\n\t\tsettings: null,\n\n\t\tonSignatureData: function onSignatureData() {\n\t\t\t_logger.default.error('BusySignaturePad', 'must define onSignatureData');\n\t\t},\n\n\t\t$canvas: null,\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tvar _this = this;\n\n\t\t\tvar $canvas = this.$().find('canvas');\n\t\t\tthis.set('$canvas', $canvas);\n\n\t\t\tthis.set('command', {\n\t\t\t\tcommand: 'getSettings',\n\t\t\t\tcb: function cb(settings) {\n\t\t\t\t\treturn _this.set('settings', settings);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonChange: function onChange(data) {\n\t\t\t\tif (Ember.isNone(data) || Ember.isEmpty(data)) {\n\t\t\t\t\tthis.onSignatureData(null);\n\t\t\t\t} else {\n\t\t\t\t\tvar width = this.get('$canvas').width();\n\t\t\t\t\tvar height = this.get('$canvas').height();\n\t\t\t\t\tvar settings = this.get('settings');\n\t\t\t\t\tvar svgString = renderSvg(data, settings, width, height);\n\t\t\t\t\tthis.onSignatureData(svgString);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/* eslint-disable */\n\n\t/** @license\n jSignature v2 SVG export plugin.\n */\n\t/**\n Copyright (c) 2012 Willow Systems Corp http://willow-systems.com\n MIT License <http://www.opensource.org/licenses/mit-license.php>\n */\n\n\tvar renderSvg = function () {\n\t\t'use strict';\n\t\t(function (a, b) {\n\t\t\tfunction c(a, b) {\n\t\t\t\tvar c = a.x - b.x,\n\t\t\t\t    d = a.y - b.y;return c * c + d * d;\n\t\t\t}function d(a, b, c) {\n\t\t\t\tvar d = b.x,\n\t\t\t\t    e = b.y,\n\t\t\t\t    f = c.x - d,\n\t\t\t\t    g = c.y - e,\n\t\t\t\t    h;if (f !== 0 || g !== 0) h = ((a.x - d) * f + (a.y - e) * g) / (f * f + g * g), h > 1 ? (d = c.x, e = c.y) : h > 0 && (d += f * h, e += g * h);return f = a.x - d, g = a.y - e, f * f + g * g;\n\t\t\t}function e(a, b) {\n\t\t\t\tvar d,\n\t\t\t\t    e = a.length,\n\t\t\t\t    f,\n\t\t\t\t    g = a[0],\n\t\t\t\t    h = [g];for (d = 1; d < e; d++) {\n\t\t\t\t\tf = a[d], c(f, g) > b && (h.push(f), g = f);\n\t\t\t\t}return g !== f && h.push(f), h;\n\t\t\t}function f(a, c) {\n\t\t\t\tvar e = a.length,\n\t\t\t\t    f = (typeof Uint8Array === 'undefined' ? 'undefined' : _typeof(Uint8Array)) != b + \"\" ? Uint8Array : Array,\n\t\t\t\t    g = new f(e),\n\t\t\t\t    h = 0,\n\t\t\t\t    i = e - 1,\n\t\t\t\t    j,\n\t\t\t\t    k,\n\t\t\t\t    l,\n\t\t\t\t    m,\n\t\t\t\t    n = [],\n\t\t\t\t    o = [],\n\t\t\t\t    p = [];g[h] = g[i] = 1;while (i) {\n\t\t\t\t\tk = 0;for (j = h + 1; j < i; j++) {\n\t\t\t\t\t\tl = d(a[j], a[h], a[i]), l > k && (m = j, k = l);\n\t\t\t\t\t}k > c && (g[m] = 1, n.push(h), o.push(m), n.push(m), o.push(i)), h = n.pop(), i = o.pop();\n\t\t\t\t}for (j = 0; j < e; j++) {\n\t\t\t\t\tg[j] && p.push(a[j]);\n\t\t\t\t}return p;\n\t\t\t}\"use strict\";var g = (typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) != b + \"\" ? exports : a;g.simplify = function (a, c, d) {\n\t\t\t\tvar g = c !== b ? c * c : 1;return d || (a = e(a, g)), a = f(a, g), a;\n\t\t\t};\n\t\t})(window);\n\n\t\tfunction Vector(x, y) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.reverse = function () {\n\t\t\t\treturn new this.constructor(this.x * -1, this.y * -1);\n\t\t\t};\n\t\t\tthis._length = null;\n\t\t\tthis.getLength = function () {\n\t\t\t\tif (!this._length) {\n\t\t\t\t\tthis._length = Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));\n\t\t\t\t}\n\t\t\t\treturn this._length;\n\t\t\t};\n\n\t\t\tvar polarity = function polarity(e) {\n\t\t\t\treturn Math.round(e / Math.abs(e));\n\t\t\t};\n\t\t\tthis.resizeTo = function (length) {\n\t\t\t\t// proportionally changes x,y such that the hypotenuse (vector length) is = new length\n\t\t\t\tif (this.x === 0 && this.y === 0) {\n\t\t\t\t\tthis._length = 0;\n\t\t\t\t} else if (this.x === 0) {\n\t\t\t\t\tthis._length = length;\n\t\t\t\t\tthis.y = length * polarity(this.y);\n\t\t\t\t} else if (this.y === 0) {\n\t\t\t\t\tthis._length = length;\n\t\t\t\t\tthis.x = length * polarity(this.x);\n\t\t\t\t} else {\n\t\t\t\t\tvar proportion = Math.abs(this.y / this.x),\n\t\t\t\t\t    x = Math.sqrt(Math.pow(length, 2) / (1 + Math.pow(proportion, 2))),\n\t\t\t\t\t    y = proportion * x;\n\t\t\t\t\tthis._length = length;\n\t\t\t\t\tthis.x = x * polarity(this.x);\n\t\t\t\t\tthis.y = y * polarity(this.y);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t/**\n    * Calculates the angle between 'this' vector and another.\n    * @public\n    * @function\n    * @returns {Number} The angle between the two vectors as measured in PI.\n    */\n\t\t\tthis.angleTo = function (vectorB) {\n\t\t\t\tvar divisor = this.getLength() * vectorB.getLength();\n\t\t\t\tif (divisor === 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t} else {\n\t\t\t\t\t// JavaScript floating point math is screwed up.\n\t\t\t\t\t// because of it, the core of the formula can, on occasion, have values\n\t\t\t\t\t// over 1.0 and below -1.0.\n\t\t\t\t\treturn Math.acos(Math.min(Math.max((this.x * vectorB.x + this.y * vectorB.y) / divisor, -1.0), 1.0)) / Math.PI;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfunction Point(x, y) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\n\t\t\tthis.getVectorToCoordinates = function (x, y) {\n\t\t\t\treturn new Vector(x - this.x, y - this.y);\n\t\t\t};\n\t\t\tthis.getVectorFromCoordinates = function (x, y) {\n\t\t\t\treturn this.getVectorToCoordinates(x, y).reverse();\n\t\t\t};\n\t\t\tthis.getVectorToPoint = function (point) {\n\t\t\t\treturn new Vector(point.x - this.x, point.y - this.y);\n\t\t\t};\n\t\t\tthis.getVectorFromPoint = function (point) {\n\t\t\t\treturn this.getVectorToPoint(point).reverse();\n\t\t\t};\n\t\t}\n\n\t\t/**\n  Allows one to round a number to arbitrary precision.\n  Math.round() rounds to whole only.\n  Number.toFixed(precision) returns a string.\n  I need float to float, but with arbitrary precision, hence:\n  @public\n  @function\n  @param number {Number}\n  @param position {Number} number of digits right of decimal point to keep. If negative, rounding to the left of decimal.\n  @returns {Type}\n  */\n\t\tfunction round(number, position) {\n\t\t\tvar tmp = Math.pow(10, position);\n\t\t\treturn Math.round(number * tmp) / tmp;\n\t\t}\n\n\t\t//\t/**\n\t\t//\t * This is a simple, points-to-lines (not curves) renderer.\n\t\t//\t * Keeping it around so we can activate it from time to time and see\n\t\t//\t * if smoothing logic is off much.\n\t\t//\t * @public\n\t\t//\t * @function\n\t\t//\t * @returns {String} Like so \"l 1 2 3 5' with stroke as long line chain.\n\t\t//\t */\n\t\t//\tfunction compressstroke(stroke, shiftx, shifty){\n\t\t//\t\t// we combine strokes data into string like this:\n\t\t//\t\t// 'M 53 7 l 1 2 3 4 -5 -6 5 -6'\n\t\t//\t\t// see SVG documentation for Path element's 'd' argument.\n\t\t//\t\tvar lastx = stroke.x[0]\n\t\t//\t\t, lasty = stroke.y[0]\n\t\t//\t\t, i\n\t\t//\t\t, l = stroke.x.length\n\t\t//\t\t, answer = ['M', lastx - shiftx, lasty - shifty, 'l']\n\t\t//\n\t\t//\t\tif (l === 1){\n\t\t//\t\t\t// meaning this was just a DOT, not a stroke.\n\t\t//\t\t\t// instead of creating a circle, we just create a short line\n\t\t//\t\t\tanswer.concat(1, -1)\n\t\t//\t\t} else {\n\t\t//\t\t\tfor(i = 1; i < l; i++){\n\t\t//\t\t\t\tanswer = answer.concat(stroke.x[i] - lastx, stroke.y[i] - lasty)\n\t\t//\t\t\t\tlastx = stroke.x[i]\n\t\t//\t\t\t\tlasty = stroke.y[i]\n\t\t//\t\t\t}\n\t\t//\t\t}\n\t\t//\t\treturn answer.join(' ')\n\t\t//\t}\n\n\t\tfunction segmentToCurve(stroke, positionInStroke, lineCurveThreshold) {\n\t\t\t'use strict';\n\t\t\t// long lines (ones with many pixels between them) do not look good when they are part of a large curvy stroke.\n\t\t\t// You know, the jaggedy crocodile spine instead of a pretty, smooth curve. Yuck!\n\t\t\t// We want to approximate pretty curves in-place of those ugly lines.\n\t\t\t// To approximate a very nice curve we need to know the direction of line before and after.\n\t\t\t// Hence, on long lines we actually wait for another point beyond it to come back from\n\t\t\t// mousemoved before we draw this curve.\n\n\t\t\t// So for \"prior curve\" to be calc'ed we need 4 points\n\t\t\t// \tA, B, C, D (we are on D now, A is 3 points in the past.)\n\t\t\t// and 3 lines:\n\t\t\t//  pre-line (from points A to B),\n\t\t\t//  this line (from points B to C), (we call it \"this\" because if it was not yet, it's the only one we can draw for sure.)\n\t\t\t//  post-line (from points C to D) (even through D point is 'current' we don't know how we can draw it yet)\n\t\t\t//\n\t\t\t// Well, actually, we don't need to *know* the point A, just the vector A->B\n\n\t\t\t// Again, we can only derive curve between points positionInStroke-1 and positionInStroke\n\t\t\t// Thus, since we can only draw a line if we know one point ahead of it, we need to shift our focus one point ahead.\n\n\t\t\tpositionInStroke += 1;\n\t\t\t// Let's hope the code that calls us knows we do that and does not call us with positionInStroke = index of last point.\n\n\t\t\tvar Cpoint = new Point(stroke.x[positionInStroke - 1], stroke.y[positionInStroke - 1]),\n\t\t\t    Dpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke]),\n\t\t\t    CDvector = Cpoint.getVectorToPoint(Dpoint);\n\t\t\t// Again, we have a chance here to draw only PREVIOUS line segment - BC\n\n\t\t\t// So, let's start with BC curve.\n\t\t\t// if there is only 2 points in stroke array (C, D), we don't have \"history\" long enough to have point B, let alone point A.\n\t\t\t// so positionInStroke should start with 2, ie\n\t\t\t// we are here when there are at least 3 points in stroke array.\n\t\t\tvar Bpoint = new Point(stroke.x[positionInStroke - 2], stroke.y[positionInStroke - 2]),\n\t\t\t    BCvector = Bpoint.getVectorToPoint(Cpoint),\n\t\t\t    ABvector,\n\t\t\t    rounding = 2;\n\n\t\t\tif (BCvector.getLength() > lineCurveThreshold) {\n\t\t\t\t// Yey! Pretty curves, here we come!\n\t\t\t\tif (positionInStroke > 2) {\n\t\t\t\t\tABvector = new Point(stroke.x[positionInStroke - 3], stroke.y[positionInStroke - 3]).getVectorToPoint(Bpoint);\n\t\t\t\t} else {\n\t\t\t\t\tABvector = new Vector(0, 0);\n\t\t\t\t}\n\t\t\t\tvar minlenfraction = 0.05,\n\t\t\t\t    maxlen = BCvector.getLength() * 0.35,\n\t\t\t\t    ABCangle = BCvector.angleTo(ABvector.reverse()),\n\t\t\t\t    BCDangle = CDvector.angleTo(BCvector.reverse()),\n\t\t\t\t    BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(Math.max(minlenfraction, ABCangle) * maxlen),\n\t\t\t\t    CtoCP2vector = new Vector(BCvector.x + CDvector.x, BCvector.y + CDvector.y).reverse().resizeTo(Math.max(minlenfraction, BCDangle) * maxlen),\n\t\t\t\t    BtoCP2vector = new Vector(BCvector.x + CtoCP2vector.x, BCvector.y + CtoCP2vector.y);\n\n\t\t\t\t// returing curve for BC segment\n\t\t\t\t// all coords are vectors against Bpoint\n\t\t\t\treturn ['c' // bezier curve\n\t\t\t\t, round(BtoCP1vector.x, rounding), round(BtoCP1vector.y, rounding), round(BtoCP2vector.x, rounding), round(BtoCP2vector.y, rounding), round(BCvector.x, rounding), round(BCvector.y, rounding)];\n\t\t\t} else {\n\t\t\t\treturn ['l' // line\n\t\t\t\t, round(BCvector.x, rounding), round(BCvector.y, rounding)];\n\t\t\t}\n\t\t}\n\n\t\tfunction lastSegmentToCurve(stroke, lineCurveThreshold) {\n\t\t\t'use strict';\n\t\t\t// Here we tidy up things left unfinished\n\n\t\t\t// What's left unfinished there is the curve between the last points\n\t\t\t// in the stroke\n\t\t\t// We can also be called when there is only one point in the stroke (meaning, the\n\t\t\t// stroke was just a dot), in which case there is nothing for us to do.\n\n\t\t\t// So for \"this curve\" to be calc'ed we need 3 points\n\t\t\t// \tA, B, C\n\t\t\t// and 2 lines:\n\t\t\t//  pre-line (from points A to B),\n\t\t\t//  this line (from points B to C)\n\t\t\t// Well, actually, we don't need to *know* the point A, just the vector A->B\n\t\t\t// so, we really need points B, C and AB vector.\n\n\t\t\tvar positionInStroke = stroke.x.length - 1;\n\n\t\t\t// there must be at least 2 points in the stroke.for us to work. Hope calling code checks for that.\n\t\t\tvar Cpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke]),\n\t\t\t    Bpoint = new Point(stroke.x[positionInStroke - 1], stroke.y[positionInStroke - 1]),\n\t\t\t    BCvector = Bpoint.getVectorToPoint(Cpoint),\n\t\t\t    rounding = 2;\n\n\t\t\tif (positionInStroke > 1 && BCvector.getLength() > lineCurveThreshold) {\n\t\t\t\t// we have at least 3 elems in stroke\n\t\t\t\tvar ABvector = new Point(stroke.x[positionInStroke - 2], stroke.y[positionInStroke - 2]).getVectorToPoint(Bpoint),\n\t\t\t\t    ABCangle = BCvector.angleTo(ABvector.reverse()),\n\t\t\t\t    minlenfraction = 0.05,\n\t\t\t\t    maxlen = BCvector.getLength() * 0.35,\n\t\t\t\t    BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(Math.max(minlenfraction, ABCangle) * maxlen);\n\n\t\t\t\treturn ['c' // bezier curve\n\t\t\t\t, round(BtoCP1vector.x, rounding), round(BtoCP1vector.y, rounding), round(BCvector.x, rounding) // CP2 is same as Cpoint\n\t\t\t\t, round(BCvector.y, rounding) // CP2 is same as Cpoint\n\t\t\t\t, round(BCvector.x, rounding), round(BCvector.y, rounding)];\n\t\t\t} else {\n\t\t\t\t// Since there is no AB leg, there is no curve to draw. This is just line\n\t\t\t\treturn ['l' // simple line\n\t\t\t\t, round(BCvector.x, rounding), round(BCvector.y, rounding)];\n\t\t\t}\n\t\t}\n\n\t\tfunction addstroke(stroke, shiftx, shifty) {\n\t\t\t'use strict';\n\t\t\t// we combine strokes data into string like this:\n\t\t\t// 'M 53 7 l 1 2 c 3 4 -5 -6 5 -6'\n\t\t\t// see SVG documentation for Path element's 'd' argument.\n\n\t\t\tvar lines = ['M' // move to\n\t\t\t, round(stroke.x[0] - shiftx, 2), round(stroke.y[0] - shifty, 2)]\n\t\t\t// processing all points but first and last.\n\t\t\t,\n\t\t\t    i = 1 // index zero item in there is STARTING point. we already extracted it.\n\t\t\t,\n\t\t\t    l = stroke.x.length - 1 // this is a trick. We are leaving last point coordinates for separate processing.\n\t\t\t,\n\t\t\t    lineCurveThreshold = 1;\n\n\t\t\tfor (; i < l; i++) {\n\t\t\t\tlines.push.apply(lines, segmentToCurve(stroke, i, lineCurveThreshold));\n\t\t\t}\n\t\t\tif (l > 0 /* effectively more than 1, since we \"-1\" above */) {\n\t\t\t\t\tlines.push.apply(lines, lastSegmentToCurve(stroke, i, lineCurveThreshold));\n\t\t\t\t} else if (l === 0) {\n\t\t\t\t// meaning we only have ONE point in the stroke (and otherwise refer to the stroke as \"dot\")\n\t\t\t\tlines.push.apply(lines, ['l', 1, 1]);\n\t\t\t}\n\t\t\treturn lines.join(' ');\n\t\t}\n\n\t\tfunction simplifystroke(stroke) {\n\t\t\tvar d = [],\n\t\t\t    newstroke = { 'x': [], 'y': [] },\n\t\t\t    i,\n\t\t\t    l;\n\n\t\t\tfor (i = 0, l = stroke.x.length; i < l; i++) {\n\t\t\t\td.push({ 'x': stroke.x[i], 'y': stroke.y[i] });\n\t\t\t}\n\t\t\td = window.simplify(d, 0.7, true);\n\t\t\tfor (i = 0, l = d.length; i < l; i++) {\n\t\t\t\tnewstroke.x.push(d[i].x);\n\t\t\t\tnewstroke.y.push(d[i].y);\n\t\t\t}\n\t\t\treturn newstroke;\n\t\t}\n\n\t\t// generate SVG style from settings\n\t\tfunction styleFromSettings(settings) {\n\t\t\tvar styles = [];\n\t\t\tvar meta = [\n\t\t\t// [\"style attr\", \"key in settings\", \"default value\"]\n\t\t\t[\"fill\", undefined, \"none\"], [\"stroke\", \"color\", \"#000000\"], [\"stroke-width\", \"lineWidth\", 2], [\"stroke-linecap\", undefined, \"round\"], [\"stroke-linejoin\", undefined, \"round\"]];\n\t\t\tfor (var i = meta.length - 1; i >= 0; i--) {\n\t\t\t\tvar attr = meta[i][0],\n\t\t\t\t    key = meta[i][1],\n\t\t\t\t    defaultVal = meta[i][2];\n\t\t\t\tstyles.push(attr + '=\"' + (key in settings && settings[key] ? settings[key] : defaultVal) + '\"');\n\t\t\t}\n\t\t\treturn styles.join(' ');\n\t\t}\n\n\t\t//\tfunction compressstrokes(data, settings){\n\t\t//\t\t'use strict'\n\t\t//\n\t\t//\t\tvar answer = [\n\t\t//\t\t\t'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>',\n\t\t//\t\t\t'<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">'\n\t\t//\t\t];\n\t\t//\n\t\t//\t\tvar i , l = data.length;\n\t\t//\t\tvar stroke,\n\t\t//\t\t\txlimits = [],\n\t\t//\t\t\tylimits = [],\n\t\t//\t\t\tsizex = 0,\n\t\t//\t\t\tsizey = 0,\n\t\t//\t\t\tshiftx = 0,\n\t\t//\t\t\tshifty = 0,\n\t\t//\t\t\tminx, maxx, miny, maxy, padding = 1,\n\t\t//\t\t\tsimplifieddata = [];\n\t\t//\n\t\t//\t\tif(l !== 0){\n\t\t//\t\t\tfor(i = 0; i < l; i++){\n\t\t//\t\t\t\tstroke = simplifystroke( data[i] )\n\t\t//\t\t\t\tsimplifieddata.push(stroke)\n\t\t//\t\t\t\txlimits = xlimits.concat(stroke.x)\n\t\t//\t\t\t\tylimits = ylimits.concat(stroke.y)\n\t\t//\t\t\t}\n\t\t//\n\t\t//\t\t\tminx = Math.min.apply(null, xlimits) - padding\n\t\t//\t\t\tmaxx = Math.max.apply(null, xlimits) + padding\n\t\t//\t\t\tminy = Math.min.apply(null, ylimits) - padding\n\t\t//\t\t\tmaxy = Math.max.apply(null, ylimits) + padding\n\t\t//\t\t\tshiftx = minx < 0? 0 : minx\n\t\t//\t\t\tshifty = miny < 0? 0 : miny\n\t\t//\t\t\tsizex = maxx - minx\n\t\t//\t\t\tsizey = maxy - miny\n\t\t//\t\t}\n\t\t//\n\t\t//\t\tanswer.push(\n\t\t//\t\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"'+\n\t\t//\t\t\tsizex.toString() +\n\t\t//\t\t\t'\" height=\"'+\n\t\t//\t\t\tsizey.toString() +\n\t\t//\t\t\t'\">'\n\t\t//\t\t)\n\t\t//\n\t\t//\t\tfor(i = 0, l = simplifieddata.length; i < l; i++){\n\t\t//\t\t\tstroke = simplifieddata[i]\n\t\t//\t\t\tanswer.push('<path ' + styleFromSettings(settings) + ' d=\"'+ addstroke(stroke, shiftx, shifty) + '\"/>')\n\t\t//\t\t}\n\t\t//\t\tanswer.push('</svg>')\n\t\t//\t\treturn answer.join('')\n\t\t//\t}\n\n\t\t/**\n   * busybusy revamp to get rid of cropping\n   *\n   */\n\t\tfunction renderSvg(data, settings, width, height) {\n\t\t\tvar simplified = data.map(function (stroke) {\n\t\t\t\treturn simplifystroke(stroke);\n\t\t\t});\n\t\t\tvar strokes = simplified.map(function (stroke) {\n\t\t\t\treturn addstroke(stroke, 0, 0);\n\t\t\t});\n\n\t\t\tvar pathStyle = styleFromSettings(settings);\n\t\t\tvar pathOpen = '<path ' + pathStyle + ' d=\"';\n\t\t\tvar pathClose = '\"/>';\n\t\t\tvar paths = strokes && Array.isArray(strokes) ? pathOpen + strokes.join(pathClose + pathOpen) + pathClose : '';\n\n\t\t\treturn ['<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>', '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">', '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"' + width + '\" height=\"' + height + '\">', paths, '</svg>'].join('');\n\t\t}\n\n\t\treturn renderSvg;\n\t}();\n\n\t/* eslint-enable */\n});","define('busy-app/components/busy-sliding-panel', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-sliding-panel'],\n\n\t\tshowPanel: false,\n\t\tisHidden: true,\n\t\tshowContainer: false,\n\n\t\t__showPanel: Ember.observer('showPanel', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.get('showPanel')) {\n\t\t\t\tthis.set('showContainer', true);\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\treturn _this.set('isHidden', false);\n\t\t\t\t}, 100);\n\t\t\t} else {\n\t\t\t\tthis.set('isHidden', true);\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\treturn _this.set('showContainer', false);\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-status-bar', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-status-bar'],\n\t\tclassNameBindings: ['error'],\n\n\t\terror: false,\n\t\ticon: null,\n\t\ttext: null,\n\t\tsubText: null,\n\t\tbadgeText: null,\n\t\tdetailsLabel: null,\n\t\tdetailsText: null,\n\n\t\ttextAction: null,\n\t\tsubTextAction: null,\n\t\tbadgeAction: null,\n\t\tdetailsLabelAction: null,\n\t\tdetailsTextAction: null,\n\n\t\thasTextAction: Ember.computed('textAction', function () {\n\t\t\treturn this.isAction('textAction');\n\t\t}),\n\t\thasSubTextAction: Ember.computed('subTextAction', function () {\n\t\t\treturn this.isAction('subTextAction');\n\t\t}),\n\t\thasBadgeAction: Ember.computed('badgeAction', function () {\n\t\t\treturn this.isAction('badgeAction');\n\t\t}),\n\t\thasDetailsLabelAction: Ember.computed('detailsLabelAction', function () {\n\t\t\treturn this.isAction('detailsLabelAction');\n\t\t}),\n\t\thasDetailsTextAction: Ember.computed('detailsTextAction', function () {\n\t\t\treturn this.isAction('detailsTextAction');\n\t\t}),\n\n\t\tisAction: function isAction(key) {\n\t\t\treturn !Ember.isNone(this.get(key));\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonTextAction: function onTextAction() {\n\t\t\t\tif (this.isAction('textAction')) {\n\t\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction.apply(this, ['textAction'].concat(_toConsumableArray(args)));\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'textAction is not a valid action';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSubTextAction: function onSubTextAction() {\n\t\t\t\tif (this.isAction('subTextAction')) {\n\t\t\t\t\tfor (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t\t\t\t\t\targs[_key2] = arguments[_key2];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction.apply(this, ['subTextAction'].concat(_toConsumableArray(args)));\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'subTextAction is not a valid action';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonBadgeAction: function onBadgeAction() {\n\t\t\t\tif (this.isAction('badgeAction')) {\n\t\t\t\t\tfor (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n\t\t\t\t\t\targs[_key3] = arguments[_key3];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction.apply(this, ['badgeAction'].concat(_toConsumableArray(args)));\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'badgeAction is not a valid action';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDetailsLabelAction: function onDetailsLabelAction() {\n\t\t\t\tif (this.isAction('detailsLabelAction')) {\n\t\t\t\t\tfor (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n\t\t\t\t\t\targs[_key4] = arguments[_key4];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction.apply(this, ['detailsLabelAction'].concat(_toConsumableArray(args)));\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'detailsLabelAction is not a valid action';\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDetailsTextAction: function onDetailsTextAction() {\n\t\t\t\tif (this.isAction('detailsTextAction')) {\n\t\t\t\t\tfor (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n\t\t\t\t\t\targs[_key5] = arguments[_key5];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendAction.apply(this, ['detailsTextAction'].concat(_toConsumableArray(args)));\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'detailsTextAction is not a valid action';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-terms', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-terms'],\n\n\t\tisScrolled: false,\n\n\t\tinitScroll: function initScroll() {\n\t\t\tvar _this = this;\n\n\t\t\tvar $dialogBody = Ember.$('.busy-terms > .dialog-main > .dialog-body');\n\t\t\tif (!Ember.isNone($dialogBody)) {\n\t\t\t\t$dialogBody.scroll(function (evt) {\n\t\t\t\t\t_this.checkScroll(evt);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.initScroll();\n\t\t},\n\t\tcheckScroll: function checkScroll(evt) {\n\t\t\tvar navTop = Ember.$(evt.target).find('#navigation').offset().top;\n\t\t\tvar navHeight = Ember.$(evt.target).find('#navigation').height();\n\t\t\tif (navTop + navHeight > 0) {\n\t\t\t\tthis.set('isScrolled', false);\n\t\t\t} else {\n\t\t\t\tthis.set('isScrolled', true);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tscrollTo: function scrollTo(id) {\n\t\t\t\tvar $dialogBody = Ember.$('.busy-terms > .dialog-main > .dialog-body');\n\t\t\t\tvar link = Ember.$('#' + id).offset().top;\n\t\t\t\tvar position = $dialogBody.scrollTop();\n\t\t\t\t$dialogBody.animate({\n\t\t\t\t\tscrollTop: link + position - 50\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tscrollToTop: function scrollToTop() {\n\t\t\t\tvar $dialogBody = Ember.$('.busy-terms > .dialog-main > .dialog-body');\n\t\t\t\tvar nav = Ember.$('#navigation').offset().top;\n\t\t\t\tvar position = $dialogBody.scrollTop();\n\t\t\t\tvar top = position + nav - 125;\n\n\t\t\t\t$dialogBody.animate({\n\t\t\t\t\tscrollTop: top\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tcloseTermsDialog: function closeTermsDialog() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-time-picker', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-time-picker'],\n\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tseconds: 0,\n\t\thoursInt: 0,\n\t\tminutesInt: 0,\n\n\t\tvalue: null,\n\n\t\ttimeRoundingInterval: 1,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.secondsChanged();\n\n\t\t\tvar interval = 1;\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\tinterval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n\t\t\t}\n\t\t\tthis.set('timeRoundingInterval', interval);\n\t\t},\n\n\n\t\thourString: Ember.computed('hoursInt', function () {\n\t\t\treturn this.get('hoursInt');\n\t\t}),\n\n\t\tminuteString: Ember.computed('minutesInt', function () {\n\t\t\treturn this.get('minutesInt') < 10 ? '0' + this.get('minutesInt') : this.get('minutesInt');\n\t\t}),\n\n\t\tsecondsChanged: Ember.observer('seconds', function () {\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tvar _Time$convertSeconds = _utils.Time.convertSeconds(this.get('seconds'), 2),\n\t\t\t\t    hours = _Time$convertSeconds.hours,\n\t\t\t\t    minutes = _Time$convertSeconds.minutes;\n\n\t\t\t\tminutes = this.roundMinutes(minutes); // get rounded minutes\n\n\t\t\t\tthis.set('hoursInt', hours);\n\t\t\t\tthis.set('minutesInt', minutes);\n\n\t\t\t\tminutes = minutes < 10 ? '0' + minutes : minutes;\n\t\t\t\tthis.set('value', hours + ':' + minutes);\n\t\t\t}\n\t\t}),\n\n\t\tsetSeconds: function setSeconds() {\n\t\t\tvar oValue = this.get('value');\n\t\t\tif (!Ember.isNone(oValue) && typeof oValue === 'string') {\n\t\t\t\tvar value = oValue.replace(/[^hm.:\\d]/g, '');\n\t\t\t\tvar seconds = 0;\n\t\t\t\tif (/(h)|(m)/.test(value)) {\n\t\t\t\t\tvalue = value.replace(/([.\\d]*)h/, '$1-');\n\t\t\t\t\tvalue = value.replace(/-?([.\\d]*)m/, '-$1');\n\t\t\t\t\tvalue = value.split('-');\n\n\t\t\t\t\tvar hours = parseInt(value[0], 10) || 0;\n\t\t\t\t\tvar minutes = this.roundMinutes(value[1] || 0); // get minutes rounded\n\n\t\t\t\t\tseconds = hours * 60 * 60 + minutes * 60;\n\t\t\t\t} else if (!/:/.test(value)) {\n\t\t\t\t\tvar _value = parseFloat(value);\n\t\t\t\t\tif (_value < 25) {\n\t\t\t\t\t\t// assume value entered in hours\n\t\t\t\t\t\tseconds = _value * 60 * 60;\n\t\t\t\t\t} else if (_value < 100) {\n\t\t\t\t\t\t// assume value entered in minutes\n\t\t\t\t\t\tseconds = _value * 60;\n\t\t\t\t\t} else if (_value < 1000) {\n\t\t\t\t\t\t// assume lazy value ex: 130 === 1:30\n\t\t\t\t\t\tvar _hours = parseInt(value.toString()[0], 10);\n\t\t\t\t\t\tvar _minutes = this.roundMinutes(value.toString().slice(1)); // get minutes rounded\n\t\t\t\t\t\tseconds = _hours * 60 * 60 + _minutes * 60;\n\t\t\t\t\t} else if (_value < 2401) {\n\t\t\t\t\t\t// assume large lazy value ex: 1030 === 10:30\n\t\t\t\t\t\tvar _hours2 = parseInt(value.toString().slice(0, 2), 10);\n\t\t\t\t\t\tvar _minutes2 = this.roundMinutes(value.toString().slice(2)); // get minutes rounded\n\t\t\t\t\t\tseconds = _hours2 * 60 * 60 + _minutes2 * 60;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// assume value entered in seconds\n\t\t\t\t\t\tseconds = _value;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar _value$split = value.split(':'),\n\t\t\t\t\t    _value$split2 = _slicedToArray(_value$split, 2),\n\t\t\t\t\t    _hours3 = _value$split2[0],\n\t\t\t\t\t    _minutes3 = _value$split2[1];\n\n\t\t\t\t\t_hours3 = _hours3.length ? parseInt(_hours3, 10) : 0;\n\t\t\t\t\t_minutes3 = this.roundMinutes(_minutes3.length ? _minutes3 : 0); // get minutes rounded\n\t\t\t\t\tseconds = _hours3 * 60 * 60 + _minutes3 * 60;\n\t\t\t\t}\n\n\t\t\t\tif (isNaN(seconds)) {\n\t\t\t\t\tseconds = 0;\n\t\t\t\t} else if (seconds > 86400) {\n\t\t\t\t\tseconds = 86400;\n\t\t\t\t}\n\n\t\t\t\tif (seconds === this.get('seconds')) {\n\t\t\t\t\tthis.secondsChanged();\n\t\t\t\t}\n\t\t\t\tthis.set('seconds', seconds);\n\t\t\t}\n\t\t},\n\t\tcalcValue: function calcValue() {\n\t\t\t// get hours as an integer\n\t\t\tvar hours = parseInt(this.get('hoursInt'), 10);\n\n\t\t\t// round minutes to nearest interval\n\t\t\tvar minutes = this.roundMinutes(this.get('minutesInt'));\n\n\t\t\t// save seconds\n\t\t\tthis.set('seconds', (hours * 60 + minutes) * 60);\n\t\t},\n\t\troundMinutes: function roundMinutes(minutes) {\n\t\t\t// make sure input is a number otherwise convert it\n\t\t\tif (typeof minutes !== 'number') {\n\t\t\t\tminutes = parseInt(minutes, 10);\n\t\t\t}\n\n\t\t\t// get rounding interval\n\t\t\tvar interval = this.get('timeRoundingInterval');\n\n\t\t\t// only round numbers when interval is greater than 1\n\t\t\tif (interval > 1 && minutes % interval !== 0) {\n\t\t\t\tminutes = (0, _roundTime.round)(minutes, interval);\n\t\t\t}\n\n\t\t\t// return minutes\n\t\t\treturn minutes;\n\t\t},\n\t\tcalcNumber: function calcNumber(addTo, number, min, max) {\n\t\t\tvar interval = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n\t\t\t(true && !(min < max) && Ember.assert('Min must be less than max', min < max));\n\n\t\t\tif (addTo) {\n\t\t\t\tnumber = number + interval > max ? min : number + interval;\n\t\t\t} else {\n\t\t\t\tnumber = number - interval < min ? max : number - interval;\n\t\t\t}\n\t\t\treturn number;\n\t\t},\n\t\topenMenuAction: function openMenuAction() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isOpen', true);\n\t\t\tEmber.$('body').unbind('click.busy-time-picker');\n\t\t\tEmber.$('body').bind('click.busy-time-picker', function (e) {\n\t\t\t\tvar el = Ember.$(e.target);\n\t\t\t\tvar self = _this.$();\n\t\t\t\tif (!Ember.isNone(self) && self.attr('class') !== el.attr('class')) {\n\t\t\t\t\t_this.closeMenuAction();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tcloseMenuAction: function closeMenuAction() {\n\t\t\tthis.set('isOpen', false);\n\t\t\tEmber.$('body').unbind('click.busy-time-picker');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tfocusOutAction: function focusOutAction() {\n\t\t\t\tthis.setSeconds();\n\t\t\t},\n\t\t\tenterAction: function enterAction() {\n\t\t\t\tthis.setSeconds();\n\t\t\t},\n\t\t\ttoggle: function toggle() {\n\t\t\t\tif (!this.get('isOpen')) {\n\t\t\t\t\tthis.openMenuAction();\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenuAction();\n\t\t\t\t}\n\t\t\t},\n\t\t\ttoggleHours: function toggleHours(addTo) {\n\t\t\t\tif (this.get('hoursInt') === 23 && addTo) {\n\t\t\t\t\tthis.set('minutesInt', 0);\n\t\t\t\t}\n\t\t\t\tthis.set('hoursInt', this.calcNumber(addTo, this.get('hoursInt'), 0, 24, 1));\n\t\t\t\tthis.calcValue();\n\t\t\t},\n\t\t\ttoggleMinutes: function toggleMinutes(addTo) {\n\t\t\t\tvar interval = this.get('timeRoundingInterval');\n\t\t\t\tif (this.get('minutesInt') === 0 && this.get('hoursInt') === 0 && !addTo) {\n\t\t\t\t\tthis.set('hoursInt', 24);\n\t\t\t\t\tthis.set('minutesInt', 0);\n\t\t\t\t} else if (this.get('minutesInt') === 0 && this.get('hoursInt') === 24 && addTo) {\n\t\t\t\t\tthis.set('hoursInt', 0);\n\t\t\t\t\tthis.set('minutesInt', 0);\n\t\t\t\t} else if (this.get('minutesInt') === 60 - interval && addTo || this.get('minutesInt') === 0 && !addTo || this.get('hoursInt') === 24 && addTo) {\n\t\t\t\t\tthis.set('hoursInt', this.calcNumber(addTo, this.get('hoursInt'), 0, 24, 1));\n\t\t\t\t\tthis.set('minutesInt', this.calcNumber(addTo, this.get('minutesInt'), 0, 60 - interval, interval));\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('minutesInt', this.calcNumber(addTo, this.get('minutesInt'), 0, 60 - interval, interval));\n\t\t\t\t}\n\t\t\t\tthis.calcValue();\n\t\t\t},\n\t\t\tchangePeriod: function changePeriod() {\n\t\t\t\tthis.set('periodBool', !this.get('periodBool'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/busy-title', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['busy-title'],\n\t\ttitleName: '',\n\n\t\tactions: {\n\t\t\tbuttonClick: function buttonClick() {\n\t\t\t\tthis.sendAction('onClick');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/charts/bar-chart', ['exports', 'busy-app/components/charts/base-chart', '@busy-web/utils'], function (exports, _baseChart, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _baseChart.default.extend({\n\t\tclassNames: ['c-charts-bar-chart'],\n\n\t\t/**\n   * The chart type\n   *\n   * @private\n   * @property type\n   * @type string\n   */\n\t\ttype: 'bar',\n\t\tresponsive: true,\n\t\tfullWidth: true,\n\t\tgridLines: true,\n\n\t\tpageSize: 9,\n\t\tlabels: null,\n\t\tshowXAxis: true,\n\t\tshowYAxis: true,\n\n\t\tcolors: Ember.computed('model', 'modelPath', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar colors = ['#63c3af', '#37c9dc'];\n\t\t\tvar paths = this.get('modelPath') || Ember.A(['']);\n\t\t\tif (typeof paths === 'string') {\n\t\t\t\tpaths = paths.split(',');\n\t\t\t}\n\n\t\t\tvar color = [];\n\t\t\tpaths.forEach(function (item, index) {\n\t\t\t\tvar path = ('model.' + item).replace(/\\.$/, '');\n\t\t\t\tvar models = _this.get(path) || [];\n\t\t\t\tvar _color = [];\n\t\t\t\tmodels.forEach(function () {\n\t\t\t\t\t_color.push(colors[index]);\n\t\t\t\t});\n\n\t\t\t\tif (!Ember.isEmpty(_color)) {\n\t\t\t\t\tcolor.push(_color);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn color;\n\t\t}),\n\n\t\taddOptions: function addOptions(options) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar paths = this.get('modelPath') || Ember.A(['']);\n\t\t\tvar showXAxis = this.get('showXAxis');\n\t\t\tvar showYAxis = this.get('showYAxis');\n\t\t\tvar gridLines = this.get('gridLines');\n\t\t\tif (typeof paths === 'string') {\n\t\t\t\tpaths = paths.split(',');\n\t\t\t}\n\n\t\t\tvar yAxes = [];\n\t\t\tvar xAxes = [];\n\t\t\tpaths.forEach(function (item, index) {\n\t\t\t\tyAxes.push({\n\t\t\t\t\ttype: 'linear',\n\t\t\t\t\tid: 'y-axis-' + index,\n\t\t\t\t\tdisplay: showYAxis,\n\t\t\t\t\tposition: _this2.get('type') === 'horizontalBar' ? 'top' : 'left',\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\tdisplay: gridLines,\n\t\t\t\t\t\tlineWidth: 1\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tbeginAtZero: true\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\txAxes.push({\n\t\t\t\t\ttype: 'category',\n\t\t\t\t\tid: 'x-axis-' + index,\n\t\t\t\t\tdisplay: showXAxis || index === 1,\n\t\t\t\t\tposition: _this2.get('type') === 'horizontalBar' ? 'left' : 'bottom',\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\tdisplay: gridLines,\n\t\t\t\t\t\toffsetGridLines: true\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\toptions.legend.display = false;\n\n\t\t\toptions.scales = {};\n\t\t\tif (this.get('type') === 'horizontalBar') {\n\t\t\t\toptions.scales.yAxes = xAxes;\n\t\t\t\toptions.scales.xAxes = yAxes;\n\t\t\t} else {\n\t\t\t\toptions.scales.yAxes = yAxes;\n\t\t\t\toptions.scales.xAxes = xAxes;\n\t\t\t}\n\t\t},\n\n\n\t\tchartOptions: Ember.computed(function () {\n\t\t\tvar paths = this.getOptionAsArray('modelPath');\n\t\t\tvar borderColor = this.get('borderColor') || this.get('colors');\n\t\t\tvar backgroundColor = this.get('backgroundColor') || this.get('colors');\n\t\t\tvar labels = this.getOptionAsArray('legend');\n\t\t\tvar dataTypes = this.getOptionAsArray('dataType');\n\n\t\t\t// if no paths provided then add an empty path\n\t\t\t// so the loop cycles at least once.\n\t\t\tif (Ember.isEmpty(paths)) {\n\t\t\t\tpaths.push('');\n\t\t\t}\n\n\t\t\tvar yAxes = [];\n\t\t\tvar xAxes = [];\n\t\t\tpaths.forEach(function (item, index) {\n\t\t\t\tyAxes.push('y-axis-' + index);\n\t\t\t\txAxes.push('x-axis-0');\n\t\t\t});\n\n\t\t\tvar options = {\n\t\t\t\t_borderColor: borderColor,\n\t\t\t\t_backgroundColor: backgroundColor,\n\t\t\t\t_dataType: dataTypes,\n\t\t\t\tbarThickness: 36,\n\t\t\t\tstacked: true\n\t\t\t};\n\n\t\t\tif (!Ember.isEmpty(labels)) {\n\t\t\t\toptions._label = labels;\n\t\t\t}\n\n\t\t\tif (this.get('type') === 'horizontalBar') {\n\t\t\t\toptions._yAxisID = xAxes;\n\t\t\t\toptions._xAxisID = yAxes;\n\t\t\t} else {\n\t\t\t\toptions._yAxisID = yAxes;\n\t\t\t\toptions._xAxisID = xAxes;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}),\n\n\t\t/**\n   * Override of inherited method to set the\n   * information that shows up in the tooltip\n   *\n   * @public\n   * @method tooltip\n   * @param label {string}\n   * @param value {mixed}\n   * @return {string}\n   */\n\t\ttooltip: function tooltip(label, value, type) {\n\t\t\tif (type === 'time') {\n\t\t\t\t// if dataType is set to the string `time` then return a time formated string\n\t\t\t\treturn _utils.Time.convertSecondsString(value, 10, true, false, true);\n\t\t\t} else if (type === 'currency') {\n\t\t\t\t// if dataType is set to the string currency return a currency formated string\n\t\t\t\treturn this.get('auth.currencySymbol') + value.toFixed(2).toLocaleString();\n\t\t\t} else if (type === 'hours') {\n\t\t\t\treturn (0, _utils.loc)('%@ hrs', [value]);\n\t\t\t} else {\n\t\t\t\t// otherwise return the parent class default.\n\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/charts/base-chart', ['exports', 'ember-cli-chartjs/components/ember-chart', 'ember-cli-chartjs/templates/components/ember-chart', '@busy-web/utils'], function (exports, _emberChart, _emberChart2, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Components\n  *\n  */\n\tvar kColors = {\n\t\tblue: ['#2997A5', '#37C9DC', '#87DFEA', '#AFE9F1', '#D7F4F8', '#8E8E8E'],\n\t\tgreen: ['#007066', '#009588', '#33AAA0', '#66BFB8', '#99D5CF', '#8E8E8E']\n\t};\n\n\t/**\n  * `Component/Charts/BaseChart`\n  *\n  * @class BaseChart\n  * @namespace Components.Charts\n  * @extends EmberCliChartJS.EmberChart\n  */\n\texports.default = _emberChart.default.extend({\n\t\t/**\n   * default class name to wrap this component with\n   *\n   * @public\n   * @property classNames\n   * @type {array}\n   */\n\t\tclassNames: ['busy-chart'],\n\t\tclassNameBindings: ['fullWidth:full-width'],\n\n\t\t/**\n   * The layout to be used with this component\n   *\n   * @private\n   * @property layout\n   * @type {string}\n   */\n\t\tlayout: _emberChart2.default,\n\n\t\t/**\n   * Ember injected service for auth\n   *\n   * @private\n   * @property auth\n   * @type {Services.Auth}\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * The model array to pass to the chart as the\n   * charts data\n   *\n   * @public\n   * @property model\n   * @type {DS.Model}\n   */\n\t\tmodel: null,\n\n\t\t/**\n   * The path in the model to find the value of the label\n   *\n   * @public\n   * @property labelPath\n   * @type {string}\n   */\n\t\tlabelPath: '',\n\n\t\t/**\n   * The path in the model to find the value for the data\n   *\n   * @public\n   * @property dataPath\n   * @type {string}\n   */\n\t\tdataPath: '',\n\n\t\t/**\n   * The type of data to display in the tooltip\n   *\n   * this can be either `time` or 'currency` or `empty string`\n   *\n   * @public\n   * @property [dataType='']\n   * @type {string}\n   */\n\t\tdataType: '',\n\n\t\t/**\n   * This is a default color array type to use.\n   *\n   * If this is not set it will default to the blue color array\n   *\n   * @public\n   * @property color\n   * @type {string}\n   */\n\t\tcolor: 'blue',\n\n\t\t/**\n   * The max width of the chart to display\n   *\n   * @public\n   * @property [width=400]\n   * @type {number}\n   */\n\t\twidth: 400,\n\n\t\t/**\n   * The max height of the chart to display\n   *\n   * @public\n   * @property [height=400]\n   * @type {number}\n   */\n\t\theight: 400,\n\n\t\tmodelMap: null,\n\t\tsegmentShowing: 0,\n\n\t\tshowLegend: true,\n\t\tshowTooltips: true,\n\t\tcutoutPercentage: 0,\n\t\tunassignedProjects: false,\n\n\t\totherText: (0, _utils.loc)('Other'),\n\t\tbackText: (0, _utils.loc)('back'),\n\n\t\tfullWidth: false,\n\n\t\t/**\n   * Override property to set the color array to display\n   * in the chart.\n   *\n   * @public\n   * @property colors\n   * @type {array}\n   */\n\t\tcolors: Ember.computed('color', function () {\n\t\t\treturn kColors[this.get('color')] || [];\n\t\t}),\n\n\t\t/**\n   * Override property to pass the options into the parent class\n   *\n   * @public\n   * @property options\n   * @type {object}\n   */\n\t\toptions: Ember.computed('showTooltips', 'percentageInnerCutout', function () {\n\t\t\t// return the options setup for this chart.\n\t\t\tvar options = {\n\t\t\t\tlegend: {\n\t\t\t\t\tlabels: {\n\t\t\t\t\t\tfontFamily: \"proxima\"\n\t\t\t\t\t},\n\t\t\t\t\tdisplay: this.getWithDefault('showLegend', true)\n\t\t\t\t},\n\t\t\t\ttooltips: {\n\t\t\t\t\tenabled: this.get('showTooltips'),\n\t\t\t\t\ttitleFontFamily: \"proxima\",\n\t\t\t\t\tbodyFontFamily: \"proxima\",\n\t\t\t\t\tfooterFontFamily: \"proxima\"\n\t\t\t\t},\n\t\t\t\tresponsive: this.getWithDefault('responsive', true),\n\t\t\t\tmaintainAspectRatio: this.getWithDefault('maintainAspectRatio', false),\n\t\t\t\tfullWidth: this.getWithDefault('fullWidth', false)\n\t\t\t};\n\n\t\t\tthis.addOptions(options);\n\t\t\treturn options;\n\t\t}),\n\n\t\taddOptions: function addOptions() {\n\t\t\treturn;\n\t\t},\n\n\n\t\t/**\n   * Override of inherited method to init\n   * this class\n   *\n   * @public\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\t// trigger a load of the org info model\n\t\t\t// to get the currencySymbol.\n\t\t\tthis.get('auth.currencySymbol');\n\n\t\t\tthis._super.apply(this, arguments);\n\t\t},\n\n\n\t\t/**\n   * Override of inherited method to set the\n   * information that shows up in the tooltip\n   *\n   * @public\n   * @method tooltip\n   * @param label {string}\n   * @param value {mixed}\n   * @return {string}\n   */\n\t\ttooltip: function tooltip(label, value) {\n\t\t\tif (this.get('dataType') === 'time') {\n\t\t\t\t// if dataType is set to the string `time` then return a time formated string\n\t\t\t\treturn label + ' - ' + _utils.Time.convertSecondsString(value, 10, true, false, true);\n\t\t\t} else if (this.get('dataType') === 'currency') {\n\t\t\t\t// if dataType is set to the string currency return a currency formated string\n\t\t\t\treturn label + ' - ' + this.get('auth.currencySymbol') + Number(value.toFixed(2).toLocaleString());\n\t\t\t} else {\n\t\t\t\t// otherwise return the parent class default.\n\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t}\n\t\t},\n\t\tgetWithDefault: function getWithDefault(key, defaultValue) {\n\t\t\tvar val = this.get(key);\n\t\t\tif (Ember.isNone(val)) {\n\t\t\t\tval = defaultValue;\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\t\tgetOptionAsArray: function getOptionAsArray(key, defaultValue) {\n\t\t\tvar item = this.getWithDefault(key, defaultValue) || [];\n\t\t\tif (typeof item === 'string') {\n\t\t\t\titem = item.split(',');\n\t\t\t}\n\t\t\treturn item;\n\t\t}\n\t});\n});","define('busy-app/components/charts/doughnut-chart', ['exports', 'busy-app/components/charts/pie-chart'], function (exports, _pieChart) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _pieChart.default.extend({\n\t\tclassNames: ['doughnut'],\n\n\t\t/**\n   * The chart type\n   *\n   * @private\n   * @property type\n   * @type string\n   */\n\t\ttype: 'doughnut',\n\n\t\t/**\n   * The size of the doughnut hole\n   *\n   * @public\n   * @property cutoutPercentage\n   * @type number\n   */\n\t\tcutoutPercentage: 50\n\t});\n});","define('busy-app/components/charts/legacy-bar-chart', ['exports', '@busy-web/utils/loc'], function (exports, _loc) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/**\n  * Bar Chart helper object to convert values into\n  * functional properties to return in htmlbars.\n  *\n  * @class GraphObject\n  * @namespace Components.BusyCircleGraph\n  * @extends EmberObject\n  */\n\tvar graphObject = Ember.Object.extend({\n\t\ttitle: null,\n\t\thours: null,\n\t\tcost: null,\n\t\tcostWords: null,\n\t\thoursWords: null,\n\t\tnoBar: false,\n\n\t\tparentObj: null,\n\n\t\tcostStyle: Ember.computed('cost', 'parentObj.maxCost', function () {\n\t\t\t// get cost or set to default of 1\n\t\t\tvar cost = Ember.get(this, 'cost') || 1;\n\n\t\t\t// if cost is less than one set it to one.\n\t\t\tcost = cost > 1 ? cost : 1;\n\n\t\t\t// calculate the width percentage\n\t\t\tvar widthPercent = Math.ceil(cost / Ember.get(this, 'parentObj.maxCost') * 100 * 0.80);\n\n\t\t\t// return as a string of css\n\t\t\treturn Ember.String.htmlSafe('width: ' + widthPercent + '%;');\n\t\t}),\n\n\t\thoursStyle: Ember.computed('hours', 'parentObj.maxHours', function () {\n\t\t\t// get the hours or set to default of 1\n\t\t\tvar hours = Ember.get(this, 'hours') || 1;\n\n\t\t\t// if hours is less than one set it to one.\n\t\t\thours = hours > 1 ? hours : 1;\n\n\t\t\t// caclulate the with percentage\n\t\t\tvar widthPercent = Math.ceil(hours / Ember.get(this, 'parentObj.maxHours') * 100 * 0.80);\n\n\t\t\t// return as a string of css\n\t\t\treturn Ember.String.htmlSafe('width: ' + widthPercent + '%;');\n\t\t}),\n\n\t\tcostString: Ember.computed('cost', function () {\n\t\t\t// return cost or a default of 0\n\t\t\treturn Ember.get(this, 'cost') || 0;\n\t\t}),\n\n\t\thoursString: Ember.computed('hours', function () {\n\t\t\t// return hours or a default of 0\n\t\t\treturn Ember.get(this, 'hours') || 0;\n\t\t})\n\t});\n\n\t/**\n  * `Component/Charts/LegacyBarChart`\n  *\n  * @class LegacyBarChart\n  * @namespace Components.Charts\n  * @extends Component\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-charts-legacy-bar-chart'],\n\n\t\tcontent: null,\n\n\t\ttitle: null,\n\t\thours: null,\n\t\tcost: null,\n\t\ttotalHours: null,\n\t\ttotalCost: null,\n\t\ttype: null,\n\n\t\thourText: '',\n\t\tcostText: '',\n\n\t\tmaxHours: 1,\n\t\tmaxCost: 1,\n\n\t\tgraphData: null,\n\t\tsortedGraphData: null,\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\t\t\tthis.buildDataArray();\n\t\t},\n\t\tbuildDataArray: function buildDataArray() {\n\t\t\tvar _this = this;\n\n\t\t\tEmber.set(this, 'graphData', null);\n\t\t\tvar graphData = [];\n\t\t\tif (!Ember.isNone(Ember.get(this, 'content'))) {\n\t\t\t\tvar maxCost = 1;\n\t\t\t\tvar maxHours = 1;\n\t\t\t\tvar totalHours = 0;\n\t\t\t\tvar totalCost = 0;\n\t\t\t\tvar project = null;\n\n\t\t\t\tEmber.get(this, 'content').forEach(function (item) {\n\t\t\t\t\tif (Ember.get(_this, 'type') === 'Subprojects') {\n\t\t\t\t\t\tproject = Ember.get(item, 'project');\n\t\t\t\t\t} else if (Ember.get(_this, 'type') === 'Employees') {\n\t\t\t\t\t\tproject = Ember.get(_this, 'project');\n\t\t\t\t\t}\n\n\t\t\t\t\tvar member = null;\n\t\t\t\t\tvar title = Ember.get(item, Ember.get(_this, 'title'));\n\t\t\t\t\tvar hours = parseInt(Ember.get(item, Ember.get(_this, 'hours')), 10);\n\t\t\t\t\tvar cost = parseFloat(Ember.get(item, Ember.get(_this, 'cost')));\n\t\t\t\t\ttotalHours += Ember.get(item, Ember.get(_this, 'hours'));\n\t\t\t\t\ttotalCost += Ember.get(item, Ember.get(_this, 'cost'));\n\n\t\t\t\t\tif (cost > maxCost) {\n\t\t\t\t\t\tmaxCost = cost;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hours > maxHours) {\n\t\t\t\t\t\tmaxHours = hours;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(Ember.get(item, 'member'))) {\n\t\t\t\t\t\tmember = Ember.get(item, 'member');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hours > 0) {\n\t\t\t\t\t\tvar obj = graphObject.create();\n\t\t\t\t\t\tEmber.set(obj, 'title', title);\n\t\t\t\t\t\tEmber.set(obj, 'hours', hours);\n\t\t\t\t\t\tEmber.set(obj, 'cost', cost);\n\t\t\t\t\t\tEmber.set(obj, 'member', member);\n\t\t\t\t\t\tEmber.set(obj, 'project', project);\n\t\t\t\t\t\tEmber.set(obj, 'parentObj', _this);\n\n\t\t\t\t\t\tgraphData.pushObject(obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, 'maxCost', maxCost);\n\t\t\t\tEmber.set(this, 'maxHours', maxHours);\n\t\t\t\tEmber.set(this, 'totalCost', totalCost);\n\t\t\t\tEmber.set(this, 'totalHours', totalHours);\n\t\t\t}\n\n\t\t\tEmber.set(this, 'graphData', graphData.sortBy('title'));\n\t\t},\n\n\n\t\ttotalCostString: Ember.computed('totalCost', function () {\n\t\t\treturn Ember.get(this, 'totalCost') || 0;\n\t\t}),\n\n\t\ttotalHoursString: Ember.computed('totalHours', function () {\n\t\t\treturn Ember.get(this, 'totalHours') || 0;\n\t\t}),\n\n\t\tsetMaxCost: function setMaxCost() {\n\t\t\tvar _this2 = this;\n\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tif (Ember.get(item, 'cost') > Ember.get(_this2, 'maxCost')) {\n\t\t\t\t\tEmber.set(_this2, 'maxCost', Ember.get(item, 'cost'));\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.setCostStyle();\n\t\t},\n\t\tsetMaxHours: function setMaxHours() {\n\t\t\tvar _this3 = this;\n\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tif (Ember.get(item, 'hours') > Ember.get(_this3, 'maxHours')) {\n\t\t\t\t\tEmber.set(_this3, 'maxHours', Ember.get(item, 'hours'));\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.setHourStyle();\n\t\t},\n\n\n\t\tsetCostStyle: function setCostStyle() {\n\t\t\tvar _this4 = this;\n\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tvar percentage = 0;\n\t\t\t\tvar maxCost = Ember.get(_this4, 'maxCost');\n\t\t\t\tvar itemCost = Ember.get(item, 'cost');\n\t\t\t\tif (itemCost === 0 && maxCost === 0) {\n\t\t\t\t\tEmber.set(item, 'costStyle', 'width: 2%;');\n\t\t\t\t}\n\n\t\t\t\tif (itemCost === 0) {\n\t\t\t\t\tEmber.set(item, 'costStyle', 'width: ' + 2 + '%;');\n\t\t\t\t}\n\n\t\t\t\tif (itemCost !== 0 || maxCost !== 0) {\n\t\t\t\t\tpercentage = itemCost / maxCost * 100 * 0.90;\n\t\t\t\t\tif (percentage > 5) {\n\t\t\t\t\t\tEmber.set(item, 'costStyle', 'width: ' + percentage + '%;');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tsetHourStyle: function setHourStyle() {\n\t\t\tvar _this5 = this;\n\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tvar percentage = 0;\n\t\t\t\tvar maxHours = Ember.get(_this5, 'maxHours');\n\t\t\t\tvar itemHours = Ember.get(item, 'hours');\n\t\t\t\tif (itemHours === 0 && maxHours === 0) {\n\t\t\t\t\tEmber.set(item, 'hoursStyle', 'width: ' + 2 + '%;');\n\t\t\t\t}\n\n\t\t\t\tif (itemHours === 0) {\n\t\t\t\t\tEmber.set(item, 'hoursStyle', 'width: ' + 2 + '%;');\n\t\t\t\t}\n\n\t\t\t\tif (itemHours !== 0 || maxHours !== 0) {\n\t\t\t\t\tpercentage = itemHours / maxHours * 100 * 0.90;\n\t\t\t\t\tif (percentage > 5) {\n\t\t\t\t\t\tEmber.set(item, 'hoursStyle', 'width: ' + percentage + '%;');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsetCostWords: function setCostWords() {\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tvar current = Ember.get(item, 'cost');\n\t\t\t\tif (current === 0) {\n\t\t\t\t\tEmber.set(item, 'costWords', (0, _loc.default)('less than $1'));\n\t\t\t\t}\n\n\t\t\t\tif (current > 0) {\n\t\t\t\t\tEmber.set(item, 'costWords', '$' + current);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsetHourWords: function setHourWords() {\n\t\t\tEmber.get(this, 'graphData').forEach(function (item) {\n\t\t\t\tvar current = Ember.get(item, 'hours');\n\t\t\t\tif (current === 0) {\n\t\t\t\t\tEmber.set(item, 'hoursWords', (0, _loc.default)('less than 1 hour'));\n\t\t\t\t}\n\n\t\t\t\tif (current > 0) {\n\t\t\t\t\tEmber.set(item, 'hoursWords', current + ' hours');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\ttitleSelected: function titleSelected(item) {\n\t\t\t\tthis.sendAction('titleSelected', item);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/charts/line-chart', ['exports', 'busy-app/components/charts/base-chart', '@busy-web/utils'], function (exports, _baseChart, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _baseChart.default.extend({\n\t\tclassNames: ['c-charts-line-chart'],\n\n\t\t/**\n   * The chart type\n   *\n   * @private\n   * @property type\n   * @type string\n   */\n\t\ttype: 'line',\n\n\t\tlegends: '',\n\t\tcolors: Ember.computed(function () {\n\t\t\treturn ['#2997A5'];\n\t\t}),\n\n\t\tlineTension: 0,\n\t\tpointRadius: 6,\n\t\tpointHitRadius: 12,\n\t\tfill: false,\n\t\ttitle: '',\n\n\t\tchartOptions: Ember.computed(function () {\n\t\t\tvar labels = this.get('legend') || [];\n\t\t\tif (!Ember.isArray(labels)) {\n\t\t\t\tlabels = Ember.A([labels]);\n\t\t\t}\n\t\t\tvar dataTypes = this.get('dataType') || [];\n\t\t\tif (!Ember.isArray(dataTypes)) {\n\t\t\t\tdataTypes = Ember.A([dataTypes]);\n\t\t\t}\n\n\t\t\tvar options = {\n\t\t\t\tfill: this.get('fill'),\n\t\t\t\tlineTension: this.get('lineTension'),\n\t\t\t\tpointRadius: this.get('pointRadius') || 1,\n\t\t\t\tpointHitRadius: this.get('pointHitRadius') || 2,\n\t\t\t\tborderColor: this.get('colors'),\n\t\t\t\tbackgroundColor: this.get('colors'),\n\t\t\t\t_label: labels,\n\t\t\t\t_dataType: dataTypes\n\t\t\t};\n\n\t\t\treturn options;\n\t\t}),\n\n\t\t/**\n   * Override of inherited method to set the\n   * information that shows up in the tooltip\n   *\n   * @public\n   * @method tooltip\n   * @param label {string}\n   * @param value {mixed}\n   * @return {string}\n   */\n\t\ttooltip: function tooltip(label, value, type) {\n\t\t\tif (type === 'time') {\n\t\t\t\tvalue = value * 60 * 60;\n\t\t\t\t// if dataType is set to the string `time` then return a time formated string\n\t\t\t\treturn _utils.Time.convertSecondsString(value, 10, true, false, true);\n\t\t\t} else if (type === 'currency') {\n\t\t\t\t// if dataType is set to the string currency return a currency formated string\n\t\t\t\treturn this.get('auth.currencySymbol') + Number(value.toFixed(2).toLocaleString());\n\t\t\t} else {\n\t\t\t\t// otherwise return the parent class default.\n\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/charts/pie-chart', ['exports', 'busy-app/components/charts/base-chart'], function (exports, _baseChart) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _baseChart.default.extend({\n\t\tclassNames: ['c-charts-pie-chart'],\n\n\t\t/**\n   * The chart type\n   *\n   * @private\n   * @property type\n   * @type string\n   */\n\t\ttype: 'pie',\n\n\t\tpageSize: 4,\n\n\t\taddOptions: function addOptions(options) {\n\t\t\toptions.cutoutPercentage = this.getWithDefault('cutoutPercentage', 0);\n\t\t},\n\n\n\t\tchartOptions: Ember.computed(function () {\n\t\t\tvar labels = this.get('legend') || [];\n\t\t\tif (!Ember.isArray(labels)) {\n\t\t\t\tlabels = Ember.A([labels]);\n\t\t\t}\n\n\t\t\tvar dataTypes = this.get('dataType') || [];\n\t\t\tif (!Ember.isArray(dataTypes)) {\n\t\t\t\tdataTypes = Ember.A([dataTypes]);\n\t\t\t}\n\n\t\t\tvar options = {\n\t\t\t\tborderColor: this.get('colors'),\n\t\t\t\tbackgroundColor: this.get('colors'),\n\t\t\t\t_label: labels,\n\t\t\t\t_dataType: dataTypes\n\t\t\t};\n\n\t\t\treturn options;\n\t\t})\n\t});\n});","define('busy-app/components/charts/progress-chart', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-charts-progress-chart'],\n\n\t\tmaxValue: 0,\n\t\tactualValue: 0,\n\t\tgraphColor: '#555',\n\t\tgraphColorSafe: Ember.computed('graphColor', function () {\n\t\t\treturn Ember.String.htmlSafe('color: ' + this.get('graphColor') + ';');\n\t\t}),\n\n\t\tchangeTimeout: null,\n\n\t\tpercentComplete: Ember.computed('actualValue', 'maxValue', function () {\n\t\t\tvar percent = 0;\n\t\t\tif (!Ember.isNone(this.get('actualValue')) && !Ember.isNone(this.get('maxValue')) && this.get('actualValue') > 0 && this.get('maxValue') >= 0) {\n\t\t\t\tpercent = Math.round(this.get('actualValue') / this.get('maxValue') * 100);\n\t\t\t}\n\n\t\t\tif (percent > 999) {\n\t\t\t\tpercent = 999;\n\t\t\t}\n\t\t\treturn percent;\n\t\t}),\n\n\t\tpercentString: Ember.computed('percentComplete', function () {\n\t\t\tif (this.get('percentComplete') > 999) {\n\t\t\t\treturn 999 + '+';\n\t\t\t}\n\t\t\treturn this.get('percentComplete');\n\t\t}),\n\n\t\tfillStyle: Ember.observer('percentComplete', 'graphColor', function () {\n\t\t\tvar _this = this;\n\n\t\t\t// get timeout time\n\t\t\tvar timeout = this.get('changeTimeout');\n\n\t\t\t// if timeout is null or undefined then clear the timeout\n\t\t\tif (!Ember.isNone(timeout)) {\n\t\t\t\twindow.clearTimeout(timeout);\n\t\t\t}\n\n\t\t\t// set timeout and save the timeer\n\t\t\tvar timer = window.setTimeout(function () {\n\t\t\t\t_this.setFillStyles();\n\t\t\t}, 500);\n\t\t\tthis.set('changeTimeout', timer);\n\t\t}),\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.setFillStyles();\n\t\t},\n\t\tsetFillStyles: function setFillStyles() {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t// get percent\n\t\t\t\tvar percent = this.get('percentComplete');\n\n\t\t\t\t// if percent is less than 100 then set it to 100\n\t\t\t\tpercent = percent > 100 ? 100 : percent;\n\n\t\t\t\tvar lastLeft = this.get('leftRotation') || 0;\n\t\t\t\tvar lastRight = this.get('rightRotation') || 0;\n\n\t\t\t\t// left side calculations\n\t\t\t\tvar leftPercent = percent > 50 ? percent - 50 : 0;\n\t\t\t\tvar leftSpeed = 1300 * (Math.abs(lastLeft - leftPercent) / 100);\n\t\t\t\tvar leftRotation = this.calcRotation(leftPercent);\n\n\t\t\t\t// right side calculations\n\t\t\t\tvar rightPercent = percent <= 50 ? percent : 50;\n\t\t\t\tvar rightSpeed = 1300 * (Math.abs(lastRight - rightPercent) / 100);\n\t\t\t\tvar rightRotation = this.calcRotation(rightPercent);\n\n\t\t\t\tvar leftCSS = Ember.String.htmlSafe('background:' + this.get('graphColor') + ';transition-duration:' + leftSpeed + 'ms;' + leftRotation);\n\t\t\t\tvar rightCSS = Ember.String.htmlSafe('background:' + this.get('graphColor') + ';transition-duration:' + rightSpeed + 'ms;' + rightRotation);\n\n\t\t\t\tif (lastLeft === 0 && leftPercent > 0) {\n\t\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t\tthis.set('leftRotation', leftPercent);\n\t\t\t\t\t\tthis.set('leftFillStyle', leftCSS);\n\t\t\t\t\t}, rightSpeed);\n\n\t\t\t\t\tthis.set('rightRotation', rightPercent);\n\t\t\t\t\tthis.set('rightFillStyle', rightCSS);\n\t\t\t\t} else if (lastLeft > 0 && leftPercent === 0) {\n\t\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t\tthis.set('rightRotation', rightPercent);\n\t\t\t\t\t\tthis.set('rightFillStyle', rightCSS);\n\t\t\t\t\t}, leftSpeed);\n\n\t\t\t\t\tthis.set('leftRotation', leftPercent);\n\t\t\t\t\tthis.set('leftFillStyle', leftCSS);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('leftRotation', leftPercent);\n\t\t\t\t\tthis.set('leftFillStyle', leftCSS);\n\t\t\t\t\tthis.set('rightRotation', rightPercent);\n\t\t\t\t\tthis.set('rightFillStyle', rightCSS);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcalcRotation: function calcRotation(percent) {\n\t\t\t// get degrees from the percent passed in\n\t\t\tvar degrees = 360 * (percent / 100);\n\n\t\t\t// if degrees is less than 180 then set it to 180.\n\t\t\tdegrees = degrees > 180 ? 180 : degrees;\n\n\t\t\t// return the css string for transform\n\t\t\treturn Ember.String.htmlSafe('transform: rotate(' + degrees + 'deg);-webkit-transform: rotate(' + degrees + 'deg);-moz-transform: rotate(' + degrees + 'deg);-ms-transform: rotate(' + degrees + 'deg);-o-transform: rotate(' + degrees + 'deg);');\n\t\t}\n\t});\n});","define('busy-app/components/checkbox-input', ['exports', '@busy-web/components/components/checkbox-input'], function (exports, _checkboxInput) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _checkboxInput.default;\n});","define('busy-app/components/clear-float', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['c-clear-float']\n  });\n});","define('busy-app/components/company/add-card-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-dialog-add-card'],\n\n\t\tstore: Ember.inject.service('store'),\n\n\t\tstripeId: null,\n\t\tshouldUpdate: false,\n\t\tyearMenu: null,\n\t\tmonthMenu: null,\n\t\tsecCode: null,\n\t\tnameOnCard: null,\n\t\tccNum: null,\n\t\texpMonth: null,\n\t\texpYear: null,\n\t\tdefaultCard: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setMenus();\n\t\t},\n\t\tsetMenus: function setMenus() {\n\t\t\tvar months = [];\n\t\t\tvar years = [];\n\t\t\tfor (var i = 1; i <= 12; i++) {\n\t\t\t\tvar year = _utils.Time.date().add(i - 1, 'years').year();\n\t\t\t\tvar key = i;\n\t\t\t\tkey = key < 10 ? '0' + key : '' + key;\n\n\t\t\t\tyears.pushObject(Ember.Object.create({ key: year, value: year }));\n\t\t\t\tmonths.pushObject(Ember.Object.create({ key: key, value: key }));\n\t\t\t}\n\t\t\tthis.set('yearMenu', years);\n\t\t\tthis.set('monthMenu', months);\n\t\t},\n\t\tsaveCard: function saveCard() {\n\t\t\tvar valid = this.validateCardInfo();\n\t\t\tif (!valid.isValid) {\n\t\t\t\treturn Ember.RSVP.reject(valid.message);\n\t\t\t} else {\n\t\t\t\tvar card = {\n\t\t\t\t\tcustomer_stripe_id: this.get('stripeId'),\n\t\t\t\t\tstripe_source: {\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\tobject: 'card',\n\t\t\t\t\t\t\tnumber: this.get('ccNum'),\n\t\t\t\t\t\t\texp_month: this.get('expMonth'),\n\t\t\t\t\t\t\texp_year: this.get('expYear'),\n\t\t\t\t\t\t\tcvc: this.get('secCode'),\n\t\t\t\t\t\t\tname: this.get('nameOnCard')\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tis_default_source: this.get('defaultCard')\n\t\t\t\t};\n\t\t\t\treturn this.get('store').rpcRequest('busy-stripe', 'create-new-card', card);\n\t\t\t}\n\t\t},\n\t\tvalidateCardInfo: function validateCardInfo() {\n\t\t\tvar message = '';\n\t\t\tvar isValid = true;\n\t\t\tif (!this.get('ccNum')) {\n\t\t\t\tisValid = false;\n\t\t\t\tmessage = (0, _utils.loc)('Card Number cannot be blank.');\n\t\t\t} else if (!/^(([3]\\d{14})|([456]\\d{15}))$/.test(this.get('ccNum'))) {\n\t\t\t\tisValid = false;\n\t\t\t\tmessage = (0, _utils.loc)('Card Number is Invalid. Please check your number and try again.');\n\t\t\t} else if (!this.get('secCode') || !this.get('nameOnCard')) {\n\t\t\t\tisValid = false;\n\t\t\t\tmessage = (0, _utils.loc)('Please fill out all required fields.');\n\t\t\t} else if (!this.get('expMonth') || !this.get('expYear')) {\n\t\t\t\tisValid = false;\n\t\t\t\tmessage = (0, _utils.loc)('Please set the expiration date.');\n\t\t\t}\n\t\t\treturn { isValid: isValid, message: message };\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tselectYear: function selectYear(item) {\n\t\t\t\tthis.set('expYear', item.key);\n\t\t\t},\n\t\t\tselectMonth: function selectMonth(item) {\n\t\t\t\tthis.set('expMonth', item.key);\n\t\t\t},\n\t\t\tsave: function save() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\treturn this.saveCard().then(function () {\n\t\t\t\t\t_this.set('shouldUpdate', true);\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\tvar message = (0, _utils.loc)(\"There was an error. Please try again at a later tine.\");\n\t\t\t\t\tif (typeof err === 'string') {\n\t\t\t\t\t\tmessage = err;\n\t\t\t\t\t} else if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' && Ember.isArray(err.code) && err.code[0] === 303) {\n\t\t\t\t\t\tmessage = (0, _utils.loc)(\"There was a problem processing your payment. Please check your card info and try again.\");\n\t\t\t\t\t}\n\t\t\t\t\treturn Ember.RSVP.reject(message);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/deactivate-account', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-deactivate-account'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tisDowngrade: true,\n\t\tisDelete: false,\n\n\t\t/**\n   * Downgrades the account to a free account\n   *\n   * @private\n   * @method cancelSubscription\n   * @return {RSVP}\n   */\n\t\tcancelSubscription: function cancelSubscription() {\n\t\t\tvar waitForRefresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t\t\t// only downgrade if the account is a pro account\n\t\t\tif (this.get('subscription.subscriptionStatus.isProAccount')) {\n\t\t\t\t// call subscription service downgrade method\n\t\t\t\treturn this.get('subscription').setSubscriptionStatusFree(waitForRefresh);\n\t\t\t} else {\n\t\t\t\t// return promise if free account\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Sets deletedOn on the organization model to delete\n   * the organization\n   *\n   * @private\n   * @method deleteAccount\n   * @return {RSVP}\n   */\n\t\tdeleteAccount: function deleteAccount() {\n\t\t\tvar _this = this;\n\n\t\t\t// archive all members first then delete organization\n\t\t\treturn this.archiveMembers().then(function () {\n\t\t\t\t// set deletedOn\n\t\t\t\t_this.set('auth.organization.deletedOn', _utils.Time.timestamp());\n\t\t\t\t// return deleted org promise\n\t\t\t\treturn _this.get('auth.organization').save();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Creates a new organizationCancelDetail Model and submits it\n   *\n   * @private\n   * @method submitCancelReason\n   * @return {RSVP}\n   */\n\t\tsubmitCancelReason: function submitCancelReason() {\n\t\t\t// create and save cancel detail model\n\t\t\treturn this.get('store').createRecord('organization-cancel-detail', {\n\t\t\t\torganizationId: this.get('auth.organization.id'),\n\t\t\t\tmemberId: this.get('auth.member.id'),\n\t\t\t\tcancelReason: this.get('cancelReason')\n\t\t\t}).save();\n\t\t},\n\n\n\t\t/**\n   * Updates the account to reflect the choice taken by the user in\n   * the interface, Delete account or downgrade account.\n   *\n   * This method will also submit the cancel reason model if the textarea\n   * is filled out by the user\n   *\n   * @public\n   * @method updateAccount\n   * @return {RSVP}\n   */\n\t\tupdateAccount: function updateAccount() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// submit cancel reason\n\t\t\tvar cancelPromise = Ember.RSVP.resolve();\n\t\t\tif (!Ember.isEmpty(this.get('cancelReason'))) {\n\t\t\t\tcancelPromise = this.submitCancelReason(this.get('cancelReason'));\n\t\t\t}\n\n\t\t\t// wait for cancel reason to submit\n\t\t\treturn cancelPromise.then(function () {\n\t\t\t\t// cancel subscription if downgrade or delete\n\t\t\t\treturn _this2.cancelSubscription(_this2.get('isDowngrade')).then(function () {\n\t\t\t\t\tif (_this2.get('isDelete') === true) {\n\t\t\t\t\t\t// if delete then delete account\n\t\t\t\t\t\treturn _this2.deleteAccount();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// otherwise return promise\n\t\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Arvhives all members for an organization\n   *\n   * @private\n   * @method archiveMembers\n   * @return {RSVP}\n   */\n\t\tarchiveMembers: function archiveMembers() {\n\t\t\tvar now = _utils.Time.timestamp();\n\t\t\treturn this.get('store').findAll('member').then(function (model) {\n\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\titem.set('archivedOn', now);\n\t\t\t\t});\n\t\t\t\treturn model.save();\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsubmitAction: function submitAction(dialog) {\n\t\t\t\t// set save messages for cancel or delete\n\t\t\t\tvar saveMessage = (0, _utils.loc)(\"Your account is being downgraded to free\");\n\t\t\t\tif (this.get('isDelete') === true) {\n\t\t\t\t\tsaveMessage = (0, _utils.loc)(\"your account is being deleted\");\n\t\t\t\t}\n\n\t\t\t\t// show loading message\n\t\t\t\tdialog.showSavingMessage(saveMessage);\n\n\t\t\t\t// call update account to downgrade or delete account\n\t\t\t\tthis.updateAccount().catch(function (err) {\n\t\t\t\t\t_logger.default.error(err);\n\t\t\t\t\tdialog.showErrorMessage((0, _utils.loc)(\"There was a problem deleting your account. Please contact customer service at 1-855-287-9287.\"));\n\t\t\t\t}).finally(function () {\n\t\t\t\t\t// show success message\n\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t\twindow.location.reload();\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectCancelType: function selectCancelType(type) {\n\t\t\t\t// set flags to false\n\t\t\t\tthis.set('isDowngrade', false);\n\t\t\t\tthis.set('isDelete', false);\n\n\t\t\t\t// set selected flag to true\n\t\t\t\tthis.set(type, true);\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/edit-card-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-dialog-edit-card'],\n\n\t\tstore: Ember.inject.service('store'),\n\n\t\tcard: null,\n\t\tstripeId: null,\n\t\tshouldUpdate: false,\n\n\t\tyearMenu: null,\n\t\tmonthMenu: null,\n\n\t\texpYear: null,\n\t\texpMonth: null,\n\t\tnameOnCard: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.setupInfo();\n\t\t},\n\n\n\t\tsetupInfo: Ember.observer('card', function () {\n\t\t\tif (!Ember.isNone(this.get('card'))) {\n\t\t\t\tthis.setMonthMenu(this.get('card.expMonth'));\n\t\t\t\tthis.setYearMenu(this.get('card.expYear'));\n\t\t\t}\n\t\t}),\n\n\t\tsetMonthMenu: function setMonthMenu(activeMonth) {\n\t\t\tthis.set('expMonth', activeMonth);\n\n\t\t\tvar months = [];\n\t\t\tfor (var i = 1; i <= 12; i++) {\n\t\t\t\tvar isActive = false;\n\t\t\t\tvar value = i < 10 ? '0' + i : '' + i;\n\n\t\t\t\tif (!Ember.isNone(activeMonth) && activeMonth === i) {\n\t\t\t\t\tisActive = true;\n\t\t\t\t}\n\n\t\t\t\tmonths.pushObject(Ember.Object.create({ key: i, value: value, _selected: isActive }));\n\t\t\t}\n\n\t\t\tthis.set('monthMenu', months);\n\t\t},\n\n\t\tsetYearMenu: function setYearMenu(activeYear) {\n\t\t\tthis.set('expYear', activeYear);\n\n\t\t\tvar years = [];\n\t\t\tfor (var i = 0; i <= 10; i++) {\n\t\t\t\tvar isActive = false;\n\t\t\t\tvar year = _utils.Time.date().add(i, 'years').year();\n\n\t\t\t\tif (!Ember.isNone(activeYear) && activeYear === year) {\n\t\t\t\t\tisActive = true;\n\t\t\t\t}\n\n\t\t\t\tyears.pushObject(Ember.Object.create({ key: year, value: year, _selected: isActive }));\n\t\t\t}\n\n\t\t\tthis.set('yearMenu', years);\n\t\t},\n\n\t\tupdateCard: function updateCard() {\n\t\t\tvar card = {\n\t\t\t\tcustomer_stripe_id: this.get('stripeId'),\n\t\t\t\tcard_id: this.get('card.id'),\n\t\t\t\texpiration_month: this.get('expMonth'),\n\t\t\t\texpiration_year: this.get('expYear'),\n\t\t\t\tname: this.get('card.name')\n\t\t\t};\n\n\t\t\tif (Ember.isNone(card.name) || Ember.isEmpty(card.name)) {\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Name is required to update a card.\"));\n\t\t\t} else if (Ember.isNone(card.expiration_month) || Ember.isNone(card.expiration_year)) {\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Exp. Year and Exp. Month are required to update a card.\"));\n\t\t\t} else {\n\t\t\t\treturn this.get('store').rpcRequest('busy-stripe', 'update-stripe-card', card);\n\t\t\t}\n\t\t},\n\n\t\tdeleteCard: function deleteCard() {\n\t\t\tvar card = {\n\t\t\t\tcustomer_stripe_id: this.get('stripeId'),\n\t\t\t\tcard_id: this.get('card.id')\n\t\t\t};\n\n\t\t\tif (this.get('card.isCardActive')) {\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"You cannot delete the default card\"));\n\t\t\t} else {\n\t\t\t\treturn this.get('store').rpcRequest('busy-stripe', 'delete-stripe-card', card);\n\t\t\t}\n\t\t},\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\t\t\tselectYear: function selectYear(item) {\n\t\t\t\tthis.set('expYear', item.key);\n\t\t\t},\n\n\t\t\tselectMonth: function selectMonth(item) {\n\t\t\t\tthis.set('expMonth', item.key);\n\t\t\t},\n\n\t\t\tsaveCard: function saveCard(dialog) {\n\t\t\t\tdialog.showSavingMessage();\n\n\t\t\t\tvar _this = this;\n\t\t\t\tthis.updateCard().then(function () {\n\t\t\t\t\t_this.set('shouldUpdate', true);\n\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t}, function (err) {\n\t\t\t\t\tif (typeof err === 'string') {\n\t\t\t\t\t\tdialog.showErrorMessage(err);\n\t\t\t\t\t} else if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' && Ember.isArray(err.code)) {\n\t\t\t\t\t\tif (err.code[0] === 204) {\n\t\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"The default card cannot be deleted\"));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"Something went wrong, please try again later.\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"Something went wrong, please try again later.\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdeleteAction: function deleteAction(dialog) {\n\t\t\t\tdialog.showSavingMessage();\n\n\t\t\t\tvar _this = this;\n\t\t\t\tthis.deleteCard().then(function () {\n\t\t\t\t\t_this.set('shouldUpdate', true);\n\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t}, function (err) {\n\t\t\t\t\tif (typeof err === 'string') {\n\t\t\t\t\t\tdialog.showErrorMessage(err);\n\t\t\t\t\t} else if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' && Ember.isArray(err.code)) {\n\t\t\t\t\t\tif (err.code[0] === 204) {\n\t\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"The default card cannot be deleted\"));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"Something went wrong, please try again later.\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"Something went wrong, please try again later.\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/grid/grid-item-base', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tintegration: Ember.inject.service('integration'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n   * @public\n   * @property integrationName\n   * @type String\n   * @example\n   * procore\n   */\n\t\tintegrationName: null,\n\n\t\t/**\n   * Ember route to follow when this element is clicked\n   *\n   * @public\n   * @property dashboardRoute\n   * @type String\n   * @default null\n   * @example\n   * company-settings.procore\n   */\n\t\tdashboardRoute: null,\n\n\t\t/**\n   * URL path to the company logo image. Should begin with '/'\n   *\n   * @public\n   * @property logo\n   * @type String\n   * @default null\n   * @example\n   * '/images/integration-logos/integration_logos-02.png'\n   */\n\t\tlogo: null,\n\n\t\t/**\n   * Feature flag for this integration\n   *\n   * @public\n   * @property featureFlag\n   * @type String\n   * @default null\n   * @example\n   * procore\n   */\n\t\tfeatureFlag: null,\n\n\t\t/**\n   * Properties\n   */\n\n\t\t/**\n   * Error type\n   *\n  \t* @public\n   * @property errorType\n   * @type String\n   * @default null\n   */\n\t\terrorType: null,\n\n\t\t/**\n   * Error message\n   *\n  \t* @public\n   * @property errorMessage\n   * @type String\n   * @default null\n   */\n\t\terrorMessage: null,\n\n\t\t/**\n   * Is the integration connected to the organization\n   *\n  \t* @public\n   * @property isConnected\n   * @type Boolean\n   * @default false\n   */\n\t\tisConnected: false,\n\n\t\t/**\n   * Is there an import currently in progress\n   *\n  \t* @public\n   * @property isInProgress\n   * @type Boolean\n   * @default false\n   */\n\t\tisInProgress: false,\n\n\t\t/**\n   * Is data loading in progress\n   *\n  \t* @public\n   * @property isLoading\n   * @type Boolean\n   * @default false\n   */\n\t\tisLoading: false,\n\n\t\t/**\n   * Should the upgrade dialog be displayed\n   *\n  \t* @public\n   * @property showUpgradeDialog\n   * @type Boolean\n   * @default false\n   */\n\t\tshowUpgradeDialog: false,\n\n\t\t/**\n   * Computed Properties\n   */\n\n\t\t/**\n   * Computed property using the `featureFlag` property\n   *\n   * @public\n   * @property featureEnabled\n   * @type Boolean\n   */\n\t\tfeatureEnabled: Ember.computed('features', function () {\n\t\t\tvar featureFlag = this.get('featureFlag');\n\n\t\t\treturn this.get('features').isEnabled(featureFlag);\n\t\t}),\n\n\t\tproFeatureManager: null,\n\n\t\t/**\n   * Component Lifecycle\n   */\n\n\t\t/**\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t(true && !(!Ember.isNone(this.get('integrationName'))) && Ember.assert('grid-item-base :: init :: \\'integrationName\\' is a required property', !Ember.isNone(this.get('integrationName'))));\n\t\t\t(true && !(!Ember.isNone(this.get('dashboardRoute'))) && Ember.assert('grid-item-base :: init :: \\'dashboardRoute\\' is a required property', !Ember.isNone(this.get('dashboardRoute'))));\n\t\t\t(true && !(!Ember.isNone(this.get('logo'))) && Ember.assert('grid-item-base :: init :: \\'logo\\' is a required property', !Ember.isNone(this.get('logo'))));\n\t\t\t(true && !(!Ember.isNone(this.get('featureFlag'))) && Ember.assert('grid-item-base :: init :: \\'featureFlag\\' is a required property', !Ember.isNone(this.get('featureFlag'))));\n\n\n\t\t\tthis.set('proFeatureManager', this.get('proFeature').getManager());\n\t\t},\n\n\n\t\t/**\n   * Public Methods\n   */\n\n\t\t/**\n   * Standard setStatus().\n   * Custom integrations can override.\n   *\n   *\tsets properties: {\n   *\t\terrorType,\n   *\t\terrorMessage,\n   *\t\tisConnected,\n   *\t\tisInProgress,\n   *\t}\n   *\n  \t* @public\n   * @method setStatus\n   * @returns {RSVP}\n   */\n\t\tsetStatus: function setStatus() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (this.get('featureEnabled')) {\n\t\t\t\t\treturn this.getStatus().then(function (status) {\n\t\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t\tstatus = !Ember.isNone(status) ? status : {};\n\n\t\t\t\t\t\t\tvar _status = status,\n\t\t\t\t\t\t\t    errorType = _status.errorType,\n\t\t\t\t\t\t\t    errorMessage = _status.errorMessage,\n\t\t\t\t\t\t\t    isConnected = _status.isConnected,\n\t\t\t\t\t\t\t    isInProgress = _status.isInProgress;\n\n\n\t\t\t\t\t\t\t_this.setProperties({\n\t\t\t\t\t\t\t\terrorType: errorType,\n\t\t\t\t\t\t\t\terrorMessage: errorMessage,\n\t\t\t\t\t\t\t\tisConnected: isConnected,\n\t\t\t\t\t\t\t\tisInProgress: isInProgress\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tvar errorType = null;\n\t\t\t\t\tvar errorMessage = (0, _utils.loc)('Not Connected');\n\t\t\t\t\tvar isConnected = false;\n\n\t\t\t\t\tthis.setProperties({\n\t\t\t\t\t\terrorType: errorType,\n\t\t\t\t\t\terrorMessage: errorMessage,\n\t\t\t\t\t\tisConnected: isConnected\n\t\t\t\t\t});\n\n\t\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Standard getStatus().\n   * Custom integrations should override with promise returning\n   *\n   *\t{\n   *\t\terrorType\n   *\t\terrorMessage\n   *\t\tisConnected\n   *\t\tprogress\n   *\t\tisInProgress\n   *\t}\n   *\n  \t* @public\n   * @method getStatus\n   * @returns {RSVP} containing { errorType, errorMessage, isConnected, progress, isInProgress, }\n   */\n\t\tgetStatus: function getStatus() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar organization = this.get('auth.organization.content');\n\t\t\tvar integrationName = this.get('integrationName');\n\n\t\t\t(true && !(integrationName) && Ember.assert('grid-item-base :: \\'integrationName\\' is a required property', integrationName));\n\n\n\t\t\tthis.set('isLoading', true);\n\t\t\tif (!Ember.isNone(organization)) {\n\t\t\t\treturn organization.getIntegrationStatus(integrationName).catch(function (reason) {\n\t\t\t\t\t_this2.setProperties({\n\t\t\t\t\t\terrorType: (0, _utils.loc)('Unknown Error'),\n\t\t\t\t\t\terrorMessage: reason,\n\t\t\t\t\t\tisConnected: false\n\t\t\t\t\t});\n\n\t\t\t\t\tthrow reason;\n\t\t\t\t}).finally(function () {\n\t\t\t\t\t_this2.set('isLoading', false);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Transition to the specified route\n   *\n  \t* @public\n   * @method transitionTo\n   * @param {String} route - The route to load\n   * @returns {Transition}\n   */\n\t\ttransitionTo: function transitionTo(route) {\n\t\t\treturn Ember.getOwner(this).lookup('route:application').transitionTo(route);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclickHandler: function clickHandler() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar featureFlag = this.get('featureFlag');\n\t\t\t\tvar dashboardRoute = this.get('dashboardRoute');\n\n\t\t\t\tthis.get('proFeatureManager').requestAction(featureFlag, function () {\n\t\t\t\t\treturn _this3.transitionTo(dashboardRoute);\n\t\t\t\t});\n\t\t\t},\n\t\t\tproFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n\t\t\t\tthis.get('proFeatureManager').openModal();\n\t\t\t},\n\t\t\tproFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n\t\t\t\tthis.get('proFeatureManager').closeModal();\n\t\t\t},\n\t\t\tproFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n\t\t\t\tthis.get('proFeatureManager').onAllow();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/grid/grid-item', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\t/**\n   * @private\n   * @property auth\n   * @type Services.Auth\n   */\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * @public\n   * @property classNames\n   * @type {string[]}\n   * @default ['grid-item']\n   */\n\t\tclassNames: ['grid-item'],\n\t\tisBeta: false,\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n  \t * @public\n   * @property integrationName\n   * @type String\n   * @default null\n   * @example\n   *\tprocore\n   */\n\t\tintegrationName: null,\n\n\t\t/**\n   * Ember route to follow when this element is clicked\n   *\n  \t * @public\n   * @property dashboardRoute\n   * @type String\n   * @default null\n   * @example\n   *\tcompany-settings.procore\n   */\n\t\tdashboardRoute: null,\n\n\t\t/**\n   * URL path to the company logo image. Should begin with '/'\n   *\n  \t * @public\n   * @property logo\n   * @type String\n   * @default null\n   * @example\n   *\t'/images/integration-logos/integration_logos-02.png',\n   */\n\t\tlogo: null,\n\n\t\t/**\n   * Feature flag for this integration\n   *\n  \t * @public\n   * @property featureFlag\n   * @type String\n   * @default null\n   * @example\n   *\tprocore\n   */\n\t\tfeatureFlag: null,\n\n\t\t/**\n   * Short categorization of the type of error\n   *\n  \t * @public\n   * @property errorType\n   * @type String\n   * @default null\n   */\n\t\terrorType: null,\n\n\t\t/**\n   * Description of the error\n   *\n  \t * @public\n   * @property errorMessage\n   * @type String\n   * @default null\n   */\n\t\terrorMessage: null,\n\n\t\t/**\n   * Is the organization-integration connected\n   *\n  \t * @public\n   * @property isConnected\n   * @type Boolean\n   * @default false\n   */\n\t\tisConnected: false,\n\n\t\t/**\n   * Is the an import currenctly in progress\n   *\n   * @public\n   * @property isInProgress\n   * @type Boolean\n   * @default false\n   */\n\t\tisInProgress: false,\n\n\t\t/**\n   * Is the the data for this component currently loading\n   *\n  \t * @public\n   * @property isLoading\n   * @type Boolean\n   * @default false\n   */\n\t\tisLoading: false,\n\n\t\t/**\n   * Should the upgrade dialog be visible\n   *\n  \t * @public\n   * @property showUpgradeDialog\n   * @type Boolean\n   * @default false\n   */\n\t\tshowUpgradeDialog: false,\n\n\t\tisEnabled: false,\n\t\tnotFeatureEnabled: Ember.computed('isEnabled', function () {\n\t\t\treturn !this.get('isEnabled');\n\t\t})\n\t});\n});","define('busy-app/components/company/integrations/integration-dashboard', ['exports', 'ember-data', 'moment', 'busy-app/utils/logger', '@busy-web/utils'], function (exports, _emberData, _moment, _logger, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar PromiseObject = _emberData.default.PromiseObject;\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tstore: Ember.inject.service('store'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tintegration: Ember.inject.service('integration'),\n\n\t\t/**\n   * Public Properties\n   */\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n   * @public\n   * @property integrationName\n   * @type String\n   */\n\t\tintegrationName: null,\n\n\t\t/**\n   * Target property from the parent controller\n   *\n   * @public\n   * @property parentTarget\n   * @type EmberObject\n   */\n\t\tparentTarget: null,\n\n\t\t/**\n   * @public\n   * @property organizationIntegration\n   * @type {Models.OrganizationIntegration}\n   * @default null\n   */\n\t\torganizationIntegration: null,\n\n\t\t/**\n   * @public\n   * @property lastAttempt\n   * @type {Models.IntegrationAttempt}\n   * @default null\n   */\n\t\tlastAttempt: null,\n\n\t\t/**\n   * Is the data for the `organization-integration` and last `integration-attempt` loading\n   *\n  \t * @public\n   * @property isLoading\n   * @type {boolean}\n   * @default false\n   */\n\t\tisLoading: false,\n\t\tisLoadingOrganizationIntegration: false,\n\t\tisLoadingLastAttempt: false,\n\n\t\t/**\n   * Short categorization of the error\n   *\n  \t * @public\n   * @property errorType\n   * @type {boolean}\n   */\n\t\terrorType: null,\n\n\t\t/**\n   * Non-Localized error message\n   *\n  \t * @public\n   * @property errorMessage\n   * @type {boolean}\n   */\n\t\terrorMessage: null,\n\n\t\t/*\n   *\n   */\n\t\trecentIntegrationAttemptErrors: null,\n\n\t\t/**\n   * Private Properties\n   */\n\n\t\t/**\n   * Minimum time to wait before refreshing the model if there is not an import in progress\n   *\n   * @private\n   * @property _refreshTimeoutMin\n   * @type {number}\n   */\n\t\t_refreshTimeoutMin: 1000 * 4,\n\t\t// _refreshTimeoutMin: 32 * 1000,\n\n\t\t/**\n   * Maximum time to wait before refreshing the model if there is not an import in progress\n   *\n   * @private\n   * @property _refreshTimeoutMax\n   * @type {number}\n   */\n\t\t_refreshTimeoutMax: 1000 * 8,\n\t\t// _refreshTimeoutMax: 64 * 1000,\n\n\t\t/**\n   * Minimum time to wait before refreshing the model if there is an import in progress\n   *\n   * @private\n   * @property _refreshTimeoutMinInProgress\n   * @type {number}\n   */\n\t\t_refreshTimeoutMinInProgress: 1000 * 1,\n\t\t// _refreshTimeoutMinInProgress: 1000 / 2,\n\n\t\t/**\n   * Maximum time to wait before refreshing the model if there is an import in progress\n   *\n   * @private\n   * @property _refreshTimeoutMaxInProgress\n   * @type {number}\n   */\n\t\t_refreshTimeoutMaxInProgress: 1000 * 2,\n\t\t// _refreshTimeoutMaxInProgress: 1000 / 1,\n\n\t\t/**\n   * Collection of timers created from later() calls\n   *\n   * @private\n   * @property _timers\n   * @type {EmberObject}\n   */\n\t\t_timers: Ember.Object.create(),\n\n\t\t/**\n   * Public Computed Properties\n   */\n\n\t\t/**\n   * Computed alias on `auth.organization.content`\n   *\n   * @public\n   * @property organization\n   * @type {Models.Organization}\n   */\n\t\torganization: Ember.computed.alias('auth.organization.content'),\n\n\t\t/**\n   * Is there an `integration-attempt` for this `organization-integration`. Computed `bool` on `lastAttempt.id`\n   *\n   * @public\n   * @property hasAttempt\n   * @type {boolean}\n   */\n\t\thasAttempt: Ember.computed.bool('organizationIntegration.lastAttemptId'),\n\n\t\t/**\n   * Does the latest `integration-attempt` have an `endTime`. Computed `bool` on `lastAttempt.endTime`\n   *\n   * @public\n   * @property hasAttemptEndTime\n   * @type {boolean}\n   */\n\t\thasAttemptEndTime: Ember.computed.bool('lastAttempt.endTime'),\n\n\t\t/**\n   * Is there a completed import for this `organization-integration`. Computed `and` on `hastAttempt`, `hasAttemptEndTime`\n   *\n   * @public\n   * @property hasImportCompleted\n   * @type {boolean}\n   */\n\t\thasImportCompleted: Ember.computed.and('hasAttempt', 'hasAttemptEndTime'),\n\n\t\thasImportErrors: Ember.computed.bool('errorsSinceSuccess.count'),\n\t\tlastAttemptSuccessful: Ember.computed.bool('lastAttempt.success'),\n\t\tlastAttemptFailed: Ember.computed.not('lastAttemptSuccessful'),\n\n\t\t/**\n   * Is there currently an import running on this `organization-integration`. Computed on `organizationIntegration` and `lastAttempt`\n   *\n   * @public\n   * @property isImportInProgress\n   * @type {boolean}\n   */\n\t\t//isImportInProgress: computed('organizationIntegration', 'lastAttempt', function() {\n\t\t//return (\n\t\t//\t!isEmpty(this.get('organizationIntegration')) &&\n\t\t//\t!isEmpty(this.get('lastAttempt')) &&\n\t\t//\tthis.get('organizationIntegration.enabled') &&\n\t\t//\t!this.get('lastAttempt.endTime')\n\t\t//);\n\t\t//}),\n\t\tisImportInProgress: Ember.computed('lastAttempt.progress', 'hasAttemptEndTime', function () {\n\t\t\tvar progress = this.get('lastAttempt.progress');\n\n\t\t\tif (this.get('hasAttemptEndTime') || Ember.isNone(progress) || parseInt(progress, 10) === 100) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Format to an int with a percent sign. Computed on `lastAttempt.progress`\n   *\n   * @public\n   * @property importProgressPercent\n   * @type {string}\n   */\n\t\timportProgressPercent: Ember.computed('lastAttempt.progress', function () {\n\t\t\tvar progressInt = parseInt(this.getWithDefault('lastAttempt.progress', 0), 10);\n\t\t\treturn Number.isInteger(progressInt) ? progressInt + '%' : '0%';\n\t\t}),\n\n\t\t/**\n   * @public\n   * @property lastSyncTimeLocalized\n   * @type {string}\n   */\n\t\tlastSyncTimeLocalized: Ember.computed('lastAttempt.endTime', function () {\n\t\t\tvar timestamp = this.get('lastAttempt.endTime');\n\n\t\t\tif (Ember.isNone(timestamp)) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn _utils.Time.dateFormat((0, _moment.default)(timestamp * 1000), \"DD MMMM, YYYY @ hh:mm A\");\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Provide the most recently successful `IntegrationAttempt` using a PromiseObject\n   *\n   * @public\n   * @property lastSuccessfulAttempt\n   * @type {PromiseObject}\n   */\n\t\tlastSuccessfulAttempt: Ember.computed('organizationIntegration.lastAttemptId', function () {\n\t\t\tvar lastAttemptId = this.get('organizationIntegration.lastAttemptId');\n\n\t\t\treturn PromiseObject.create({\n\t\t\t\tpromise: Ember.isNone(lastAttemptId) ? Ember.RSVP.resolve() : this.getLastSuccessfulAttempt()\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Provide the total number of errors that have occurred for this integration.\n   * The result of the PromiseObject is an object, so the number must be accessed via `errorsTotal.count`\n   *\n   * @public\n   * @property errorsTotal\n   * @type {PromiseObject}\n   */\n\t\terrorsTotal: Ember.computed('organizationIntegration.lastAttemptId', function () {\n\t\t\tthis.get('organizationIntegration.lastAttemptId');\n\n\t\t\treturn PromiseObject.create({\n\t\t\t\tpromise: this.getNumErrorsSinceTimestamp(0) // '0' to get all errors\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Provide the total number of errors that have occurred for this integration since the last time a sync was successful.\n   * The result of the PromiseObject is an object, so the number must be accessed via `errorsSinceSuccess.count`\n   *\n   * @public\n   * @property errorsSinceSuccess\n   * @type {PromiseObject}\n   */\n\t\terrorsSinceSuccess: Ember.computed('organizationIntegration.lastAttemptId', 'lastSuccessfulAttempt.{isFulfilled,startTime}', function () {\n\t\t\t// if there hasn't yet been a sync, or we don't yet have the state of the sync, return 0\n\t\t\tif (Ember.isNone('organizationIntegration.lastAttemptId') || !this.get('lastSuccessfulAttempt.isFulfilled')) {\n\t\t\t\treturn PromiseObject.create({\n\t\t\t\t\tpromise: Ember.RSVP.resolve(Ember.Object.create({ count: 0 }))\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar startTime = this.get('lastSuccessfulAttempt.startTime');\n\n\t\t\t// if there's never been a successful sync, return the total number of errors\n\t\t\treturn PromiseObject.create({\n\t\t\t\tpromise: Ember.isNone(startTime) ? this.get('errorsTotal') : this.getNumErrorsSinceTimestamp(startTime)\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Component Lifecycle\n   */\n\n\t\t/**\n   * @private\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t(true && !(!Ember.isNone(this.get('integrationName'))) && Ember.assert('integration-dashboard :: \\'integrationName\\' is a required property', !Ember.isNone(this.get('integrationName'))));\n\n\n\t\t\treturn this.initData();\n\t\t\t//.then(() => {\n\t\t\t//\treturn this.setRecentIntegrationAttemptErrors();\n\t\t\t//});\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method willDestroyElement\n   */\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis.cancelTimers();\n\t\t},\n\n\n\t\t/**\n   *\tdata management for organizationIntegration and lastAttempt\n   */\n\n\t\t/**\n   * Set the `organization-integration` and the latest `integration-attempt` . Toggle `isLoading` on and off.\n   *\n   * @private\n   * @method initData\n   * @return {Models.OrganizationIntegration}\n   */\n\t\tinitData: function initData() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn this.setOrganizationIntegration().then(function (organizationIntegration) {\n\t\t\t\tif (!Ember.isNone(organizationIntegration) && organizationIntegration.get('enabled')) {\n\t\t\t\t\t_this.setLastAttempt().finally(function () {\n\t\t\t\t\t\treturn _this.setLastAttemptForever();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t_this.set('lastAttempt', null);\n\t\t\t\t}\n\n\t\t\t\treturn organizationIntegration;\n\t\t\t}).finally(function () {\n\t\t\t\t_this.set('isLoading', false);\n\n\t\t\t\t// return this.setOrganizationIntegrationForever();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Re-Initialize the component. Clear timers and re-call `initData()`\n   *\n   * @private\n   * @method reInit\n   * @return {Models.OrganizationIntegration}\n   */\n\t\treInit: function reInit() {\n\t\t\tthis.cancelTimers();\n\n\t\t\treturn this.initData();\n\t\t},\n\n\n\t\t/**\n   * Set's `organization-integration` for the current `organization` and `integrationName` on `organizationIntegration`\n   *\n   * @private\n   * @method setOrganizationIntegration\n   * @return {Models.OrganizationIntegration}\n   */\n\t\tsetOrganizationIntegration: function setOrganizationIntegration() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.getOrganizationIntegration().then(function (organizationIntegration) {\n\t\t\t\tif (!_this2.get('isDestroyed')) {\n\t\t\t\t\t_this2.set('organizationIntegration', organizationIntegration);\n\t\t\t\t}\n\n\t\t\t\treturn organizationIntegration;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method getOrganizationIntegration\n   * @return {Models.OrganizationIntegration}\n   */\n\t\tgetOrganizationIntegration: function getOrganizationIntegration() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar organization = this.get('organization');\n\t\t\tvar integrationName = this.get('integrationName');\n\n\t\t\tthis.set('isLoadingOrganizationIntegration', true);\n\t\t\treturn organization.getIntegration(integrationName).finally(function () {\n\t\t\t\tif (!_this3.get('isDestroyed')) {\n\t\t\t\t\t_this3.set('isLoadingOrganizationIntegration', false);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Set's the latest `integration-attempt` for the current `organizationIntegration` on `lastAttempt`\n   * Returns a `null` promise if the `organizationIntegration` has no attempts.\n   *\n   * @private\n   * @method setLastAttempt\n   * @return {Models.IntegrationAttempt}\n   */\n\t\tsetLastAttempt: function setLastAttempt() {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.setOrganizationIntegration().then(function (organizationIntegration) {\n\t\t\t\tif (!_this4.get('isDestroyed') && !_this4.get('isDestroying')) {\n\t\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t\t} else if (Ember.isNone(organizationIntegration)) {\n\t\t\t\t\t// || isNone(organizationIntegration.get('lastAttemptId'))) {\n\t\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t\t}\n\n\t\t\t\treturn _this4.getLastAttempt(organizationIntegration).then(function (lastAttempt) {\n\t\t\t\t\tif (!_this4.get('isDestroyed') && !_this4.get('isDestroying')) {\n\t\t\t\t\t\t_this4.set('lastAttempt', lastAttempt);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsetRecentIntegrationAttemptErrors: function setRecentIntegrationAttemptErrors() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar ninetyDaysAgo = _utils.Time.date().add(-90, 'days').unix();\n\n\t\t\tvar query = {\n\t\t\t\torganization_integration_id: this.get('organizationIntegration.id'),\n\t\t\t\tsuccess: false,\n\t\t\t\t_gte: { start_time: ninetyDaysAgo },\n\t\t\t\tpage_size: 999999\n\t\t\t};\n\n\t\t\treturn this.get('store').query('integration-attempt', query).then(function (recentIntegrationAttemptErrors) {\n\t\t\t\tif (!_this5.get('isDestroyed')) {\n\t\t\t\t\t_this5.set('recentIntegrationAttemptErrors', recentIntegrationAttemptErrors);\n\t\t\t\t}\n\n\t\t\t\treturn recentIntegrationAttemptErrors;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method getLastAttempt\n   * @return {Models.IntegrationAttempt}\n   */\n\t\tgetLastAttempt: function getLastAttempt(organizationIntegration) {\n\t\t\tvar _this6 = this;\n\n\t\t\tthis.set('isLoadingLastAttempt', true);\n\n\t\t\treturn organizationIntegration.getLastAttempt().finally(function () {\n\t\t\t\tif (!_this6.get('isDestroyed')) {\n\t\t\t\t\t_this6.set('isLoadingLastAttempt', false);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Use `page_size` of 1 and sorting the result by `start_time` to get the most recently successful integrationAttempt\n   *\n   * @private\n   * @method getLastSuccessfulAttempt\n   * @return {Models.IntegrationAttempt}\n   */\n\t\tgetLastSuccessfulAttempt: function getLastSuccessfulAttempt() {\n\t\t\tvar query = {\n\t\t\t\torganization_integration_id: this.get('organizationIntegration.id'),\n\t\t\t\tsuccess: true,\n\t\t\t\tpage_size: 1,\n\t\t\t\t_desc: ['start_time']\n\t\t\t};\n\n\t\t\treturn this.get('store').query('integration-attempt', query).then(function (result) {\n\t\t\t\treturn !Ember.isNone(result) ? result.get('firstObject') : null;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Since all this method wants is the total number of matching results, the result set itself is ignored.\n   * The query uses a `page_size` of 1 and relies on the provided meta data instead of retrieving all the matching records.\n   *\n   * `meta.totalRows` is the desired data\n   *\n   * @private\n   * @method getNumErrorsSinceTimestamp\n   * @return {Number}\n   */\n\t\tgetNumErrorsSinceTimestamp: function getNumErrorsSinceTimestamp(startTime) {\n\t\t\tvar query = {\n\t\t\t\torganization_integration_id: this.get('organizationIntegration.id'),\n\t\t\t\tsuccess: false,\n\t\t\t\t_gt: { start_time: startTime },\n\t\t\t\tpage_size: 1\n\t\t\t};\n\n\t\t\treturn this.get('store').query('integration-attempt', query).then(function (errorAttempt) {\n\t\t\t\tvar numErrors = Ember.isEmpty(errorAttempt) ? 0 : errorAttempt.get('meta.totalRows');\n\n\t\t\t\treturn Ember.Object.create({ count: numErrors });\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Create's a randomly generated timeout which calls `setLastAttempt()` and then itself recursively\n   *\n   * @private\n   * @method setLastAttemptForever\n   */\n\t\tsetLastAttemptForever: function setLastAttemptForever() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar refreshTimeout = this.getRandomRefreshTimeout();\n\n\t\t\tthis.addTimeout('setLastAttempt', function () {\n\t\t\t\treturn _this7.setLastAttempt().finally(function () {\n\t\t\t\t\treturn _this7.setLastAttemptForever();\n\t\t\t\t});\n\t\t\t}, refreshTimeout);\n\t\t},\n\n\n\t\t/*\n   *\tActions Support\n   */\n\n\t\t/**\n   * Gets the grantUrl from the RPC then opens a new window to that location\n   *\n   * @private\n   * @method connectIntegration\n   */\n\t\tconnectIntegration: function connectIntegration() {\n\t\t\tvar _this8 = this;\n\n\t\t\t_logger.default.info(this, 'connectIntegration');\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\tif (this.get('organizationIntegration.enabled')) {\n\t\t\t\t_logger.default.warn('IntegrationDashboard', 'connectIntegration', 'already connected');\n\t\t\t\treturn this.refresh();\n\t\t\t}\n\n\t\t\treturn this.rpcGrantUrl().then(function (results) {\n\t\t\t\t_logger.default.info(_this8, 'connectIntegration', 'grantUrl', { results: results });\n\n\t\t\t\tif (results && results.data && results.data.grant_url) {\n\t\t\t\t\tvar oauthUrl = results.data.grant_url;\n\n\t\t\t\t\t_logger.default.info(_this8, 'connectIntegration', 'grantUrl', { oauthUrl: oauthUrl });\n\n\t\t\t\t\treturn window.location = oauthUrl;\n\t\t\t\t} else {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _this8.rpcErrorHandler(err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this8.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Sends a disconnect request to the RPC then re-initializes the component\n   *\n   * @private\n   * @method disconnectIntegration\n   * @return {Models.OrganizationIntegration}\n   */\n\t\tdisconnectIntegration: function disconnectIntegration() {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn this.rpcDisconnect().then(function () {\n\t\t\t\treturn _this9.reInit();\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _this9.rpcErrorHandler(err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this9.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Sends a disconnect request to the RPC then re-initializes the component\n   *\n   * @private\n   * @method startManualImport\n   * @return {Models.OrganizationIntegration}\n   */\n\t\tstartManualImport: function startManualImport() {\n\t\t\tvar _this10 = this;\n\n\t\t\tvar customErrorHandlers = {\n\t\t\t\t// if the server says there's an import in progress, don't bother with an error, just refresh\n\t\t\t\t409: function _() {\n\t\t\t\t\treturn _this10.refresh();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn this.rpcTriggerImport().then(function () {\n\t\t\t\treturn _this10.reInit();\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _this10.rpcErrorHandler(err, customErrorHandlers);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this10.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/*\n   *\tIntegration Service RPC Wrappers\n   */\n\n\t\t/**\n   * Calls `integration.rpcGrantUrl()` with the current `integrationName`\n   *\n   * @private\n   * @method rpcGrantUrl\n   * @return {string}\n   */\n\t\trpcGrantUrl: function rpcGrantUrl() {\n\t\t\treturn this.get('integration').rpcGrantUrl(this.get('integrationName'));\n\t\t},\n\n\n\t\t/**\n   * Calls `integration.rpcDisconnect()` with the current `integrationName`\n   *\n   * @private\n   * @method rpcDisconnect\n   * @return {string}\n   */\n\t\trpcDisconnect: function rpcDisconnect() {\n\t\t\treturn this.get('integration').rpcDisconnect(this.get('integrationName'));\n\t\t},\n\n\n\t\t/**\n   * Calls `integration.rpcTriggerImport()` with the current `integrationName`\n   *\n   * @private\n   * @method rpcTriggerImport\n   * @return {string}\n   */\n\t\trpcTriggerImport: function rpcTriggerImport() {\n\t\t\treturn this.get('integration').rpcTriggerImport(this.get('integrationName'));\n\t\t},\n\n\n\t\t/**\n   * Calls `integration.rpcErrorHandler()` with the current `integrationName` and sets the results to `errorType` and `errorMessage`\n   *\n   * @private\n   * @method rpcErrorHandler\n   * @param err {EmberObject}\n   * @param err.status {number}\n   * @param err.errorType {string}\n   * @param err.errorMessage {string}\n   * @param [customHandlers={}] {object}\n   * @return {string}\n   */\n\t\trpcErrorHandler: function rpcErrorHandler(err) {\n\t\t\tvar customHandlers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\t(true && !(!Ember.isNone(err)) && Ember.assert('rpcErrorHandler :: \\'err\\' is a required argument', !Ember.isNone(err)));\n\t\t\t(true && !((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object') && Ember.assert('rpcErrorHandler :: \\'err\\' must be an object', (typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object'));\n\n\n\t\t\tvar error = this.get('integration').rpcErrorHandler(err, customHandlers);\n\n\t\t\tthis.set('errorType', error.get('errorType'));\n\t\t\tthis.set('errorMessage', error.get('errorMessage'));\n\t\t},\n\n\n\t\t/*\n   *\tTimers\n   */\n\n\t\t/**\n   * Call the given `cb` function after the specified `timeout`. Reference is stored in the `_timers` object, using the `key`, so it can be cancelled.\n   *\n   * @private\n   * @method addTimeout\n   * @param key {string} - Hash Key to reference the timer in the `_timers` object\n   * @param cb {function} - The function to call after the `timeout` has elapsed\n   * @param timeout {number} - How long to wait before invoking the `cb`\n   * @return {EmberObject} - Reference to the `_timers` object\n   */\n\t\taddTimeout: function addTimeout(key, cb, timeout) {\n\t\t\t(true && !(!Ember.isNone(key)) && Ember.assert('addTimeout :: \\'key\\' is a required argument', !Ember.isNone(key)));\n\t\t\t(true && !(!Ember.isNone(cb)) && Ember.assert('addTimeout :: \\'cb\\' is a required argument', !Ember.isNone(cb)));\n\t\t\t(true && !(!Ember.isNone(timeout)) && Ember.assert('addTimeout :: \\'timeout\\' is a required argument', !Ember.isNone(timeout)));\n\t\t\t(true && !(typeof cb === 'function') && Ember.assert('addTimeout :: \\'cb\\' must be a function', typeof cb === 'function'));\n\t\t\t(true && !(Number.isInteger(timeout)) && Ember.assert('addTimeout :: \\'timeout\\' must be an integer', Number.isInteger(timeout)));\n\n\n\t\t\tvar timer = Ember.run.later(this, cb, timeout);\n\n\t\t\treturn this.get('_timers').set(key, timer);\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method getTimer\n   * @param key {string} - Hash Key to reference the timer in the `_timers` object\n   * @return {EmberObject} - The timer object\n   */\n\t\tgetTimer: function getTimer(key) {\n\t\t\t(true && !(!Ember.isNone(key)) && Ember.assert('getTimer :: \\'key\\' is a required argument', !Ember.isNone(key)));\n\n\n\t\t\treturn this.get('_timers').get(key);\n\t\t},\n\n\n\t\t/**\n   * Cancel the specific timer\n   *\n  \t * @private\n   * @method cancelTimer\n   * @param key {string} - Hash Key to reference the timer in the `_timers` object\n   */\n\t\tcancelTimer: function cancelTimer(key) {\n\t\t\t(true && !(!Ember.isNone(key)) && Ember.assert('cancelTimer :: \\'key\\' is a required argument', !Ember.isNone(key)));\n\n\n\t\t\treturn Ember.run.cancel(this.getTimer(key));\n\t\t},\n\n\n\t\t/**\n   * Cancel all timers\n   *\n  \t * @private\n   * @method cancelTimers\n   */\n\t\tcancelTimers: function cancelTimers() {\n\t\t\tvar _this11 = this;\n\n\t\t\tvar timers = this.get('_timers');\n\n\t\t\tObject.keys(timers).forEach(function (key) {\n\t\t\t\t_this11.cancelTimer(key);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   *\tUtil\n   */\n\n\t\t/**\n   * Using `parentTarget.router`, refresh the route\n   *\n  \t * @private\n   * @method refresh\n   * @return {Transition}\n   */\n\t\trefresh: function refresh() {\n\t\t\treturn this.get('parentTarget.router').refresh();\n\t\t},\n\n\n\t\t/**\n   * Using `route:application`, transitionTo the requested route\n   *\n  \t * @private\n   * @method transitionTo\n   * @param route {string}\n   * @param [queryParams={}] {object}\n   * @return {Transition}\n   */\n\t\ttransitionTo: function transitionTo(route) {\n\t\t\tvar queryParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\t(true && !(!Ember.isNone(route)) && Ember.assert('transitionTo :: \\'route\\' is a required argument', !Ember.isNone(route)));\n\n\n\t\t\treturn Ember.getOwner(this).lookup('route:application').transitionTo(route, { queryParams: queryParams });\n\t\t},\n\n\n\t\t/**\n   * Get the random int between the min/max timeouts depending on if there's an import in progress\n   *\n  \t * @private\n   * @method getRandomRefreshTimeout\n   * @return {number}\n   */\n\t\tgetRandomRefreshTimeout: function getRandomRefreshTimeout() {\n\t\t\tvar refreshTimeout = this.get('isImportInProgress') ? this.randRange(this.get('_refreshTimeoutMinInProgress'), this.get('_refreshTimeoutMaxInProgress')) : this.randRange(this.get('_refreshTimeoutMin'), this.get('_refreshTimeoutMax'));\n\n\t\t\treturn refreshTimeout;\n\t\t},\n\n\n\t\t/**\n   * Get a number between min/max and optionally apply a transform function on the result\n   *\n  \t * @private\n   * @method randRange\n   * @param min {number}\n   * @param max {number}\n   * @param [transform=Math.round] {function}\n   * @return {number}\n   */\n\t\trandRange: function randRange(min, max) {\n\t\t\tvar transform = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Math.round;\n\t\t\t(true && !(!Ember.isNone(min)) && Ember.assert('randRange :: \\'min\\' is a required argument', !Ember.isNone(min)));\n\t\t\t(true && !(!Ember.isNone(max)) && Ember.assert('randRange :: \\'max\\' is a required argument', !Ember.isNone(max)));\n\n\n\t\t\tif (!Ember.isNone(transform)) {\n\t\t\t\t(true && !(typeof transform === 'function') && Ember.assert('randRange :: \\'transform\\' must be a function', typeof transform === 'function'));\n\t\t\t}\n\n\t\t\tvar diff = max - min;\n\t\t\tvar result = Math.random() * diff + min;\n\n\t\t\treturn transform ? transform(result) : result;\n\t\t},\n\n\n\t\t/*\n   * Actions\n   */\n\n\t\tactions: {\n\n\t\t\t/**\n    * Do nothing\n    *\n    * @event noop\n    */\n\t\t\tnoop: function noop() {\n\t\t\t\t//Logger.info(this, 'noop');\n\t\t\t},\n\n\n\t\t\t/**\n    * @event startManualImport\n    */\n\t\t\tstartManualImport: function startManualImport() {\n\t\t\t\t//Logger.info(this, 'startManualImport');\n\n\t\t\t\treturn this.startManualImport();\n\t\t\t},\n\n\n\t\t\t/**\n    * @event connectIntegration\n    */\n\t\t\tconnectIntegration: function connectIntegration() {\n\t\t\t\t//Logger.info(this, 'connectIntegration');\n\n\t\t\t\treturn this.connectIntegration();\n\t\t\t},\n\n\n\t\t\t/**\n    * @event disconnectIntegration\n    */\n\t\t\tdisconnectIntegration: function disconnectIntegration() {\n\t\t\t\t//Logger.info(this, 'disconnectIntegration');\n\n\t\t\t\treturn this.disconnectIntegration();\n\t\t\t},\n\n\n\t\t\t/**\n    * @event openSubscriptionPage\n    */\n\t\t\topenSubscriptionPage: function openSubscriptionPage() {\n\t\t\t\t//Logger.info(this, 'openSubscriptionPage');\n\n\t\t\t\treturn this.transitionTo('company-settings').then(function () {\n\t\t\t\t\twindow.location.hash = '#tab-subscription';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/oauth-callback', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tintegration: Ember.inject.service('integration'),\n\t\trouter: Ember.inject.service(),\n\n\t\tclassNames: ['v-company-settings-integrations-oauth-callback'],\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n   * @public\n   * @property integrationName\n   * @type {string}\n   */\n\t\tintegrationName: null,\n\n\t\t/**\n   * Displayed on an error page\n   *\n   * @public\n   * @property integrationLabel\n   * @type {string}\n   */\n\t\tintegrationLabel: null,\n\n\t\t/**\n  * Where to redirect after this component completes\n  *\n  * @public\n  * @property dashboardUrl\n  * @type {string}\n  */\n\t\tdashboardUrl: null,\n\n\t\t/**\n  * The code returned from the OAuth prover to be sent to the API\n  *\n  * @public\n  * @property grantCode\n  * @type {string}\n  */\n\t\tgrantCode: null,\n\n\t\t/**\n   * Component Lifecycle\n   *\n   */\n\n\t\t/**\n  * @private\n  * @method init\n  * @construtor\n  */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t_utils.Assert.test('integrationName is a required property', !Ember.isEmpty(this.get('integrationName')));\n\t\t\t_utils.Assert.test('integrationLabel is a required property', !Ember.isEmpty(this.get('integrationLabel')));\n\t\t\t_utils.Assert.test('dashboardUrl is a required property', !Ember.isEmpty(this.get('dashboardUrl')));\n\n\t\t\t_utils.Assert.isString(this.get('integrationName'));\n\t\t\t_utils.Assert.isString(this.get('integrationLabel'));\n\t\t\t_utils.Assert.isString(this.get('dashboardUrl'));\n\n\t\t\tvar grantCode = this.get('grantCode');\n\n\t\t\tif (!Ember.isNone(grantCode)) {\n\t\t\t\treturn this.handleGrantCode(grantCode);\n\t\t\t} else {\n\t\t\t\treturn this.set('rpcError', {\n\t\t\t\t\terrorType: (0, _utils.loc)('OAuth Error'),\n\t\t\t\t\terrorMessage: (0, _utils.loc)('Authentication token not provided')\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Handle the `grantCode` the grantCode returned by OAuth callback\n   *\n   * @private\n   * @method handleGrantCode\n   * @param {grantCode}\n   * @async\n   * @return {Object}\n   */\n\t\thandleGrantCode: function handleGrantCode(grantCode) {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.setCredentials(grantCode).then(function () /* result */{\n\t\t\t\treturn _this.transitionTo(_this.get('dashboardUrl'));\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Submit the `grantCode` to the RPC\n   *\n   * @private\n   * @method setCredentials\n   * @param {grantCode}\n   * @async\n   * @return {Object}\n   */\n\t\tsetCredentials: function setCredentials(grantCode) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!window.runningTests) {\n\t\t\t\treturn this.get('integration').rpcSetCredentials(this.get('integrationName'), grantCode).catch(function (err) {\n\t\t\t\t\tvar rpcError = _this2.get('integration').rpcErrorHandler(err);\n\t\t\t\t\t_this2.set('rpcError', rpcError);\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n  * @private\n  * @method transitionTo\n  * @param route {string}\n  */\n\t\ttransitionTo: function transitionTo(route) {\n\t\t\treturn this.get('router').transitionTo(route);\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/sync-log-dialog/log-dialog', ['exports', 'busy-app/utils/docs', '@busy-web/utils'], function (exports, _docs, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tclassNames: ['v-company-settings-integrations-dialog'],\n\n\t\t/**\n   * Component Attributes\n   */\n\n\t\tintegrationName: null,\n\t\theaderTitle: (0, _utils.loc)('Activity Log'),\n\t\tcloseText: (0, _utils.loc)('Close'),\n\t\tprintText: (0, _utils.loc)('Print'),\n\n\t\t/**\n   * Public Properties\n   */\n\n\t\tisLoadingIntegrationAttempts: false,\n\t\tisLoadingIntegrationLog: false,\n\t\tintegrationAttempts: null,\n\n\t\t/**\n   * Private Properties\n   */\n\t\t_integrationLogs: null,\n\t\t_selectedIntegrationAttempt: null,\n\n\t\t/**\n   *\tPublic Computeds\n   */\n\n\t\t/**\n   * Computed on `integrationAttempts`,`_selectedIntegrationAttempt`\n   *\n  \t * @public\n   * @property selectMenuOptions\n   * @type {EmberObject[]}\n   */\n\t\tselectMenuOptions: Ember.computed('integrationAttempts', '_selectedIntegrationAttempt', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar attempts = this.get('integrationAttempts');\n\n\t\t\tif (!Ember.isNone(attempts) && !Ember.isEmpty(attempts)) {\n\t\t\t\treturn attempts.map(function (attempt) {\n\t\t\t\t\tvar key = attempt.get('id');\n\t\t\t\t\tvar label = _utils.Time.date(attempt.get('endTime')).format('MMMM DD, YYYY HH:mm A');\n\t\t\t\t\tvar isSelected = attempt.get('id') === _this.get('_selectedIntegrationAttempt.id');\n\n\t\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\t\tkey: key,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t\t_selected: isSelected\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed on `_integrationLogs`\n   *\n   * @public\n   * @property sectionizedIntegrationLogs\n   * @type EmberObject\n   */\n\t\tsectionizedIntegrationLogs: Ember.computed('_integrationLogs', function () {\n\t\t\tvar logs = this.get('_integrationLogs');\n\n\t\t\tif (!Ember.isNone(logs)) {\n\t\t\t\tvar sectionNames = logs.mapBy('resourceType').uniq().sort();\n\t\t\t\tvar sectionized = Ember.Object.create();\n\n\t\t\t\tsectionNames.forEach(function (sectionName) {\n\t\t\t\t\tvar section = logs.filterBy('resourceType', sectionName);\n\t\t\t\t\tvar importEntries = section.filterBy('actionType', 'import');\n\t\t\t\t\tvar exportEntries = section.filterBy('actionType', 'export');\n\n\t\t\t\t\tsectionized.set(sectionName, { importEntries: importEntries, exportEntries: exportEntries });\n\t\t\t\t});\n\n\t\t\t\treturn sectionized;\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Component Lifecycle\n   */\n\n\t\t/**\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis._super();\n\n\t\t\tthis.setIntegrationAttempts().then(function () {\n\t\t\t\t_this2.initSelectMenu();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Public Methods\n   */\n\n\t\t/**\n  \t * Sets result of `getIntegrationAttempts` to `integrationAttempts`\n  \t *\n  \t * @public\n  \t * @method setIntegrationAttempts\n  \t * @returns {Models.IntegrationAttempt[]}\n   */\n\t\tsetIntegrationAttempts: function setIntegrationAttempts() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.set('isLoadingIntegrationAttempts', true);\n\t\t\treturn this.getIntegrationAttempts().then(function (integrationAttempts) {\n\t\t\t\t_this3.set('integrationAttempts', integrationAttempts);\n\n\t\t\t\treturn integrationAttempts;\n\t\t\t}).finally(function () {\n\t\t\t\t_this3.set('isLoadingIntegrationAttempts', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Gets the the newest 10 `integration-attempt` records for the current `organization` and `integrationName`\n   *\n  \t * @public\n   * @method getIntegrationAttempts\n   * @returns {Models.IntegrationAttempt[]}\n   */\n\t\tgetIntegrationAttempts: function getIntegrationAttempts() {\n\t\t\tvar organization = this.get('auth.organization.content');\n\t\t\tvar integrationName = this.get('integrationName');\n\n\t\t\treturn organization.getIntegration(integrationName).then(function (organizationIntegration) {\n\t\t\t\tvar query = {\n\t\t\t\t\t_desc: ['end_time'],\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tpage_size: 10,\n\t\t\t\t\tend_date: '!_-NULL-_'\n\t\t\t\t};\n\n\t\t\t\treturn organizationIntegration.queryIntegrationAttempts(query);\n\t\t\t\t// return this.getIntegrationAttemptsMocked(organizationIntegration);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Sets the `integration-log` records for the current `integration-attempt` to `_selectedIntegrationAttempt`\n   *\n  \t * @public\n   * @method setIntegrationLogs\n   * @returns {Models.IntegrationLog[]}\n   */\n\t\tsetIntegrationLogs: function setIntegrationLogs() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.set('isLoadingIntegrationLog', true);\n\t\t\treturn this.get('_selectedIntegrationAttempt').getIntegrationLogs().then(function (integrationLogs) {\n\t\t\t\t_this4.set('_integrationLogs', integrationLogs);\n\n\t\t\t\treturn integrationLogs;\n\t\t\t}).finally(function () {\n\t\t\t\t_this4.set('isLoadingIntegrationLog', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Trigger `selectMenuOptions` to select the the first option\n   *\n   * @private\n   * @method initSelectMenu\n   */\n\t\tinitSelectMenu: function initSelectMenu() {\n\t\t\t// selectMenuOptions is a computed off integrationAttempts\n\t\t\tif (!Ember.isNone(this.get('selectMenuOptions')) && !Ember.isEmpty(this.get('selectMenuOptions'))) {\n\t\t\t\tvar firstOption = this.get('selectMenuOptions.firstObject');\n\n\t\t\t\tthis.send('onSelectMenuOption', firstOption);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   *\tActions\n   */\n\n\t\tactions: {\n\n\t\t\t/** @event onClose */\n\t\t\tonClose: function onClose() {\n\t\t\t\treturn this.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/** @event onPrint */\n\t\t\tonPrint: function onPrint() {\n\t\t\t\tvar $container = Ember.$('.v-company-settings-integrations-sync-log');\n\t\t\t\t_docs.default.print($container);\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when `selectMenuOptions` changes. Store the selected entry to `_selectedIntegrationAttempt` and call `setIntegrationLogs()`\n    *\n    * @event onSelectMenuOption\n    * @param entry {EmberObject}\n    */\n\t\t\tonSelectMenuOption: function onSelectMenuOption(entry) {\n\t\t\t\tvar entryId = entry.get('key');\n\t\t\t\tvar selectedIntegrationAttempt = this.get('integrationAttempts').findBy('id', entryId);\n\t\t\t\tif (!Ember.isNone(entryId) && !Ember.isNone(selectedIntegrationAttempt) && entryId !== this.get('_selectedIntegrationAttempt.id')) {\n\t\t\t\t\tthis.set('_selectedIntegrationAttempt', selectedIntegrationAttempt);\n\t\t\t\t\tthis.setIntegrationLogs();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/sync-log-dialog/log-section', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\t/**\n   * Title of the section\n   *\n   * @public\n   * @property titleName\n   * @type {string}\n   */\n\t\ttitleName: null,\n\n\t\t/**\n   * Array of entries which make up this sections data\n   *\n   * @public\n   * @property entries\n   * @type {object[]}\n   */\n\t\tentries: null,\n\n\t\t/**\n   * Component Lifecycle\n   */\n\n\t\t/**\n  * @private\n  * @method init\n  */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (Ember.isEmpty(Ember.get(this, 'entries'))) {\n\t\t\t\tEmber.set(this, 'entries', []);\n\t\t\t}\n\n\t\t\t(true && !(!Ember.isEmpty(Ember.get(this, 'titleName'))) && Ember.assert('sync-log-dialog.log-section :: property \\'titleName\\' is required', !Ember.isEmpty(Ember.get(this, 'titleName'))));\n\t\t\t(true && !(!Ember.isNone(Ember.get(this, 'entries'))) && Ember.assert('sync-log-dialog.log-section :: property \\'entries\\' is required', !Ember.isNone(Ember.get(this, 'entries'))));\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/sync-log-errors-dialog', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tclassNames: ['c-company-settings-integrations-dialog'],\n\n\t\t/**\n   * Attributes\n   */\n\n\t\torganizationIntegration: null,\n\t\theaderTitle: (0, _utils.loc)('Error Log'),\n\t\tcloseText: (0, _utils.loc)('Close'),\n\t\tprintText: (0, _utils.loc)('Print'),\n\n\t\t/**\n   * Properties\n   */\n\n\t\tpage: 1,\n\t\tpageSize: 20,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.set('integrationAttemptErrors', null);\n\n\t\t\treturn this.getIntegrationErrors();\n\t\t},\n\t\tgetIntegrationErrors: function getIntegrationErrors() {\n\t\t\tvar _this = this;\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tvar query = {\n\t\t\t\torganization_integration_id: this.get('organizationIntegration.id'),\n\t\t\t\tsuccess: false,\n\t\t\t\tpage: this.get('page'),\n\t\t\t\tpage_size: this.get('pageSize'),\n\t\t\t\t_desc: ['end_time', 'id']\n\t\t\t};\n\n\t\t\treturn this.get('store').query('integration-attempt', query).then(function (integrationAttemptErrors) {\n\t\t\t\tintegrationAttemptErrors = integrationAttemptErrors.forEach(function (err) {\n\t\t\t\t\t// time display should be in local time\n\t\t\t\t\tvar startTime = _utils.Time.date(err.get('startTime')).local();\n\t\t\t\t\tvar endTime = _utils.Time.date(err.get('endTime')).local();\n\n\t\t\t\t\terr.set('localeStartTime', startTime.format(\"L LTS\"));\n\t\t\t\t\terr.set('localeEndTime', endTime.format(\"L LTS\"));\n\t\t\t\t});\n\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t_this.set('integrationAttemptErrors', integrationAttemptErrors);\n\t\t\t\t}\n\n\t\t\t\treturn integrationAttemptErrors;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   *\tActions\n   */\n\t\tactions: {\n\t\t\t/**\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\treturn this.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * @event onPrint\n    */\n\t\t\tonPrint: function onPrint() {\n\t\t\t\tvar $container = Ember.$('.v-company-settings-integrations-sync-log-errors');\n\t\t\t\t_docs.default.print($container);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/upgrade-dialog', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-integrations-upgrade-dialog'],\n\n\t\t/**\n   * Name of the integration to be displayed inline in the upgrade text\n   *\n   * @public\n   * @property displayName\n   * @type {String}\n   */\n\t\tdisplayName: null,\n\n\t\tactions: {\n\t\t\t/**\n    * Broadcasts the `closeUpgradeDialog` action\n    *\n    * @event closeUpgradeDialog\n    */\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\tthis.sendAction('closeUpgradeDialog');\n\t\t\t},\n\n\n\t\t\t/**\n    * Broadcasts the `openSubscriptionPage` action\n    *\n    * @event openSubscriptionPage\n    */\n\t\t\topenSubscriptionPage: function openSubscriptionPage() {\n\t\t\t\tthis.sendAction('openSubscriptionPage');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/connect-dialog', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\t/**\n   * @property classNames\n   * @type {string[]}\n   * @default ['v-company-settings-integration-connect-dialog']\n   */\n\t\tclassNames: ['v-company-settings-integration-connect-dialog'],\n\n\t\t/**\n   * @property headerTitle\n   * @type {string}\n   */\n\t\theaderTitle: null,\n\n\t\t/**\n   * @property cancelText\n   * @type {string}\n   */\n\t\tcancelText: null,\n\n\t\t/**\n   * @property saveText\n   * @type {string}\n   */\n\t\tsaveText: null,\n\n\t\t/**\n   * @property onSave\n   * @type {function}\n   */\n\t\tonSave: null,\n\n\t\t/**\n   * @property onClose\n   * @type {function}\n   */\n\t\tonClose: null,\n\n\t\tactions: {\n\t\t\t/** @event onClose */\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/** @event onSave */\n\t\t\tonSave: function onSave() {\n\t\t\t\tthis.sendAction(\"onSave\");\n\t\t\t},\n\n\n\t\t\t/** @event openSubscriptionPage */\n\t\t\topenSubscriptionPage: function openSubscriptionPage() {\n\t\t\t\tthis.send('onClose');\n\t\t\t\tthis.sendAction('openSubscriptionPage');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/disconnect-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-integrations-dialog'],\n\n\t\tbuttonInfo: null,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\t// pass a custom buttonInfo config to dialog/content-view\n\t\t\tEmber.set(this, 'buttonInfo', [{ action: function action() {\n\t\t\t\t\treturn _this.send('onDisconnect');\n\t\t\t\t}, color: 'red', text: (0, _utils.loc)('Disconnect'), closeAfter: true }, { action: function action() {\n\t\t\t\t\treturn _this.send('onClose');\n\t\t\t\t}, color: 'grey', text: (0, _utils.loc)('Cancel'), closeAfter: true }]);\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/** @event onClose */\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/** @event onDisconnect */\n\t\t\tonDisconnect: function onDisconnect() {\n\t\t\t\tthis.sendAction('onDisconnect');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/grid-item', ['exports', 'busy-app/components/company/integrations/grid/grid-item-base'], function (exports, _gridItemBase) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _gridItemBase.default.extend({\n\t\t/**\n   * @property classNames\n   * @type {string[]}\n   * @default ['grid-item-procore']\n   */\n\t\tclassNames: ['grid-item-procore'],\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n   * @public\n   * @property integrationName\n   * @type {string}\n   * @default 'procore'\n   */\n\t\tintegrationName: 'procore',\n\n\t\t/**\n   * Ember route to follow when this element is clicked\n   *\n   * @public\n   * @property dashboardRoute\n   * @type {string}\n   * @default 'company-settings.procore'\n   */\n\t\tdashboardRoute: 'company-settings.procore',\n\n\t\t/**\n   * URL path to the company logo image. Should begin with '/'\n   *\n   * @public\n   * @property logo\n   * @type {string}\n   * @default '/images/integration-logos/integration_logos-02.png'\n   */\n\t\tlogo: '/images/integration-logos/integration_logos-02.png',\n\n\t\t/**\n   * Feature flag for this integration\n   *\n   * @public\n   * @property featureFlag\n   * @type {string}\n   * @default 'procore'\n   */\n\t\tfeatureFlag: 'procore',\n\n\t\tisEnabled: Ember.computed('features.procore', function () {\n\t\t\treturn this.get('features').isEnabled('procore');\n\t\t}),\n\n\t\t/**\n  * @private\n  * @method init\n  * @constructor\n  */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setStatus();\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/integration-dashboard', ['exports', 'busy-app/components/company/integrations/integration-dashboard', 'busy-app/utils/logger'], function (exports, _integrationDashboard, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _integrationDashboard.default.extend({\n\t\tshowConnectDialog: false,\n\t\tshowDisconnectDialog: false,\n\t\tshowLearnMoreDialog: false,\n\t\tshowSettingsDialog: false,\n\t\tshowSyncLogDialog: false,\n\t\tshowSyncLogErrorsDialog: false,\n\t\tshowUpgradeDialog: false,\n\n\t\tintegrationName: 'procore',\n\n\t\tactions: {\n\n\t\t\t/**\n    * passthroughs to parent\n    *\n    */\n\t\t\tconnectIntegration: function connectIntegration() {\n\t\t\t\t_logger.default.info('Procore/IntegrationDashboard', 'connectIntegration');\n\n\t\t\t\tthis.send('closeConnectDialog');\n\n\t\t\t\treturn this._super();\n\t\t\t},\n\t\t\tdisconnectIntegration: function disconnectIntegration() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'disconnectIntegration');\n\n\t\t\t\tthis.send('closeDisconnectDialog');\n\n\t\t\t\treturn this._super();\n\t\t\t},\n\t\t\topenSubscriptionPage: function openSubscriptionPage() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openSubscriptionPage');\n\n\t\t\t\tthis.send('closeUpgradeDialog');\n\n\t\t\t\treturn this._super();\n\t\t\t},\n\n\n\t\t\t/**\n    * Dialog Toggles\n    */\n\n\t\t\topenConnectDialog: function openConnectDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openConnectDialog');\n\n\t\t\t\tthis.set('showConnectDialog', true);\n\t\t\t},\n\t\t\tcloseConnectDialog: function closeConnectDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeConnectDialog');\n\n\t\t\t\tthis.set('showConnectDialog', false);\n\t\t\t},\n\t\t\topenDisconnectDialog: function openDisconnectDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openDisconnectDialog');\n\n\t\t\t\tthis.set('showDisconnectDialog', true);\n\t\t\t},\n\t\t\tcloseDisconnectDialog: function closeDisconnectDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeDisconnectDialog');\n\n\t\t\t\tthis.set('showDisconnectDialog', false);\n\t\t\t},\n\t\t\topenLearnMoreDialog: function openLearnMoreDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openLearnMoreDialog');\n\n\t\t\t\tthis.set('showLearnMoreDialog', true);\n\t\t\t},\n\t\t\tcloseLearnMoreDialog: function closeLearnMoreDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeLearnMoreDialog');\n\n\t\t\t\tthis.set('showLearnMoreDialog', false);\n\t\t\t},\n\t\t\topenSettingsDialog: function openSettingsDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openSettingsDialog');\n\n\t\t\t\tthis.set('showSettingsDialog', true);\n\t\t\t},\n\t\t\tcloseSettingsDialog: function closeSettingsDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeSettingsDialog');\n\n\t\t\t\tthis.set('showSettingsDialog', false);\n\t\t\t},\n\t\t\topenSyncLogDialog: function openSyncLogDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openSyncLogDialog');\n\n\t\t\t\tthis.set('showSyncLogDialog', true);\n\t\t\t},\n\t\t\tcloseSyncLogDialog: function closeSyncLogDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeSyncLogDialog');\n\n\t\t\t\tthis.set('showSyncLogDialog', false);\n\t\t\t},\n\t\t\tprintSyncLog: function printSyncLog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'config');\n\n\t\t\t\tthis.set('showSyncLogDialog', false);\n\t\t\t},\n\t\t\topenSyncLogErrorsDialog: function openSyncLogErrorsDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openSyncLogErrorsDialog');\n\n\t\t\t\tthis.set('showSyncLogErrorsDialog', true);\n\t\t\t},\n\t\t\tcloseSyncLogErrorsDialog: function closeSyncLogErrorsDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeSyncLogErrorsDialog');\n\n\t\t\t\tthis.set('showSyncLogErrorsDialog', false);\n\t\t\t},\n\t\t\tprintSyncLogErrors: function printSyncLogErrors() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'config');\n\n\t\t\t\tthis.set('showSyncLogErrorsDialog', false);\n\t\t\t},\n\t\t\topenUpgradeDialog: function openUpgradeDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openUpgradeDialog');\n\n\t\t\t\tthis.set('showUpgradeDialog', true);\n\t\t\t},\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeUpgradeDialog');\n\n\t\t\t\tthis.set('showUpgradeDialog', false);\n\t\t\t},\n\t\t\topenOauthExternal: function openOauthExternal() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openOauthCallback');\n\n\t\t\t\tthis.openOauthExternal();\n\t\t\t},\n\t\t\topenOauthCallback: function openOauthCallback() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'openOauthCallback');\n\n\t\t\t\tthis.openOauthCallback();\n\t\t\t},\n\n\n\t\t\t// multiple actions\n\t\t\tcloseConnectAndOpenUpgradeDialog: function closeConnectAndOpenUpgradeDialog() {\n\t\t\t\t//Logger.info('Procore/IntegrationDashboard', 'closeConnectAndOpenUpgradeDialog');\n\n\t\t\t\tthis.send('closeConnectDialog');\n\t\t\t\tthis.send('openUpgradeDialog');\n\t\t\t},\n\t\t\tonBack: function onBack() {\n\t\t\t\tvar transitionToUrl = '/company-settings#tab-integrations';\n\t\t\t\tEmber.getOwner(this).lookup('route:application').transitionTo(transitionToUrl);\n\t\t\t\t// return window.location = transitionToUrl;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/oauth-callback', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/settings', 'busy-app/components/company/integrations/oauth-callback'], function (exports, _utils, _logger, _settings, _oauthCallback) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _oauthCallback.default.extend({\n\t\t// integration,\n\t\t// integrationName,\n\t\t// dashboardUrl,\n\t\t// grantCode,\n\n\t\tprocoreCompanies: null,\n\t\tprocoreCompaniesAvailable: null,\n\t\tprocoreCompaniesUnavailable: null,\n\n\t\tselectedCompanyId: null,\n\t\t// companySelectOptions: [],\n\n\t\tprocoreCostCodeLists: null,\n\t\tselectedCostCodeListId: null,\n\t\t// costCodeSelectOptions: [],\n\n\t\t/**\n   * Toggle display of a confirmation dialog when aborting the integration\n   *\n   * @public\n   * @property showAbortIntegrationOverlay\n   * @type {boolean}\n   * @default false\n   */\n\t\tshowAbortIntegrationOverlay: false,\n\n\t\t/**\n   * Toggle display of the primary dialog\n   *\n   * @public\n   * @property showAbortIntegrationOverlay\n   * @type {boolean}\n   * @default false\n   */\n\t\tshowDialog: true,\n\n\t\trpcError: null,\n\t\thasRpcError: Ember.computed('rpcError', function () {\n\t\t\treturn !Ember.isNone(this.get('rpcError.debug.errors'));\n\t\t}),\n\t\trpcErrorString: Ember.computed('rpcError', 'hasRpcError', function () {\n\t\t\treturn this.get('hasRpcError') ? JSON.stringify(this.get('rpcError'), null, '\\t') : null;\n\t\t}),\n\n\t\t// getCompanySelectOptions(companies, selectedId) {\n\t\t// \treturn this.getSelectOptions(companies, selectedId);\n\t\t// },\n\n\t\t// getCostCodeSelectOptions(costCodeLists, selectedId) {\n\t\t// \treturn this.getSelectOptions(costCodeLists, selectedId);\n\t\t// },\n\t\t//\n\t\t// getSelectOptions(options, selectedId) {\n\t\t// \tif (!isNone(options) && Array.isArray(options)) {\n\t\t// \t\treturn options.map(option => EmberObject.create({\n\t\t// \t\t\tkey: option.id,\n\t\t// \t\t\tlabel: option.title,\n\t\t// \t\t\t_selected: (option.id === selectedId)\n\t\t// \t\t}));\n\t\t// \t} else {\n\t\t// \t\treturn [];\n\t\t// \t}\n\t\t// },\n\n\t\t/**\n   * Computed: `procoreCompanies`\n   *\n   * Show a different label in the select box depending on whether companies data been recieved from the RPC yet\n   *\n   * @public\n   * @property companySelectLabel\n   * @type {string}\n   * @default \"Loading companies...\"\n   */\n\t\tcompanySelectLabel: Ember.computed('procoreCompanies', function () {\n\t\t\treturn !Ember.isNone(this.get('procoreCompanies')) ? (0, _utils.loc)(\"Select a company\") : (0, _utils.loc)(\"Loading companies...\");\n\t\t}),\n\n\t\tselectedCompanyIdChanged: Ember.observer('selectedCompanyId', function () {\n\t\t\tvar id = this.get('selectedCompanyId');\n\n\t\t\tif (!Ember.isNone(id)) {\n\t\t\t\tthis.loadCostCodes(id);\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed: `procoreCostCodeLists`\n   *\n   * Show a different label in the select box depending on whether costCodeLists data been recieved from the RPC yet\n   *\n   * @public\n   * @property costCodeSelectLabel\n   * @type {string}\n   * @default \"Loading cost codes lists...\"\n   */\n\t\tcostCodeSelectLabel: Ember.computed('procoreCostCodeLists', function () {\n\t\t\treturn !Ember.isNone(this.get('procoreCostCodeLists')) ? (0, _utils.loc)(\"Select a cost code list\") : (0, _utils.loc)(\"Loading cost codes lists...\");\n\t\t}),\n\n\t\t/**\n   * Override the base class to not redirect immediately\n   *\n   * @private\n   * @method handleGrantCode\n   * @param {grantCode}\n   * @async\n   * @return {Object}\n   */\n\t\thandleGrantCode: function handleGrantCode(grantCode) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('grantCode', grantCode);\n\t\t\tthis.send('showDialog');\n\n\t\t\tif (!window.runningTests) {\n\t\t\t\treturn this.get('integration').rpcProcoreSetCredentials(this.get('integrationName'), grantCode).then(function (procoreCompanies) {\n\n\t\t\t\t\tif (!_this.get('isDestroyed') && !Ember.isNone(procoreCompanies)) {\n\t\t\t\t\t\tif (!Array.isArray(procoreCompanies)) {\n\t\t\t\t\t\t\tprocoreCompanies = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// FIXME: remove map\n\t\t\t\t\t\tprocoreCompanies = procoreCompanies.map(function (c, i) {\n\t\t\t\t\t\t\tif (!c.hasOwnProperty('available')) {\n\t\t\t\t\t\t\t\tc.available = !(i % 2); // fake available flag for testing\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tvar procoreCompaniesAvailable = procoreCompanies.filter(function (c) {\n\t\t\t\t\t\t\treturn c.available;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tvar procoreCompaniesUnavailable = procoreCompanies.reject(function (c) {\n\t\t\t\t\t\t\treturn c.available;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tvar selectedCompanyId = procoreCompaniesAvailable.length === 1 ? procoreCompaniesAvailable[0].id : null;\n\n\t\t\t\t\t\t// const companySelectOptions = this.getCompanySelectOptions(procoreCompanies, selectedCompanyId);\n\n\t\t\t\t\t\t_logger.default.info('OAuthCallback', 'handleGrantCode', 'setCredentials', { selectedCompanyId: selectedCompanyId, procoreCompanies: procoreCompanies, procoreCompaniesAvailable: procoreCompaniesAvailable, procoreCompaniesUnavailable: procoreCompaniesUnavailable });\n\n\t\t\t\t\t\t_this.setProperties({\n\t\t\t\t\t\t\tselectedCompanyId: selectedCompanyId,\n\t\t\t\t\t\t\tprocoreCompanies: procoreCompanies,\n\t\t\t\t\t\t\tprocoreCompaniesAvailable: procoreCompaniesAvailable,\n\t\t\t\t\t\t\tprocoreCompaniesUnavailable: procoreCompaniesUnavailable\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn procoreCompanies;\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\tvar errObj = Ember.Object.create(err);\n\t\t\t\t\tvar errMsg = errObj.get('debug.errors.0');\n\n\t\t\t\t\t// if it's a bad grant code it's probably a page refresh, but this possibly cause an infinite redirect issue so do this if DEBUG is enabled\n\t\t\t\t\tif (_settings.default.get('debug_mode') && errMsg === \"invalid grant code provided\") {\n\t\t\t\t\t\treturn _this.reRequestAuth();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _this.onRpcError(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Sends the user selected companyId to the `get-cost-code-lists` RPC,  returning an array of costCodeLists\n   *\n   * Side effect: if there is only one costCodeList, trigger the `onSelectCostCodeList` action to select it\n   *\n   * @public\n   * @method loadCostCodes\n   * @param {integer} companyId\n   * @async\n   * @return {array}\n   */\n\t\tloadCostCodes: function loadCostCodes(companyId) {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.set('selectedCostCodeListId', null);\n\t\t\tthis.set('procoreCostCodeLists', null);\n\n\t\t\tif (Ember.isNone(companyId)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn this.get('integration').rpcProcoreGetCostCodeLists(this.get('integrationName'), companyId).then(function (procoreCostCodeLists) {\n\t\t\t\tif (!_this2.get('isDestroyed') && !Ember.isNone(procoreCostCodeLists)) {\n\t\t\t\t\tif (!Array.isArray(procoreCostCodeLists)) {\n\t\t\t\t\t\tprocoreCostCodeLists = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tvar selectedCostCodeListId = procoreCostCodeLists.length === 1 ? procoreCostCodeLists[0].id : null;\n\n\t\t\t\t\t_logger.default.info('OAuthCallback', 'loadCostCodes', 'getCostCodeLists', { selectedCostCodeListId: selectedCostCodeListId, procoreCostCodeLists: procoreCostCodeLists });\n\n\t\t\t\t\t_this2.setProperties({\n\t\t\t\t\t\tselectedCostCodeListId: selectedCostCodeListId,\n\t\t\t\t\t\tprocoreCostCodeLists: procoreCostCodeLists\n\t\t\t\t\t\t// costCodeSelectOptions,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn procoreCostCodeLists;\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _this2.onRpcError(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Sends the user selected companyId and costCodeListId to the `get-cost-code-lists` RPC,  returning an array of costCodeLists\n   *\n   * Side effect: On success, redirect the user to the dashboard\n   *\n   * @public\n   * @method finalizeIntegration\n   * @param {integer} companyId\n   * @async\n   * @return {array}\n   */\n\t\tfinalizeIntegration: function finalizeIntegration(selectedCompanyId, selectedCostCodeListId) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this.get('integration').rpcProcoreFinalizeConfiguration(this.get('integrationName'), selectedCompanyId, selectedCostCodeListId).then(function () {\n\t\t\t\treturn _this3.returnToDashboard();\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _this3.onRpcError(err);\n\t\t\t});\n\t\t},\n\t\tabortIntegration: function abortIntegration() {\n\t\t\treturn this.get('integration').rpcDisconnect(this.get('integrationName'));\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method returnToDashboard\n   */\n\t\treturnToDashboard: function returnToDashboard() {\n\t\t\treturn this.transitionTo(this.get('dashboardUrl'));\n\t\t},\n\t\tonRpcError: function onRpcError(err) {\n\t\t\t_logger.default.error('OAuthCallback', 'onRpcError', { err: err });\n\n\t\t\tthis.set('rpcError', err);\n\n\t\t\treturn Ember.RSVP.reject(err);\n\t\t},\n\n\n\t\t/**\n   * Gets the grantUrl from the RPC then opens a new window to that location\n   *\n   * @private\n   * @method connectIntegration\n   */\n\t\treRequestAuth: function reRequestAuth() {\n\t\t\t_logger.default.info('oauth-callback', 'reRequestAuth');\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn this.rpcGrantUrl().then(function (results) {\n\t\t\t\t_logger.default.info('oauth-callback', 'reRequestAuth', 'grantUrl', { results: results });\n\n\t\t\t\tif (results && results.data && results.data.grant_url) {\n\t\t\t\t\tvar oauthUrl = results.data.grant_url;\n\n\t\t\t\t\t_logger.default.info('oauth-callback', 'reRequestAuth', 'grantUrl', { oauthUrl: oauthUrl });\n\n\t\t\t\t\treturn window.location = oauthUrl;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\trpcGrantUrl: function rpcGrantUrl() {\n\t\t\treturn this.get('integration').rpcGrantUrl(this.get('integrationName'));\n\t\t},\n\t\tgetEventValue: function getEventValue(evt) {\n\t\t\treturn evt.target ? evt.target.value : evt.srcElement.value;\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * Triggered on page load if there were no OAuth errors\n    *\n    * @event showDialog\n    */\n\t\t\tshowDialog: function showDialog() {\n\t\t\t\tthis.set('showDialog', true);\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when setup is completed or aborted\n    *\n    * @event hideDialog\n    */\n\t\t\thideDialog: function hideDialog() {\n\t\t\t\tthis.set('showDialog', false);\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user selects a company from the list\n    *\n    * @event onSelectCompany\n    * @param entry {EmberObject}\n    */\n\t\t\t// onSelectCompany(entry) {\n\t\t\t// \tLogger.info('OAuthCallback', 'onSelectCompany', { entry });\n\t\t\t//\n\t\t\t// \tif (!this.get('isDestroyed')) {\n\t\t\t// \t\tthis.set('selectedCompanyId', entry.key);\n\t\t\t// \t}\n\t\t\t// },\n\t\t\tonSelectCompany: function onSelectCompany(evt) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set('selectedCompanyId', parseInt(val, 10));\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user selectes a costCodeList from the list\n    *\n    * @event onSelectCostCodeList\n    * @param entry {EmberObject}\n    */\n\t\t\t// onSelectCostCodeList(entry) {\n\t\t\t// \tLogger.info('OAuthCallback', 'onSelectCostCodeList', { entry });\n\t\t\t//\n\t\t\t// \tif (!this.get('isDestroyed')) {\n\t\t\t// \t\tthis.set('selectedCostCodeListId', entry.key);\n\t\t\t// \t}\n\t\t\t// },\n\t\t\tonSelectCostCodeList: function onSelectCostCodeList(evt) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set('selectedCostCodeListId', parseInt(val, 10));\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user clicks the \"connect\" button.\n    *\n    * Confirms required values are set, then calls `finalizeIntegration`\n    *\n    * @event finalizeIntegration\n    */\n\t\t\tfinalizeIntegration: function finalizeIntegration() {\n\t\t\t\t_logger.default.info('OAuthCallback', 'finalizeIntegration');\n\n\t\t\t\tvar selectedCompanyId = this.get('selectedCompanyId');\n\t\t\t\tvar selectedCostCodeListId = this.get('selectedCostCodeListId');\n\n\t\t\t\tif (!selectedCompanyId) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must select a company'));\n\t\t\t\t} else if (!selectedCostCodeListId) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must select a cost code list'));\n\t\t\t\t} else {\n\t\t\t\t\treturn this.finalizeIntegration(selectedCompanyId, selectedCostCodeListId);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user clicks the \"abort\" button\n    *\n    * @event abortIntegration\n    */\n\t\t\tabortIntegration: function abortIntegration() {\n\t\t\t\t_logger.default.info('OAuthCallback', 'abortIntegration');\n\n\t\t\t\tthis.set('showAbortIntegrationOverlay', true);\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user clicks the \"abort\" button in the confirmation dialog\n    *\n    * Hides the dialog and redirects the user to the dashboard\n    *\n    * @event abortIntegrationConfirm\n    */\n\t\t\tabortIntegrationConfirm: function abortIntegrationConfirm() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t_logger.default.info('OAuthCallback', 'abortIntegrationConfirm');\n\n\t\t\t\treturn this.abortIntegration().then(function () {\n\t\t\t\t\t_this4.set('showAbortIntegrationOverlay', false);\n\n\t\t\t\t\treturn _this4.returnToDashboard();\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * Triggered when the user clicks the \"cancel\" button in the confirmation dialog\n    *\n    * @event abortIntegrationCancel\n    */\n\t\t\tabortIntegrationCancel: function abortIntegrationCancel() {\n\t\t\t\t_logger.default.info('OAuthCallback', 'abortIntegrationCancel');\n\n\t\t\t\tthis.set('showAbortIntegrationOverlay', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/procore/settings-dialog', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tclassNames: ['integrations-settings-dialog'],\n\n\t\t/**\n   * @public\n   * @property integrationName\n   * @type {string}\n   */\n\t\tintegrationName: null,\n\n\t\t/**\n   * @public\n   * @property autoImportEnabledOptions\n   * @type {EmberObject[]}\n   */\n\t\tautoImportEnabledOptions: null,\n\n\t\t/**\n   * @public\n   * @property error\n   * @type {EmberObject}\n   */\n\t\terror: null,\n\n\t\t/**\n   * @private\n   * @property _organizationIntegration\n   * @type {Models.OrganizationIntegration}\n   */\n\t\t_organizationIntegration: null,\n\n\t\t/**\n   * @private\n   * @property _autoImportEnabledValue\n   * @type {string}\n   */\n\t\t_autoImportEnabledValue: 'P1D',\n\n\t\t/**\n   * @private\n   * @property _autoImportDisabledValue\n   * @type {string}\n   */\n\t\t_autoImportDisabledValue: '_-NULL-_',\n\n\t\t/**\n   * @private\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tthis.setOrganizationIntegration().then(function () {\n\t\t\t\t_this.setAutoImportEnabledOptions();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Get Organization's OrganizationIntegration from the API\n   *\n   * @public\n   * @method getOrganizationIntegration\n   * @return {Models.organizationIntegration}\n   */\n\t\tgetOrganizationIntegration: function getOrganizationIntegration() {\n\t\t\tvar organization = this.get('auth.organization.content');\n\t\t\tvar integrationName = this.get('integrationName');\n\n\t\t\treturn organization.getIntegration(integrationName);\n\t\t},\n\n\n\t\t/**\n   * Caches `this.getOrganizationIntegration()` result to `_organizationIntegration`\n   *\n   * @public\n   * @method setOrganizationIntegration\n   * @return {Models.organizationIntegration}\n   */\n\t\tsetOrganizationIntegration: function setOrganizationIntegration() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.getOrganizationIntegration().then(function (organizationIntegration) {\n\t\t\t\t_this2.set('_organizationIntegration', organizationIntegration);\n\n\t\t\t\treturn organizationIntegration;\n\t\t\t});\n\t\t},\n\t\tsetAutoImportEnabledOptions: function setAutoImportEnabledOptions() {\n\t\t\tvar currentValue = this.get('_organizationIntegration.frequency');\n\n\t\t\tvar enabledValue = this.get('_autoImportEnabledValue');\n\t\t\tvar disabledValue = this.get('_autoImportDisabledValue');\n\n\t\t\tvar options = [Ember.Object.create({\n\t\t\t\tvalue: 'Yes',\n\t\t\t\tkey: enabledValue,\n\t\t\t\t_selected: currentValue === enabledValue\n\t\t\t}), Ember.Object.create({\n\t\t\t\tvalue: 'No',\n\t\t\t\tkey: disabledValue,\n\t\t\t\t_selected: currentValue === disabledValue || Ember.isNone(currentValue)\n\t\t\t})];\n\n\t\t\tthis.set('autoImportEnabledOptions', options);\n\t\t},\n\t\tsaveSettings: function saveSettings() {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this.get('_organizationIntegration').save().then(function (result) {\n\t\t\t\t_this3.sendAction('onClose');\n\n\t\t\t\treturn result;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_this3.set('error', err);\n\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonSave: function onSave() {\n\t\t\t\treturn this.saveSettings();\n\t\t\t},\n\t\t\tonSaveAndImport: function onSaveAndImport() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\treturn this.saveSettings().then(function () {\n\t\t\t\t\t_this4.sendAction('triggerImport');\n\t\t\t\t});\n\t\t\t},\n\t\t\tonSelectAutoImportOption: function onSelectAutoImportOption(modelSelected) {\n\t\t\t\tthis.set('_organizationIntegration.frequency', modelSelected.key);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/quickbooks/grid-item', ['exports', 'busy-app/components/company/integrations/grid/grid-item-base', '@busy-web/utils', 'busy-app/utils/settings'], function (exports, _gridItemBase, _utils, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _gridItemBase.default.extend({\n\t\t/**\n   * @properties classNames\n   * @type {string[]}\n   * @default ['grid-item-quickbooks']\n   */\n\t\tclassNames: ['grid-item-quickbooks'],\n\n\t\t/**\n   * Label identifying the name of the organization-integration\n   *\n   * @public\n   * @properties integrationName\n   * @type {string}\n   * @default 'quickbooks'\n   */\n\t\tintegrationName: 'quickbooks',\n\n\t\t/**\n   * Ember route to follow when this element is clicked\n   *\n   * @public\n   * @properties dashboardRoute\n   * @type {string}\n   * @default 'company-settings.intuit-quickbooks'\n   */\n\t\tdashboardRoute: 'company-settings.intuit-quickbooks',\n\n\t\t/**\n   * URL path to the company logo image. Should begin with '/'\n   *\n   * @public\n   * @properties logo\n   * @type {string}\n   * @default '/images/integration-logos/integration_logos-01.png'\n   */\n\t\tlogo: '/images/integration-logos/integration_logos-01.png',\n\n\t\t/**\n   * Feature flag for this integration\n   *\n   * @public\n   * @properties featureFlag\n   * @type {string}\n   * @default 'quickbooks'\n   */\n\t\tfeatureFlag: 'quickbooks',\n\n\t\tisEnabled: Ember.computed('features.quickbooks', function () {\n\t\t\treturn this.get('features').isEnabled('quickbooks');\n\t\t}),\n\n\t\t/**\n  * @private\n  * @method init\n  * @returns {null}\n  */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setStatus();\n\t\t},\n\n\n\t\t/**\n  * Override inherited `getStatus()`\n  *\n  * @method getStatus\n  * @returns {RSVP}\n  */\n\t\tgetStatus: function getStatus() {\n\t\t\tvar _this = this;\n\n\t\t\tvar rpcParams = {\n\t\t\t\torganization_id: this.get('auth.organization.id')\n\t\t\t};\n\n\t\t\tthis.set('isLoading', true);\n\t\t\treturn this.get('integration').rpcRequest('quick-books', 'getStatus', rpcParams, _settings.default.get('qb_url')).then(function (integrationStatus) {\n\t\t\t\tif (integrationStatus.data === 'connected' || integrationStatus.data === 'pending') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisConnected: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}).catch(function (error) {\n\t\t\t\treturn {\n\t\t\t\t\terrorType: (0, _utils.loc)('Connection Error'),\n\t\t\t\t\terrorMessage: error.statusText\n\t\t\t\t};\n\t\t\t}).finally(function () {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t_this.set('isLoading', false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/components/company/integrations/vendors/quickbooks/sync-options', ['exports', 'moment', '@busy-web/utils', 'busy-app/utils/settings', 'busy-app/utils/logger'], function (exports, _moment, _utils, _settings, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\t/***/\n\tvar kMinSyncDate = (0, _moment.default)('2018-06-18', 'YYYY-MM-DD').utc().unix(); // sync date must be AFTER this date\n\n\n\t/*\n  * The selected sync date must be after the server limited kMinSyncDate\n  *   and it must be after the Closing Date set in the users quickbooks\n  *\n  * The selected date is inclusive\n  */\n\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tintegration: Ember.inject.service(),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\t\tstore: Ember.inject.service(),\n\n\t\t// attributes\n\t\tcloseDialog: null,\n\t\tquickbooksConnected: false,\n\n\t\t// form values\n\t\tsyncType: null,\n\t\tsyncDate: null,\n\t\tisTemporary: true,\n\n\t\t// private properties\n\t\t_isLoading: false,\n\t\t_payPeriod: null,\n\t\t_prevPeriod: null,\n\t\t_closingDate: null,\n\t\t_featureMinSyncDate: kMinSyncDate,\n\n\t\t// do not allow any sync dates before the feature is supported, or before the date set as a Closing Date in QuickBooks\n\t\t_minSyncDate: Ember.computed('_featureMinSyncDate', '_closingDate', function () {\n\t\t\tvar featureMinSyncDate = Ember.get(this, '_featureMinSyncDate');\n\t\t\tvar closingDate = Ember.get(this, '_closingDate');\n\n\t\t\t// exclusionBoundary is the last date UNAVAILABLE for syncing\n\t\t\t// minDate is the first date AVAILABLE for syncing\n\t\t\t// QB's Closing Date is exclusionary, so the sync date must be AFTER that date\n\t\t\tvar exclusionBoundary = this.safeMax(featureMinSyncDate, closingDate);\n\t\t\tvar minDate = _utils.Time.date(exclusionBoundary).startOf('day').add(1, 'days').unix();\n\n\t\t\treturn minDate;\n\t\t}),\n\n\t\t_recentTooltip: (0, _utils.loc)('Syncing of time entries in the current pay period will automatically stop seven days after the pay period ends. This prevents historical time entries from being unintentionally changed by updates or changes made in busybusy.'),\n\t\t_customTooltip: (0, _utils.loc)('Allow time entries to be synced back to the specified date.'),\n\t\t_syncDateTooOldError: Ember.computed('_minSyncDate', function () {\n\t\t\treturn (0, _utils.loc)('The earliest valid sync date is %@', [_utils.Time.date(Ember.get(this, '_minSyncDate')).format('LL')]);\n\t\t}),\n\n\t\t_isSyncDateTooOld: Ember.computed('syncDate', '_minSyncDate', function () {\n\t\t\treturn Ember.get(this, 'syncDate') < Ember.get(this, '_minSyncDate');\n\t\t}),\n\n\t\t// The default Cutoff Date is 7 days from the beginning of the previous pay period,\n\t\t// \tunless the Feature Min Date or the Closing date is more recent (_minSyncDate), then that value is used\n\t\tdefaultCutoffDate: Ember.computed('_prevPayPeriod.startDate', '_minSyncDate', function () {\n\t\t\tvar payPeriodStartDate = Ember.get(this, '_prevPayPeriod.startDate');\n\t\t\tvar defaultCutoffDate = payPeriodStartDate.add(7, 'days').unix();\n\t\t\tvar minDate = this.safeMax(defaultCutoffDate, Ember.get(this, '_minSyncDate'));\n\n\t\t\treturn minDate;\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (Ember.get(this, 'quickbooksConnected')) {\n\t\t\t\tthis.initData();\n\t\t\t}\n\t\t},\n\t\tinitData: function initData() {\n\t\t\tvar _this = this;\n\n\t\t\tvar _payPeriod = Ember.get(this, 'payPeriod').getPayPeriod();\n\t\t\tvar _prevPayPeriod = Ember.get(this, 'payPeriod').getPayPeriod(_payPeriod.startDate.subtract(1, 'days').unix());\n\n\t\t\tthis.safeSetProperties({\n\t\t\t\t_isLoading: true,\n\t\t\t\t_payPeriod: _payPeriod,\n\t\t\t\t_prevPayPeriod: _prevPayPeriod\n\t\t\t});\n\n\t\t\treturn this.initOptionsData().finally(function () {\n\t\t\t\t_this.safeSet('_isLoading', false);\n\t\t\t});\n\t\t},\n\t\tinitOptionsData: function initOptionsData() {\n\t\t\tvar _this2 = this;\n\n\t\t\t_logger.default.info(this, 'initOptionsData');\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmanualDateData: this.rpcGetOrganizationManualDate(), // manualDate is the Sync Date set in this dialog, it can be NULL\n\t\t\t\tclosingDateData: this.rpcGetOrganizationClosingDate() // closingDate comes from QB\n\t\t\t}).then(function (props) {\n\t\t\t\tvar manualDateData = props.manualDateData,\n\t\t\t\t    closingDateData = props.closingDateData;\n\n\t\t\t\tvar _closingDate = Ember.get(closingDateData, 'date');\n\t\t\t\tvar manualDate = Ember.get(manualDateData, 'date');\n\n\t\t\t\t_logger.default.info(_this2, 'initOptionsData', { manualDateData: manualDateData, closingDateData: closingDateData, _closingDate: _closingDate, manualDate: manualDate });\n\n\t\t\t\t_this2.safeSetProperties({\n\t\t\t\t\t_closingDate: _closingDate,\n\t\t\t\t\tsyncType: 'recent',\n\t\t\t\t\tsyncDate: Ember.get(_this2, 'defaultCutoffDate'),\n\t\t\t\t\tisTemporary: true\n\t\t\t\t});\n\n\t\t\t\tif (Ember.isPresent(manualDate)) {\n\t\t\t\t\tvar isPermanent = Ember.get(manualDateData, 'is_permanent');\n\t\t\t\t\tvar isTemporary = !isPermanent;\n\n\t\t\t\t\t_this2.safeSetProperties({\n\t\t\t\t\t\tsyncType: 'custom',\n\t\t\t\t\t\tsyncDate: _utils.Time.date(manualDate).startOf('day').unix(),\n\t\t\t\t\t\tisTemporary: isTemporary\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t_logger.default.info(_this2, 'initOptionsData', Ember.getProperties(_this2, 'syncType', 'syncDate', 'isTemporary'));\n\n\t\t\t\treturn manualDateData.data;\n\t\t\t});\n\t\t},\n\t\trpcRequestQuickbooks: function rpcRequestQuickbooks(method) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\t// Logger.info(this, 'rpcRequestQuickbooks', { method, params });\n\n\t\t\treturn Ember.get(this, 'store').rpcRequest('quick-books', method, params, _settings.default.get('qb_url')).then(function (result) {\n\t\t\t\t_logger.default.info(_this3, 'rpcRequestQuickbooks', method, { params: params, result: result });\n\n\t\t\t\treturn Ember.get(result, 'data');\n\t\t\t});\n\t\t},\n\t\trpcSetOrganizationManualDate: function rpcSetOrganizationManualDate() {\n\t\t\tvar params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\t// Logger.info(this, 'rpcSetOrganizationManualDate', { params });\n\n\t\t\treturn this.rpcRequestQuickbooks('setOrganizationManualDate', params);\n\t\t},\n\t\trpcGetOrganizationManualDate: function rpcGetOrganizationManualDate() {\n\t\t\t// Logger.info(this, 'rpcGetOrganizationManualDate');\n\n\t\t\treturn this.rpcRequestQuickbooks('getOrganizationManualDate');\n\t\t},\n\t\trpcGetOrganizationClosingDate: function rpcGetOrganizationClosingDate() {\n\t\t\t// Logger.info(this, 'rpcGetOrganizationClosingDate');\n\n\t\t\treturn this.rpcRequestQuickbooks('getOrganizationClosingDate');\n\t\t},\n\t\tsaveOptions: function saveOptions() {\n\t\t\tvar params = Ember.get(this, 'syncType') === 'recent' ? {} : {\n\t\t\t\tdate: Ember.get(this, 'syncDate'),\n\t\t\t\tis_permanent: !Ember.get(this, 'isTemporary')\n\t\t\t};\n\n\t\t\t_logger.default.info(this, 'saveOptions', { params: params });\n\n\t\t\treturn this.rpcSetOrganizationManualDate(params);\n\t\t},\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\treturn Ember.set(this, key, val);\n\t\t\t}\n\t\t},\n\t\tsafeSetProperties: function safeSetProperties(props) {\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\treturn Ember.setProperties(this, props);\n\t\t\t}\n\t\t},\n\t\tsafeMax: function safeMax() {\n\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\targs[_key] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar safeInts = args.compact(); // undefined values make max() return NaN\n\t\t\tvar maxValue = safeInts.length ? Math.max.apply(Math, _toConsumableArray(safeInts)) : null;\n\n\t\t\treturn maxValue;\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\treturn this.closeDialog();\n\t\t\t},\n\t\t\tsave: function save() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tif (Ember.get(this, '_isSyncDateTooOld')) {\n\t\t\t\t\treturn Ember.RSVP.reject(Ember.get(this, '_syncDateTooOldError'));\n\t\t\t\t}\n\n\t\t\t\treturn this.saveOptions().then(function () {\n\t\t\t\t\treturn _this4.sendAction('close');\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectSyncType: function selectSyncType(syncType) {\n\t\t\t\tthis.safeSet('syncType', syncType);\n\n\t\t\t\treturn false; // don't bubble\n\t\t\t},\n\t\t\ttoggleProperty: function toggleProperty(key) {\n\t\t\t\tthis.toggleProperty(key);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/permission-boxes', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t/**\n  * @module Components\n  *\n  */\n\tvar kState = {\n\t\t_self: 1,\n\t\t_lower: 2,\n\t\t_same: 4,\n\t\t_higher: 8\n\t};\n\n\t/**\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tvalue: null,\n\n\t\tgroup: null,\n\n\t\t_self: false,\n\t\t_lower: false,\n\t\t_same: false,\n\t\t_higher: false,\n\n\t\tdisabled: false,\n\t\tdisableSelf: false,\n\t\tdisableLower: false,\n\t\tdisableSame: false,\n\t\tdisableHigher: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t// generate group name\n\t\t\tif (Ember.isNone(this.get('group'))) {\n\t\t\t\tthis.set('group', _utils.UUID.generate());\n\t\t\t}\n\n\t\t\t// setup boxes\n\t\t\tthis.setupCheckBoxes(this.get('value'));\n\t\t},\n\n\n\t\tgroupName: Ember.computed('group', function () {\n\t\t\treturn 'permission-boxes-' + this.get('group');\n\t\t}),\n\n\t\tvalueChanged: Ember.observer('value', function () {\n\t\t\tif (!Ember.isNone(this.get('value'))) {\n\t\t\t\tthis.setupCheckBoxes(this.get('value'));\n\t\t\t}\n\t\t}),\n\n\t\tdisableSelfBool: Ember.computed('disableSelf', 'disabled', function () {\n\t\t\treturn this.get('disableSelf') || this.get('disabled');\n\t\t}),\n\n\t\tdisableLowerBool: Ember.computed('disableLower', 'disabled', function () {\n\t\t\treturn this.get('disableLower') || this.get('disabled');\n\t\t}),\n\n\t\tdisableSameBool: Ember.computed('disableSame', 'disabled', function () {\n\t\t\treturn this.get('disableSame') || this.get('disabled');\n\t\t}),\n\n\t\tdisableHigherBool: Ember.computed('disableHigher', 'disabled', function () {\n\t\t\treturn this.get('disableHigher') || this.get('disabled');\n\t\t}),\n\n\t\t_selfUpdate: Ember.observer('_self', 'disableSelfBool', function () {\n\t\t\tthis.toggleFlag('_self');\n\t\t}),\n\n\t\t_lowerUpdate: Ember.observer('_lower', 'disableLowerBool', function () {\n\t\t\tthis.toggleFlag('_lower');\n\t\t}),\n\n\t\t_sameUpdate: Ember.observer('_same', 'disableSameBool', function () {\n\t\t\tthis.toggleFlag('_same');\n\t\t}),\n\n\t\t_higherUpdate: Ember.observer('_higher', 'disableHigherBool', function () {\n\t\t\tthis.toggleFlag('_higher');\n\t\t}),\n\n\t\ttoggleFlag: function toggleFlag(key) {\n\t\t\tvar value = this.get('value');\n\n\t\t\tvar flagValue = kState[key];\n\t\t\tvar isEnabled = this.get(key);\n\n\t\t\tvalue = isEnabled ? value | flagValue : // add to bitmask      (1 | 4 = 5, 1 | 5 = 5)\n\t\t\tvalue & ~flagValue; // remove from bitmask (5 | ~1 = 4, 5 | ~2 = 5)\n\n\t\t\tthis.set('value', value);\n\t\t},\n\t\tsetupCheckBoxes: function setupCheckBoxes() {\n\t\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\t\tthis.setProperties({\n\t\t\t\t_self: !!(value & kState._self),\n\t\t\t\t_lower: !!(value & kState._lower),\n\t\t\t\t_same: !!(value & kState._same),\n\t\t\t\t_higher: !!(value & kState._higher)\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/components/company/permission-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar kState = {\n\t\t_self: 1,\n\t\t_lower: 2,\n\t\t_same: 4,\n\t\t_higher: 8\n\t};\n\n\t/**\n  *\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-permission-dialog'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\theaderTitle: '',\n\n\t\tposition: null,\n\t\ttimeEventDisableLower: false,\n\t\ttimeEventDisableSame: false,\n\t\ttimeEventDisableHigher: false,\n\n\t\tshowUpgradeDialog: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.disableSelfTimeEvent();\n\t\t},\n\n\n\t\tisDisabledAll: Ember.computed('position.canEditPosition', 'features.customRoles', function () {\n\t\t\t// disable dialog changes for free account\n\t\t\tif (!this.get('features.customRoles')) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar isDisabled = false;\n\t\t\tif (!Ember.isNone(this.get('position'))) {\n\t\t\t\tisDisabled = !this.get('features').isEnabled('customRoles') || !this.get('position.canEditPosition');\n\t\t\t}\n\t\t\treturn isDisabled;\n\t\t}),\n\n\t\tisDisabledManageEmployeeGroup: Ember.computed('position.scopeByGroup', 'isDisabledAll', function () {\n\t\t\treturn this.get('isDisabledAll') || this.get('position.scopeByGroup');\n\t\t}),\n\n\t\tdisableSelfTimeEvent: Ember.observer('position.manageTimeEntries', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar position = this.get('position');\n\n\t\t\tif (!Ember.isNone(position)) {\n\t\t\t\tvar value = position.parseSetting(position.get('manageTimeEntries'));\n\t\t\t\tvar newTimeEvents = position.get('timeEvents');\n\n\t\t\t\tif (value.lower) {\n\t\t\t\t\tnewTimeEvents = newTimeEvents | kState._lower;\n\t\t\t\t}\n\t\t\t\tif (value.same) {\n\t\t\t\t\tnewTimeEvents = newTimeEvents | kState._same;\n\t\t\t\t}\n\t\t\t\tif (value.higher) {\n\t\t\t\t\tnewTimeEvents = newTimeEvents | kState._higher;\n\t\t\t\t}\n\n\t\t\t\tposition.set('timeEvents', newTimeEvents);\n\n\t\t\t\tEmber.run.next(function () {\n\t\t\t\t\t_this.set('timeEventDisableLower', value.lower);\n\t\t\t\t\t_this.set('timeEventDisableSame', value.same);\n\t\t\t\t\t_this.set('timeEventDisableHigher', value.higher);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tactivityReportPermission: Ember.computed('position.viewAllActivityReport', function () {\n\t\t\tvar viewAllActivityReport = this.get('position.viewAllActivityReport');\n\t\t\tif (viewAllActivityReport) {\n\t\t\t\treturn (0, _utils.loc)('All Activity Reports - Web & Mobile');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Employee Report Only - Mobile Only');\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar position = this.get('position');\n\n\t\t\t\tif (Ember.isEmpty(position.get('title')) || Ember.isNone(position.get('level'))) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Please fill out the required fields.'));\n\t\t\t\t} else if (position.get('level') === 1) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"You can only view the Admin Position. Changes will not be saved.\"));\n\t\t\t\t} else {\n\t\t\t\t\tposition.set('manageProjectGroups', position.get('manageProjects'));\n\n\t\t\t\t\tif (position.get('timeEvents') < 1) {\n\t\t\t\t\t\tposition.set('timeEvents', 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (position.get('viewMemberActivityReport') < 1) {\n\t\t\t\t\t\tposition.set('viewMemberActivityReport', 1);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn position.save().then(function (item) {\n\t\t\t\t\t\treturn _this2.sendAction('onSave', item);\n\t\t\t\t\t}).catch(function () {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Something went wrong. Please try again Later.'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar position = this.get('position');\n\n\t\t\t\tif (position.get('level') === 1) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"The Admin Position cannot be deleted.\"));\n\t\t\t\t} else {\n\t\t\t\t\tif (!position.get('isDeleted')) {\n\t\t\t\t\t\tposition.deleteRecord();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn position.save().then(function (item) {\n\t\t\t\t\t\treturn _this3.sendAction('onDelete', item);\n\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\tvar errorMessage = 'Something went wrong. Please try again Later.';\n\t\t\t\t\t\tvar errCode = Ember.get(err, 'errors.firstObject.code');\n\n\t\t\t\t\t\tif (errCode === 599) {\n\t\t\t\t\t\t\t// const numMembers = get(position, 'members.length');\n\t\t\t\t\t\t\terrorMessage = \"You can't delete a position that has members assigned to it.\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(errorMessage));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tchangeActivityReportPermission: function changeActivityReportPermission(key) {\n\t\t\t\tvar position = this.get('position');\n\t\t\t\tthis.set('activityReportPermission', key);\n\t\t\t\tif (key === 'All Activity Reports - Web & Mobile') {\n\t\t\t\t\tposition.set('viewAllActivityReport', true);\n\t\t\t\t\tposition.set('viewMemberActivityReport', 15);\n\t\t\t\t} else if (key === 'Employee Report Only - Mobile Only') {\n\t\t\t\t\tposition.set('viewAllActivityReport', false);\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowUpgradeDialog: function showUpgradeDialog() {\n\t\t\t\tthis.sendAction('showUpgradeDialog');\n\t\t\t},\n\n\n\t\t\t// disable the \"Manage Employee Groups\" option when \"Limit permissions to employee groups\" is selected\n\t\t\tonChangeScopeByGroup: function onChangeScopeByGroup(val) {\n\t\t\t\tif (val) {\n\t\t\t\t\tthis.set('position.manageEmployeeGroups', false);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t// when dailyProjectPrompts is disabled, also disable dailyProjectPromptsUseSubprojects\n\t\t\tonChangeDailyProjectPrompts: function onChangeDailyProjectPrompts(val) {\n\t\t\t\tEmber.set(this, 'position.dailyProjectPrompts', val);\n\n\t\t\t\tif (!val) {\n\t\t\t\t\tEmber.set(this, 'position.dailyProjectPromptsUseSubprojects', false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/permission-settings', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-permission-settings'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\n\t\tshowPositionDialog: false,\n\t\tshowEditDialog: false,\n\t\torganization: null,\n\n\t\tpositions: Ember.computed.alias('auth.positions'),\n\n\t\tdidSaveNewPosition: false,\n\n\t\tdraggingModel: null,\n\t\tdroppedModel: null,\n\t\toriginalPosition: null,\n\n\t\tproFeatureManager: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.get('auth.positions');\n\n\t\t\tthis.set('proFeatureManager', this.get('proFeature').getManager());\n\t\t},\n\t\tmoveItem: function moveItem(item) {\n\t\t\tif (this.get('draggingModel.level') !== item.get('level')) {\n\t\t\t\tvar toPosition = this.get('positions.content').indexOf(item);\n\t\t\t\tvar fromPosition = this.get('positions.content').indexOf(this.get('draggingModel'));\n\n\t\t\t\tthis.set('draggingModel.level', toPosition + 1);\n\t\t\t\titem.set('level', fromPosition + 1);\n\n\t\t\t\tthis.set('draggingModel.isDragOver', false);\n\t\t\t\titem.set('isDragOver', false);\n\n\t\t\t\tthis.set('positions.content', this.get('positions.content').sortBy('level'));\n\t\t\t}\n\t\t},\n\t\tdeleteItem: function deleteItem(item) {\n\t\t\t// the position is already deleted by the child component, this is just cleaning up the app state\n\t\t\tEmber.get(this, 'positions.content').removeObject(item);\n\n\t\t\t// every position with a higher level than than the deleted position needs to be updated\n\t\t\t// loop over every position double checking that the level is as expected in case the numbering was broken previously\n\t\t\tvar level = 0;\n\t\t\tEmber.get(this, 'positions').sortBy('level').forEach(function (position) {\n\t\t\t\tlevel = level + 1;\n\t\t\t\tif (Ember.get(position, 'level') !== level) {\n\t\t\t\t\tEmber.setProperties(position, { level: level });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar dirtyRecords = Ember.get(this, 'positions').filterBy('hasDirtyAttributes');\n\n\t\t\tif (Ember.isNone(dirtyRecords)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.all(dirtyRecords.map(function (p) {\n\t\t\t\treturn p.save();\n\t\t\t}));\n\t\t},\n\t\teditPosition: function editPosition(item) {\n\t\t\tthis.set('newPosition', item);\n\n\t\t\tthis.set('showEditDialog', !this.get('showEditDialog'));\n\t\t},\n\t\tsaveMovedPositions: function saveMovedPositions() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\tvar promise = [];\n\t\t\tthis.get('positions.content').forEach(function (position) {\n\t\t\t\tif (position.get('canEditPosition')) {\n\t\t\t\t\tpromise.push(position.save());\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tEmber.RSVP.all(promise).then(function () {\n\t\t\t\t_this.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tnewPosition: function newPosition() {\n\t\t\t\tvar position = this.get('store').createRecord('position', {\n\t\t\t\t\torganizationId: this.get('organization.id'),\n\t\t\t\t\tcanEditPosition: true,\n\t\t\t\t\tlevel: this.get('positions.length') + 1\n\t\t\t\t});\n\n\t\t\t\tthis.set('newPosition', position);\n\t\t\t\tthis.set('showPositionDialog', true);\n\t\t\t},\n\t\t\tcancelPosition: function cancelPosition() {\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t\tthis.set('showPositionDialog', false);\n\t\t\t\tthis.get('newPosition').rollbackAttributes();\n\t\t\t\tthis.set('newPosition', null);\n\t\t\t},\n\t\t\tsaveNewAction: function saveNewAction(item) {\n\t\t\t\tthis.set('didSaveNewPosition', true);\n\t\t\t\t// TODO: find a future-proof way to update this array\n\t\t\t\tthis.get('positions.content').pushObject(item);\n\t\t\t},\n\t\t\tdeletePosition: function deletePosition(item) {\n\t\t\t\treturn this.deleteItem(item);\n\t\t\t},\n\t\t\tdraggingPosition: function draggingPosition(position) {\n\t\t\t\tthis.set('draggingModel', position);\n\t\t\t},\n\t\t\tdragOverPosition: function dragOverPosition(position) {\n\t\t\t\tthis.moveItem(position);\n\t\t\t},\n\t\t\tdroppedPosition: function droppedPosition(dropPosition) {\n\t\t\t\tthis.set('droppedModel', dropPosition);\n\t\t\t},\n\t\t\tdragEndPosition: function dragEndPosition() {\n\t\t\t\tif (!Ember.isNone(this.get('droppedModel.id')) && this.get('draggingModel.id') === this.get('droppedModel.id')) {\n\t\t\t\t\tthis.saveMovedPositions();\n\t\t\t\t} else {\n\t\t\t\t\tthis.get('positions.content').forEach(function (pos) {\n\t\t\t\t\t\tpos.rollbackAttributes();\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.set('positions.content', this.get('positions.content').sortBy('level'));\n\t\t\t\t}\n\n\t\t\t\tthis.set('draggingModel', null);\n\t\t\t\tthis.set('droppedModel', null);\n\t\t\t\tthis.set('originalPosition', null);\n\t\t\t},\n\t\t\tclickedPosition: function clickedPosition(position) {\n\t\t\t\tthis.editPosition(position);\n\t\t\t},\n\t\t\tshowUpgradeDialog: function showUpgradeDialog() {\n\t\t\t\tthis.send('cancelPosition');\n\t\t\t\tthis.get('proFeatureManager').requestAction('customRoles', function () {\n\t\t\t\t\twindow.location.reload();\n\t\t\t\t});\n\t\t\t},\n\t\t\tproFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n\t\t\t\tthis.get('proFeatureManager').openModal();\n\t\t\t},\n\t\t\tproFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n\t\t\t\tthis.get('proFeatureManager').closeModal();\n\t\t\t},\n\t\t\tproFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n\t\t\t\tthis.get('proFeatureManager').onAllow();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/profile-info', ['exports', '@busy-web/utils', 'busy-app/utils/settings'], function (exports, _utils, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-profile-info'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\t/**\n   * Hides/Shows the profile info dialog\n   *\n   * @property showDialog\n   * @type boolean\n   */\n\t\tshowDialog: false,\n\n\t\t/**\n   * Hides/Shows the photo dialog\n   *\n   * @property showPhotoDialog\n   * @type boolean\n   */\n\t\tshowPhotoDialog: false,\n\n\t\t/**\n   * organization model instance\n   *\n   * @property organization\n   * @type DS.Model\n   */\n\t\torganization: null,\n\n\t\t/**\n   * deactivate account dialog toggle\n   *\n   * @property showDeactivate\n   * @type boolean\n   */\n\t\tshowDeactivate: false,\n\n\t\t/**\n   * Saves the Organization model\n   *\n   * @public\n   * @method saveOrganization\n   * @returns {EmberPromise}\n   */\n\t\tcurrencyCodeLabel: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setCurrency();\n\t\t},\n\t\tsetCurrency: function setCurrency() {\n\t\t\tvar _this = this;\n\n\t\t\tvar exclude = ['XTS', 'XXX', 'XDR'];\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\texclude = [];\n\t\t\t}\n\n\t\t\tvar org = this.get('organization.organizationInfo');\n\t\t\tvar currencyOptions = [];\n\t\t\t_utils.Currency.codes().forEach(function (item) {\n\t\t\t\tvar cur = _utils.Currency.code(item);\n\t\t\t\tvar currencyString = cur.get('currency') + ' - ' + cur.get('code');\n\t\t\t\tif (exclude.indexOf(item) < 0) {\n\t\t\t\t\tcurrencyOptions.pushObject(Ember.Object.create({ key: cur.get('code'), value: currencyString, symbol: cur.get('code'), name: cur.get('currency') }));\n\t\t\t\t}\n\n\t\t\t\tif (org.get('currencyCode') === item) {\n\t\t\t\t\t_this.set('currencyCodeLabel', currencyString);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.set('currencyOptions', currencyOptions.sortBy('name'));\n\t\t},\n\t\tsaveOrganization: function saveOrganization() {\n\t\t\tvar organization = this.get('organization');\n\n\t\t\tif (Ember.isEmpty(organization.get('organizationName'))) {\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Organization Name is required'));\n\t\t\t}\n\n\t\t\tif (organization.get('hasDirtyAttributes')) {\n\t\t\t\treturn organization.save();\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(organization);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Saves the OrganizationProfile model\n   *\n   * @public\n   * @method saveOrganizationProfile\n   * @return {EmberPromise}\n   */\n\t\tsaveOrganizationProfile: function saveOrganizationProfile() {\n\t\t\tvar profile = this.get('organization.organizationInfo');\n\n\t\t\tif (profile.get('hasDirtyAttributes')) {\n\t\t\t\treturn profile.save();\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(profile);\n\t\t\t}\n\t\t},\n\t\tsaveSettings: function saveSettings() {\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\torg: this.saveOrganization(),\n\t\t\t\tprofile: this.saveOrganizationProfile()\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenDeactivateAccount: function openDeactivateAccount() {\n\t\t\t\tthis.set('showDeactivate', true);\n\t\t\t},\n\t\t\tcloseDeactivateAccount: function closeDeactivateAccount() {\n\t\t\t\tthis.set('showDeactivate', false);\n\t\t\t},\n\t\t\teditProfile: function editProfile() {\n\t\t\t\tthis.set('showDialog', true);\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tthis.get('organization').rollbackAttributes();\n\t\t\t\tthis.get('organization.organizationInfo').rollbackAttributes();\n\t\t\t\tthis.setCurrency();\n\t\t\t\tthis.set('showDialog', false);\n\t\t\t},\n\t\t\tsaveCompanySettings: function saveCompanySettings() {\n\t\t\t\treturn this.saveSettings();\n\t\t\t},\n\t\t\topenPhotoDialog: function openPhotoDialog() {\n\t\t\t\tthis.set('showPhotoDialog', true);\n\t\t\t},\n\t\t\tclosePhotoDialog: function closePhotoDialog() {\n\t\t\t\tthis.get('organization').rollbackAttributes();\n\t\t\t\tthis.set('showPhotoDialog', false);\n\t\t\t},\n\t\t\tsavePhoto: function savePhoto() {\n\t\t\t\treturn this.saveSettings();\n\t\t\t},\n\t\t\timageChange: function imageChange(file) {\n\t\t\t\tthis.set('organization.image', file);\n\t\t\t},\n\t\t\tselectCurrency: function selectCurrency(item) {\n\t\t\t\tvar org = this.get('organization.organizationInfo');\n\t\t\t\torg.set('currencyCode', item.key);\n\t\t\t\tthis.set('currencyCodeLabel', item.value);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/company/time-keeping', ['exports', '@busy-web/utils', 'moment'], function (exports, _utils, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  /***/\n  var kMinDisclaimerLength = 1;\n  var kMaxDisclaimerLength = 256;\n\n  /**\n   * `Components/Company/TimeKeeping`\n   *\n   * @class TimeKeeping\n   * @namespace Components.Company\n   * @extends Component\n   */\n  exports.default = Ember.Component.extend({\n    classNames: ['c-company-time-keeping'],\n\n    features: Ember.inject.service('features'),\n    store: Ember.inject.service('store'),\n    payPeriodService: Ember.inject.service('payPeriod'),\n    auth: Ember.inject.service('auth'),\n    access: Ember.inject.service('access'),\n    router: Ember.inject.service('router'),\n\n    // database content set to these variables in init\n    organization: null,\n    payPeriod: null,\n    payPeriodChange: null,\n\n    // in the upcoming pay period changes, these are the values - set in init\n    payPeriodEffectiveDate: '',\n    payPeriodEffectiveType: '',\n\n    // values used when saving a new pay period\n    newPayPeriodType: null,\n    newDayOne: null,\n    newDayTwo: null,\n    payPeriodChangeDate: null,\n\n    // value change from int to string in current pay period\n    periodType: '',\n\n    // all of the pages dialogs\n    showGeneralDialog: false,\n    overtimeDialog: false,\n    overtimePreviewDialog: false,\n    payPeriodDialog: false,\n    customOptions: false,\n    customOptionsDialog: false,\n    showApprovalDialog: false,\n    showWarningCostCodesRequired: false, // enabling both requireCostCode and useProjectCostCodeScoping can cause login issues\n    showWarningCostCodesRequiredTrigger: null, // remember the property change that triggers the warning dialog\n    showSignInDialog: false,\n\n    disabledRequireProjectControl: Ember.computed.and('features.projectCostCodes', 'organization.{requireCostCode,useProjectCostCodeScoping}'),\n\n    // values shown on the time keeping homepage\n    overtimeValue: '',\n    payPeriodValue: '',\n\n    currentOvertimePeriod: null,\n    scheduledOvertimePeriod: null,\n\n    // allows them to add a new change if they dont already have a scheduled upcoming change\n    overtimeClickDisabled: false,\n    payPeriodClickDisabled: false,\n\n    // value called on init for the companys daily time flag\n    dailyTimeFlagValue: null,\n\n    // values for select menues rendered in the general settings\n    timeFlagOptions: '',\n    overtimeRules: '',\n\n    // min and max values for the timepicker\n    mindate: '',\n    maxdate: '',\n\n    // values for the pay period dialog\n    weeklySelected: false,\n    biWeeklySelected: false,\n    semiMonthlySelected: false,\n    monthlySelected: false,\n\n    // pay period values rendered for select menues in pay period dialog\n    payPeriodTypeMenu: '',\n    payPeriodWeekday: null,\n    payPeriodDay: '',\n\n    //custom overtime dialog\n    seventhDayOvertimeList: null,\n    saturdayOvertimeList: null,\n    sundayOvertimeList: null,\n\n    customOvertime: null,\n    saveLoadData: null,\n    booleanList: null,\n    setLists: null,\n    setOvertimeList: null,\n\n    //change to scheduled here and all cases where used\n    customOvertimeDate: null,\n\n    isLoading: false,\n    loadingMessage: (0, _utils.loc)('Loading...'),\n\n    cWeeklyOvertime: true,\n    cDailyOvertime: true,\n    cDailyDoubletime: true,\n    cSeventhDayOvertime: true,\n    cSeventhDayDoubletime: true,\n    cSaturdayMultiplier: true,\n    cSundayMultiplier: true,\n\n    enableDigitalSignatures: null,\n    maxDisclaimerLength: kMaxDisclaimerLength,\n    payPeriodDates: null,\n\n    defaultStartTime: null,\n    defaultEndTime: null,\n    safetySelectedArray: [],\n    accuracySelectedArray: [],\n    breakSelectedArray: [],\n\n    currentRoundingInterval: Ember.computed('organization.timeRoundingInterval', function () {\n      return this.get('organization.timeRoundingInterval') / 60 + (0, _utils.loc)(' Minutes');\n    }),\n\n    currentRoundingType: Ember.computed('organization.timeRoundingType', function () {\n      var type = this.get('organization.timeRoundingType');\n      var readableType = '';\n\n      if (type === 10) {\n        readableType = (0, _utils.loc)('Nearest');\n      } else if (type === 20) {\n        readableType = (0, _utils.loc)('Round Down');\n      } else if (type === 30) {\n        readableType = (0, _utils.loc)('Round Up');\n      } else {\n        readableType = (0, _utils.loc)('Employee Favorable');\n      }\n      return readableType;\n    }),\n\n    currentMinimumAppVersion: Ember.computed('organization.minimumAppVersion', function () {\n      var version = this.get('organization.minimumAppVersion');\n      if (version === '' || !version) {\n        return 'None';\n      } else {\n        return version;\n      }\n    }),\n\n    californiaBreaksDisabled: Ember.computed('organization.breakPolicy', function () {\n\n      return !this.get('organization.breakPolicy');\n    }),\n\n    breakPolicyObserver: Ember.observer('organization.breakPolicy', function () {\n      this.set('organization.breakPolicyCalifornia', this.get('organization.breakPolicy'));\n    }),\n\n    employeeExplanation: Ember.computed('', function () {\n      return (0, _utils.loc)('Customize whether employee time should be rounded up, down to the nearest interval, or always favor the employee. When the \"Employee Favorable\" type is set, the time will round down on clock in, round up on clock out and round breaks to the nearest time interval.');\n    }),\n\n    // some options under Time Card Approval are only available at the time the setting is enabled\n    // follow up visists will have\n    enableDigitalSignaturesThisSession: false,\n\n    init: function init() {\n      this._super();\n\n      this.set('payPeriodDates', []);\n      this.set('mindate', _utils.Time.date().add(5, 'days').startOf('day').unix());\n      this.set('maxdate', _utils.Time.date().add(6, 'months').startOf('day').unix());\n      this.set('payPeriodChangeDate', _utils.Time.date().add(5, 'days').startOf('day').unix());\n      this.set('overtimeChangeDate', _utils.Time.date().add(5, 'days').startOf('day').unix());\n      this.getClockInQuestions();\n\n      this.set('timeFlagOptions', [Ember.Object.create({ key: '0', value: (0, _utils.loc)('Off') }), Ember.Object.create({ key: '1', value: (0, _utils.loc)('1 hour') }), Ember.Object.create({ key: '2', value: (0, _utils.loc)('2 hours') }), Ember.Object.create({ key: '3', value: (0, _utils.loc)('3 hours') }), Ember.Object.create({ key: '4', value: (0, _utils.loc)('4 hours') }), Ember.Object.create({ key: '5', value: (0, _utils.loc)('5 hours') }), Ember.Object.create({ key: '6', value: (0, _utils.loc)('6 hours') }), Ember.Object.create({ key: '7', value: (0, _utils.loc)('7 hours') }), Ember.Object.create({ key: '8', value: (0, _utils.loc)('8 hours') }), Ember.Object.create({ key: '9', value: (0, _utils.loc)('9 hours') }), Ember.Object.create({ key: '10', value: (0, _utils.loc)('10 hours') }), Ember.Object.create({ key: '11', value: (0, _utils.loc)('11 hours') }), Ember.Object.create({ key: '12', value: (0, _utils.loc)('12 hours') })]);\n\n      this.set('minimumAppVersionOptions', [Ember.Object.create({ key: '2020.6', value: '2020.6' }), Ember.Object.create({ key: '2020.5', value: '2020.5' }), Ember.Object.create({ key: '2020.4', value: '2020.4' }), Ember.Object.create({ key: '2020.3', value: '2020.3' }), Ember.Object.create({ key: '2020.2', value: '2020.2' }), Ember.Object.create({ key: '2020.1', value: '2020.1' }), Ember.Object.create({ key: '2019.9', value: '2019.9' }), Ember.Object.create({ key: '2019.8', value: '2019.8' }), Ember.Object.create({ key: '2019.7', value: '2019.7' }), Ember.Object.create({ key: '2019.6', value: '2019.6' }), Ember.Object.create({ key: '2019.5', value: '2019.5' }), Ember.Object.create({ key: '5.18', value: '5.18' }), Ember.Object.create({ key: '5.17', value: '5.17' }), Ember.Object.create({ key: '5.16', value: '5.16' }), Ember.Object.create({ key: '5.15', value: '5.15' }), Ember.Object.create({ key: '5.14', value: '5.14' }), Ember.Object.create({ key: '5.13', value: '5.13' }), Ember.Object.create({ key: '5.12', value: '5.12' }), Ember.Object.create({ key: '_-NULL-_', value: 'None' })]);\n\n      this.set('payPeriodTypeMenu', [Ember.Object.create({ key: '10', value: (0, _utils.loc)('Weekly') }), Ember.Object.create({ key: '20', value: (0, _utils.loc)('Biweekly') }), Ember.Object.create({ key: '30', value: (0, _utils.loc)('Semimonthly') }), Ember.Object.create({ key: '40', value: (0, _utils.loc)('Monthly') })]);\n\n      this.set('seventhDayOvertimeList', [Ember.Object.create({ key: true, value: (0, _utils.loc)('Yes') }), Ember.Object.create({ key: false, value: (0, _utils.loc)('No') })]);\n\n      this.set('saturdayOvertimeList', [Ember.Object.create({ key: 1.5, value: '1.5' }), Ember.Object.create({ key: 2, value: '2.0' })]\n      // EmberObject.create({key: 2.5, value: '2.5'})\n      );\n\n      this.set('sundayOvertimeList', [Ember.Object.create({ key: 1.5, value: '1.5' }), Ember.Object.create({ key: 2, value: '2.0' })]\n      // EmberObject.create({key: 2.5, value: '2.5'})\n      );\n\n      this.set('payPeriodWeekday', [Ember.Object.create({ key: 0, value: (0, _utils.loc)('Sunday') }), Ember.Object.create({ key: 1, value: (0, _utils.loc)('Monday') }), Ember.Object.create({ key: 2, value: (0, _utils.loc)('Tuesday') }), Ember.Object.create({ key: 3, value: (0, _utils.loc)('Wednesday') }), Ember.Object.create({ key: 4, value: (0, _utils.loc)('Thursday') }), Ember.Object.create({ key: 5, value: (0, _utils.loc)('Friday') }), Ember.Object.create({ key: 6, value: (0, _utils.loc)('Saturday') })]);\n\n      this.set('payPeriodDay', this.generatePeriodDay());\n      this.set('payPeriodDayOne', this.generatePeriodDayOne());\n\n      this.set('overtimeRules', [Ember.Object.create({ key: 'standard', value: (0, _utils.loc)('Standard') }), Ember.Object.create({ key: 'california', value: (0, _utils.loc)('California') }), Ember.Object.create({ key: 'custom', value: (0, _utils.loc)('Custom') })]);\n\n      this.setBreakOptions();\n      this.getCompanyPayPeriod();\n      this.getCompanyOvertime();\n      this.setupSafetyDialog();\n\n      if (this.get('features.signatures')) {\n        this.initSignatureSettings();\n      }\n\n      this.initDefaultEntryTimes();\n      this.getCompanyMembers();\n      this.getCompanyOvertimeHistory();\n    },\n    initDefaultEntryTimes: function initDefaultEntryTimes() {\n      var convertDuration = function convertDuration(duration) {\n        return _utils.Time.date().startOf('day').add(duration, 'seconds').unix();\n      };\n\n      this.setProperties({\n        defaultStartTime: convertDuration(this.get('auth.organization.defaultStartTime')),\n        defaultEndTime: convertDuration(this.get('auth.organization.defaultEndTime')),\n        breakMinutes: this.get('auth.organization.breakTimeMinutes'),\n        breakHours: this.get('auth.organization.breakTimeHours')\n      });\n    },\n    generatePeriodDay: function generatePeriodDay() {\n      return this.generateKeyValueArray(31);\n    },\n    generatePeriodDayOne: function generatePeriodDayOne() {\n      return this.generateKeyValueArray(27);\n    },\n\n\n    /*\n      create array of ember objects in pattern:\n        [EmberObject.create({ key: '1', value: '1'}), EmberObject.create({ key: '2', value: '2'}), ...]\n          1. initialize empty N length array\n        2. populate array with string values 1-length\n        3. create ember objects\n     */\n    generateKeyValueArray: function generateKeyValueArray(length) {\n      return Array.from({ length: length }).map(function (_, i) {\n        return (i + 1).toString();\n      }).map(function (value) {\n        return Ember.Object.create({ key: value, value: value });\n      });\n    },\n\n\n    breakHoursLabel: Ember.computed('breakHours', function () {\n      return this.get('breakHours') + ' Hours';\n    }),\n\n    breakMinutesLabel: Ember.computed('breakMinutes', function () {\n      return this.get('breakMinutes') + ' Minutes';\n    }),\n\n    timeRoundingInterval: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n      var interval = 1;\n\n      if (this.get('auth.organization.timeRounding')) {\n        interval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n      }\n\n      return interval;\n    }),\n\n    // needs to be a computed in order to react to the organization's timeRoundingInterval settings changing\n    breakMinutesOptions: Ember.computed('timeRoundingInterval', function () {\n      var breakMinutesOptions = [];\n\n      for (var breakMinute = 0; breakMinute < 60; breakMinute += this.get('timeRoundingInterval')) {\n        breakMinutesOptions.push(Ember.Object.create({\n          key: breakMinute.toString(),\n          value: breakMinute + ' ' + (0, _utils.loc)('Minutes')\n        }));\n      }\n\n      return breakMinutesOptions;\n    }),\n\n    setBreakOptions: function setBreakOptions() {\n      var breakHoursOptions = Array.from({ length: 25 }).map(function (_, hour) {\n        return Ember.Object.create({\n          key: hour.toString(),\n          value: hour + ' ' + (0, _utils.loc)('Hours')\n        });\n      });\n\n      this.setProperties({\n        breakHoursOptions: breakHoursOptions\n      });\n    },\n    setupSafetyDialog: function setupSafetyDialog() {\n      // set safety message\n      if (!Ember.isEmpty(this.get('organization.safetySignatureMessage'))) {\n        this.set('safetyMessage', this.get('organization.safetySignatureMessage'));\n      } else {\n        this.set('safetyMessage', (0, _utils.loc)('If you were injured, please contact your supervisor. If your injury is serious, contact emergency services immediately.'));\n      }\n\n      // set accuracy message\n      if (!Ember.isEmpty(this.get('organization.timeAccuracyMessage'))) {\n        this.set('accuracyMessage', this.get('organization.timeAccuracyMessage'));\n      } else {\n        this.set('accuracyMessage', (0, _utils.loc)('If your time is not correct, please notify your supervisor as soon as possible to resolve the issue.'));\n      }\n\n      // set break message\n      if (!Ember.isEmpty(this.get('organization.breakPolicyMessage'))) {\n        this.set('breakPolicyMessage', this.get('organization.breakPolicyMessage'));\n      } else {\n        this.set('breakPolicyMessage', (0, _utils.loc)('You certify that you either took the required breaks or voluntarily gave them up according to company policy.'));\n      }\n\n      // set CA break message\n      this.set('breakPolicyMessageCali', (0, _utils.loc)('You certify that you took the required breaks or they were waived by mutual consent as outlined in the California break laws.'));\n    },\n    getClockInQuestions: function getClockInQuestions() {\n      var _this = this;\n\n      this.get('store').findAll('busy-sign-in-question').then(function (results) {\n        _this.set('questions', results);\n      });\n    },\n\n\n    /**\n     * gets the companies pay period settings and sets the page up accordingly\n     *\n     */\n    getCompanyPayPeriod: function getCompanyPayPeriod() {\n      var _this2 = this;\n\n      return this.get('store').query('organization-pay-period', { _desc: ['start_date'] }).then(function (model) {\n        if (!_this2.get('isDestroyed')) {\n          var currentModel = model.objectAt(0);\n          var scheduledModel = null;\n\n          if (!Ember.isNone(model.objectAt(1)) && currentModel.get('startDate') > _utils.Time.timestamp()) {\n            currentModel = model.objectAt(1);\n            scheduledModel = model.objectAt(0);\n          }\n\n          _this2.set('currentPayPeriod', currentModel);\n          _this2.set('scheduledPayPeriod', scheduledModel);\n        }\n\n        return model;\n      });\n    },\n\n\n    // gets the companies overtime settings and sets up the page accordingly\n    getCompanyOvertime: function getCompanyOvertime() {\n      var _this3 = this;\n\n      return this.get('store').query('organization-overtime-period', { _desc: ['start_time'], page_size: 2, deleted_on: '_-NULL-_' }).then(function (model) {\n        if (!_this3.get('isDestroyed')) {\n          var currentModel = model.objectAt(0);\n          var scheduledModel = null;\n          if (!Ember.isNone(model.objectAt(1)) && currentModel.get('startTime') > _utils.Time.timestamp()) {\n            currentModel = model.objectAt(1);\n            scheduledModel = model.objectAt(0);\n          }\n          _this3.set('currentOvertimePeriod', currentModel);\n          _this3.set('scheduledOvertimePeriod', scheduledModel);\n        }\n        return model;\n      });\n    },\n    getCompanyOvertimeHistory: function getCompanyOvertimeHistory() {\n      var _this4 = this;\n\n      this.get('store').findAll('organization-overtime-period', {}).then(function (results) {\n        _this4.set('overtimeHistory', results.sortBy('startTime').reverse());\n      });\n    },\n    setOverTimeObject: function setOverTimeObject(type) {\n      if (type === 'custom') {\n        this.set('customOptions', true);\n        this.set('newOvertimePeriod.weeklyOvertime', 40);\n        this.set('newOvertimePeriod.dailyOvertime', 8);\n        this.set('newOvertimePeriod.dailyDoubletime', 12);\n        this.set('newOvertimePeriod.seventhDayOvertime', true);\n        this.set('newOvertimePeriod.seventhDayDoubletime', 10);\n        this.set('newOvertimePeriod.saturdayMultiplier', 1.5);\n        this.set('newOvertimePeriod.sundayMultiplier', 1.5);\n      } else if (type === 'california') {\n        this.set('customOptions', false);\n        this.set('newOvertimePeriod.weeklyOvertime', 40);\n        this.set('newOvertimePeriod.dailyOvertime', 8);\n        this.set('newOvertimePeriod.dailyDoubletime', 12);\n        this.set('newOvertimePeriod.seventhDayOvertime', true);\n        this.set('newOvertimePeriod.seventhDayDoubletime', 8);\n        this.set('newOvertimePeriod.saturdayMultiplier', null);\n        this.set('newOvertimePeriod.sundayMultiplier', null);\n      } else if (type === 'standard') {\n        this.set('customOptions', false);\n        this.set('newOvertimePeriod.weeklyOvertime', 40);\n        this.set('newOvertimePeriod.dailyOvertime', null);\n        this.set('newOvertimePeriod.dailyDoubletime', null);\n        this.set('newOvertimePeriod.seventhDayOvertime', false);\n        this.set('newOvertimePeriod.seventhDayDoubletime', null);\n        this.set('newOvertimePeriod.saturdayMultiplier', null);\n        this.set('newOvertimePeriod.sundayMultiplier', null);\n      }\n    },\n\n\n    // saves the overtime period scheduled change\n    addOvertimePeriod: function addOvertimePeriod() {\n      var _this5 = this;\n\n      var current = this.get('currentOvertimePeriod');\n\n      if (!Ember.isNone('overtimeChangeDate')) {\n        this.get('store').createRecord('organization-overtime-period', {\n          organizationId: this.get('organization.id'),\n          startTime: _utils.Time.date(this.get('overtimeChangeDate')).startOf('day').unix(),\n          weeklyOvertime: current.get('weeklyOvertime'),\n          dailyOvertime: current.get('dailyOvertime'),\n          dailyDoubletime: current.get('dailyDoubletime'),\n          seventhDayOvertime: current.get('seventhDayOvertime'),\n          seventhDayDoubletime: current.get('seventhDayDoubletime'),\n          saturdayMultiplier: current.get('saturdayMultiplier'),\n          sundayMultiplier: current.get('sundayMultiplier')\n        }).save().then(function (ov) {\n          _this5.set('scheduledOvertimePeriod', ov);\n          return ov;\n        });\n      }\n      return Ember.RSVP.reject((0, _utils.loc)(\"Change date must be set\"));\n    },\n\n\n    // save the changes to the organizations general settings\n    saveOrganization: function saveOrganization() {\n      var _getProperties = this.getProperties('organization', 'safetyMessage', 'defaultStartTime', 'defaultEndTime', 'breakHours', 'breakMinutes', 'breakPolicyMessage'),\n          organization = _getProperties.organization,\n          safetyMessage = _getProperties.safetyMessage,\n          defaultStartTime = _getProperties.defaultStartTime,\n          defaultEndTime = _getProperties.defaultEndTime,\n          breakHours = _getProperties.breakHours,\n          breakMinutes = _getProperties.breakMinutes,\n          breakPolicyMessage = _getProperties.breakPolicyMessage;\n\n      var timeAccuracyMessage = this.get('accuracyMessage');\n      if (!Ember.isNone(this.get('newAccuracyMessage'))) {\n        timeAccuracyMessage = this.get('newAccuracyMessage');\n      }\n\n      // if Cost Codes are disabled, disable the dependant properties too\n      if (!this.get('organization.trackCostCode')) {\n        this.get('organization').setProperties({\n          requireCostCode: false,\n          useProjectCostCodeScoping: false\n        });\n      }\n\n      var getDuration = function getDuration(date) {\n        return _moment.default.duration({\n          hours: date.hours(),\n          minutes: date.minutes(),\n          seconds: 0\n        }).asSeconds();\n      };\n\n      defaultStartTime = getDuration(_utils.Time.date(defaultStartTime));\n      defaultEndTime = getDuration(_utils.Time.date(defaultEndTime));\n      var defaultBreakDuration = _moment.default.duration(breakHours + ':' + breakMinutes + ':00').asSeconds();\n\n      if (defaultStartTime === _moment.default.duration({ hours: 7 }).asSeconds()) {\n        defaultStartTime = '_-NULL-_';\n      }\n\n      if (defaultEndTime === _moment.default.duration({ hours: 16 }).asSeconds()) {\n        defaultEndTime = '_-NULL-_';\n      }\n\n      if (defaultBreakDuration === _moment.default.duration({ minutes: 30 }).asSeconds()) {\n        defaultBreakDuration = '_-NULL-_';\n      }\n\n      if (defaultEndTime < defaultStartTime) {\n        return Ember.RSVP.reject((0, _utils.loc)('Default End Time must be after the Default Start Time'));\n      }\n\n      organization.setProperties({\n        safetySignatureMessage: safetyMessage,\n        timeAccuracyMessage: timeAccuracyMessage,\n        defaultStartTime: defaultStartTime,\n        defaultEndTime: defaultEndTime,\n        defaultBreakDuration: defaultBreakDuration,\n        breakPolicyMessage: breakPolicyMessage\n      });\n\n      this.saveNotifcationSettings();\n\n      return organization.save().then(function () {\n        location.reload();\n      });\n    },\n    clockStringFormat: function clockStringFormat() {\n      var hours = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var minutes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var seconds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n      var paddedHours = this.zeroPad(hours, 2);\n      var paddedMinutes = this.zeroPad(minutes, 2);\n      var paddedSeconds = this.zeroPad(seconds, 2);\n\n      return paddedHours + ':' + paddedMinutes + ':' + paddedSeconds;\n    },\n    zeroPad: function zeroPad(val) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n      var zeroes = '0'.repeat(length);\n      var asInt = parseInt(val, 10);\n\n      return ('' + zeroes + asInt).substr(-length);\n    },\n    getDayOffset: function getDayOffset(timestamp, dayOfWeek, type) {\n      var offset = dayOfWeek;\n\n      if (type === 20) {\n        var curDay = _utils.Time.date(timestamp).day();\n        offset = (dayOfWeek - curDay + 7) % 7;\n      }\n\n      return offset;\n    },\n\n\n    // send the new pay period to the database and save it\n    addPayPeriod: function addPayPeriod(payPeriod) {\n      var _this6 = this;\n\n      return payPeriod.save().then(function (model) {\n        _this6.set('scheduledPayPeriod', model);\n        return true;\n      });\n    },\n    saveOvertime: function saveOvertime(overtime) {\n      var _this7 = this;\n\n      return overtime.save().then(function (model) {\n        _this7.set('scheduledOvertimePeriod', model);\n        return model;\n      });\n    },\n\n\n    /**\n     * delete the scheduled pay period change from the database\n     */\n    deleteScheduledPayPeriodChangeFunction: function deleteScheduledPayPeriodChangeFunction() {\n      var _this8 = this;\n\n      if (!Ember.isNone(this.get('scheduledPayPeriod'))) {\n        var model = this.get('scheduledPayPeriod');\n        return model.destroyRecord().then(function () {\n          _this8.set('scheduledPayPeriod', null);\n        });\n      }\n    },\n    deleteScheduledOvertimeChangeFunction: function deleteScheduledOvertimeChangeFunction() {\n      var _this9 = this;\n\n      (true && !(!Ember.isNone(this.get('scheduledOvertimePeriod'))) && Ember.assert(\"You must have a scheduledOvertimePeriod before you can delete it\", !Ember.isNone(this.get('scheduledOvertimePeriod'))));\n\n      return this.get('scheduledOvertimePeriod').destroyRecord().then(function (model) {\n        _this9.set('scheduledOvertimePeriod', null);\n        return model;\n      });\n    },\n    undoChanges: function undoChanges() {\n      var organization = this.get('organization');\n      if (organization.get('hasDirtyAttributes')) {\n        organization.rollbackAttributes();\n      }\n    },\n\n\n    seventhDayOvertimeListObserver: Ember.observer('newOvertimePeriod.seventhDayOvertime', function () {\n      var isActive = this.get('newOvertimePeriod.seventhDayOvertime');\n      var list = this.get('seventhDayOvertimeList');\n\n      list.forEach(function (item) {\n        if (item.get('key') === isActive) {\n          item.set('_selected', true);\n        } else {\n          item.set('_selected', false);\n        }\n      });\n    }),\n\n    saturdayOvertimeListObserver: Ember.observer('newOvertimePeriod.saturdayMultiplier', function () {\n      var isActive = this.get('newOvertimePeriod.saturdayMultiplier');\n      var list = this.get('saturdayOvertimeList');\n\n      list.forEach(function (item) {\n        if (item.get('key') === isActive) {\n          item.set('_selected', true);\n        } else {\n          item.set('_selected', false);\n        }\n      });\n    }),\n\n    sundayOvertimeListObserver: Ember.observer('newOvertimePeriod.sundayMultiplier', function () {\n      var isActive = this.get('newOvertimePeriod.sundayMultiplier');\n      var list = this.get('sundayOvertimeList');\n\n      list.forEach(function (item) {\n        if (item.get('key') === isActive) {\n          item.set('_selected', true);\n        } else {\n          item.set('_selected', false);\n        }\n      });\n    }),\n\n    toggleCustomOvertimeOption: Ember.observer('cWeeklyOvertime', 'cDailyOvertime', 'cDailyDoubletime', 'cSeventhDayOvertime', 'cSeventhDayDoubletime', 'cSaturdayMultiplier', 'cSundayMultiplier', function () {\n      this.set('newOvertimePeriod.weeklyOvertime', this.get('cWeeklyOvertime') ? this.get('newOvertimePeriod.weeklyOvertime') : null);\n      this.set('newOvertimePeriod.dailyOvertime', this.get('cDailyOvertime') ? this.get('newOvertimePeriod.dailyOvertime') : null);\n      this.set('newOvertimePeriod.dailyDoubletime', this.get('cDailyDoubletime') ? this.get('newOvertimePeriod.dailyDoubletime') : null);\n      this.set('newOvertimePeriod.seventhDayOvertime', this.get('cSeventhDayOvertime') ? this.get('newOvertimePeriod.seventhDayOvertime') : null);\n      this.set('newOvertimePeriod.seventhDayDoubletime', this.get('cSeventhDayDoubletime') ? this.get('newOvertimePeriod.seventhDayDoubletime') : null);\n      this.set('newOvertimePeriod.saturdayMultiplier', this.get('cSaturdayMultiplier') ? this.get('newOvertimePeriod.saturdayMultiplier') : null);\n      this.set('newOvertimePeriod.sundayMultiplier', this.get('cSundayMultiplier') ? this.get('newOvertimePeriod.sundayMultiplier') : null);\n    }),\n\n    isDisclaimerTooShort: Ember.computed.lt('organization.disclaimer.length', kMinDisclaimerLength),\n    isDisclaimerTooLong: Ember.computed.gt('organization.disclaimer.length', kMaxDisclaimerLength),\n    disclaimerHasError: Ember.computed.or('isDisclaimerTooLong', 'isDisclaimerTooShort'),\n    disclaimerErrorMessage: Ember.computed('disclaimerHasError', 'isDisclaimerTooShort', 'isDisclaimerTooLong', function () {\n      if (!this.get('disclaimerHasError')) {\n        return null;\n      }\n\n      if (this.get('isDisclaimerTooLong')) {\n        return (0, _utils.loc)('Time Card Disclaimer is too long');\n      } else if (this.get('isDisclaimerTooShort')) {\n        return (0, _utils.loc)('Time Card Disclaimer is required');\n      } else {\n        return (0, _utils.loc)('Time Card Disclaimer is not valid');\n      }\n    }),\n\n    enableDigitalSignaturesObserver: Ember.observer('enableDigitalSignatures', function () {\n      // when checked, set signatureDate to current pay period\n      if (this.get('enableDigitalSignatures')) {\n        this.set('enableDigitalSignaturesThisSession', true);\n        this.set('organization.signatureDate', this.get('payPeriodDates.firstObject.dates.start'));\n      }\n      // when unchecked, clear signatureDate\n      else {\n          this.set('organization.signatureDate', '_-NULL-_');\n          this.set('organization.lockOnSelfSignature', false);\n        }\n    }),\n\n    initSignatureSettings: function initSignatureSettings() {\n      this.set('enableDigitalSignaturesThisSession', false);\n      this.set('enableDigitalSignatures', this.get('organization.isSignaturesEnabled'));\n      this.setPayPeriodDateOptions();\n    },\n    setPayPeriodDateOptions: function setPayPeriodDateOptions() {\n      var now = _utils.Time.date().unix();\n\n      var currentDates = this.get('payPeriodService').getPayPeriod(now);\n      var previousDates = this.get('payPeriodService').getPayPeriod(currentDates.get('start') - 1);\n\n      var dateRange = function dateRange(d) {\n        return '(' + d.startDate.format('ll') + ' - ' + d.endDate.format('ll') + ')';\n      };\n\n      var payPeriodDates = [{\n        dates: currentDates,\n        label: (0, _utils.loc)('The current pay period') + ' ' + dateRange(currentDates)\n      }];\n\n      if (this.get('organization.createdOn') <= previousDates.get('end')) {\n        payPeriodDates.push({\n          dates: previousDates,\n          label: (0, _utils.loc)('The previous pay period') + ' ' + dateRange(previousDates)\n        });\n      }\n\n      this.set('payPeriodDates', payPeriodDates);\n    },\n    setCustomOvertime: function setCustomOvertime(overtime) {\n      if (!this.get('cWeeklyOvertime')) {\n        overtime.set('weeklyOvertime', '_-NULL-_');\n      }\n\n      if (!this.get('cDailyOvertime')) {\n        overtime.set('dailyOvertime', '_-NULL-_');\n      }\n\n      if (!this.get('cDailyDoubletime')) {\n        overtime.set('dailyDoubletime', '_-NULL-_');\n      }\n\n      if (!this.get('cSeventhDayOvertime')) {\n        overtime.set('seventhDayOvertime', false);\n      }\n\n      if (!this.get('cSeventhDayDoubletime')) {\n        overtime.set('seventhDayDoubletime', '_-NULL-_');\n      }\n\n      if (!this.get('cSaturdayMultiplier')) {\n        overtime.set('saturdayMultiplier', '_-NULL-_');\n      }\n\n      if (!this.get('cSundayMultiplier')) {\n        overtime.set('sundayMultiplier', '_-NULL-_');\n      }\n    },\n    getCompanyMembers: function getCompanyMembers() {\n      var _this10 = this;\n\n      this.get('store').findAll('member', { organization_id: this.get('organization.id'), archived_on: null }).then(function (results) {\n        _this10.set('members', results);\n        _this10.getNotificationPreferences();\n      });\n    },\n    getNotificationPreferences: function getNotificationPreferences() {\n      var _this11 = this;\n\n      this.get('store').findAll('organizationNotificationPreferences', {}).then(function (results) {\n        _this11.set('notificationPrefs', results);\n        _this11.setAccuracyPrefs();\n        _this11.setSafetyPrefs();\n        _this11.setBreakPrefs();\n        _this11.setSelectableMembers();\n      });\n    },\n    setAccuracyPrefs: function setAccuracyPrefs() {\n      var notificationPrefs = this.get('notificationPrefs');\n\n      var accuracyItems = notificationPrefs.filter(function (item) {\n\n        if (item.get('inaccurateTimeReport') > 0) {\n          return item;\n        }\n      });\n\n      this.setProperties({\n        accuracyPrefs: accuracyItems\n      });\n    },\n    setSafetyPrefs: function setSafetyPrefs() {\n      var notificationPrefs = this.get('notificationPrefs');\n\n      var safetyItems = notificationPrefs.filter(function (item) {\n        if (item.get('injuryReport') > 0) {\n          return item;\n        }\n      });\n\n      this.setProperties({\n        safetyPrefs: safetyItems\n      });\n    },\n    setBreakPrefs: function setBreakPrefs() {\n      var notificationPrefs = this.get('notificationPrefs');\n\n      var breakItems = notificationPrefs.filter(function (item) {\n        if (item.get('breakReport') > 0) {\n          return item;\n        }\n      });\n\n      this.setProperties({\n        breakPrefs: breakItems\n      });\n    },\n    setSelectableMembers: function setSelectableMembers() {\n      var _this12 = this;\n\n      var members = this.get('members');\n\n      var selectableMembers = members.filter(function (member) {\n        if (_this12.get('access').canTakeActionFor('manageTimeEntries', member)) {\n          return member;\n        }\n      });\n      this.set('members', selectableMembers.sortBy('firstName'));\n      this.setSelectedSafetyMembers();\n      this.setSelectedAccuracyMembers();\n      this.setSelectedBreakMembers();\n    },\n    setSelectedSafetyMembers: function setSelectedSafetyMembers() {\n      var members = this.get('members').sortBy('firstName');\n      var notificationPrefs = this.get('safetyPrefs');\n      var selectedMembers = [];\n\n      members.forEach(function (member) {\n        if (!Ember.isEmpty(notificationPrefs)) {\n          if (notificationPrefs.isAny('memberId', member.get('id'))) {\n            selectedMembers.push(member);\n            selectedMembers = selectedMembers.sortBy('lastName');\n            member.set('selectedSafety', true);\n          }\n        }\n      });\n\n      this.set('safetyLength', selectedMembers.length);\n      this.set('members', members.sortBy('firstName'));\n    },\n    setSelectedAccuracyMembers: function setSelectedAccuracyMembers() {\n      var members = this.get('members');\n      var notificationPrefs = this.get('accuracyPrefs');\n      var selectedMembers = [];\n\n      members.forEach(function (member) {\n        if (notificationPrefs.isAny('memberId', member.get('id'))) {\n          selectedMembers.push(member);\n          selectedMembers = selectedMembers.sortBy('lastName');\n          member.set('selectedAccuracy', true);\n        }\n      });\n\n      this.set('accuracyLength', selectedMembers.length);\n      this.set('members', members.sortBy('firstName'));\n    },\n    setSelectedBreakMembers: function setSelectedBreakMembers() {\n      var members = this.get('members');\n      var notificationPrefs = this.get('breakPrefs');\n      var selectedMembers = [];\n\n      members.forEach(function (member) {\n        if (notificationPrefs.isAny('memberId', member.get('id'))) {\n          selectedMembers.push(member);\n          selectedMembers = selectedMembers.sortBy('lastName');\n          member.set('selectedBreaks', true);\n        }\n      });\n\n      this.set('breaksLength', selectedMembers.length);\n      this.set('members', members.sortBy('firstName'));\n    },\n    saveNotifcationSettings: function saveNotifcationSettings() {\n      var _this13 = this;\n\n      var allMembers = this.get('members');\n      var notificationPrefs = this.get('notificationPrefs');\n\n      var newMembers = allMembers.filter(function (member) {\n        if (!notificationPrefs.isAny('memberId', member.get('id'))) {\n          return member;\n        }\n      });\n      var prefsToSave = [];\n\n      allMembers.forEach(function (member) {\n\n        notificationPrefs.forEach(function (pref) {\n\n          if (pref.get('memberId') === member.get('id')) {\n\n            var injuryReport = member.get('selectedSafety');\n            var inaccurateTimeReport = member.get('selectedAccuracy');\n            var breakReport = member.get('selectedBreaks');\n\n            pref.setProperties({\n              inaccurateTimeReport: inaccurateTimeReport ? 1 : 0,\n              injuryReport: injuryReport ? 1 : 0,\n              breakReport: breakReport ? 1 : 0\n            });\n\n            if (!prefsToSave.isAny('memberId', member.get('id')) && pref.get('hasDirtyAttributes')) {\n              prefsToSave.push(pref);\n            }\n          }\n        });\n      });\n\n      newMembers.forEach(function (member) {\n        var inaccurateTimeReport = member.get('selectedAccuracy') ? 1 : 0;\n        var injuryReport = member.get('selectedSafety') ? 1 : 0;\n        var breakReport = member.get('selectedBreaks') ? 1 : 0;\n\n        var newPref = _this13.get('store').createRecord('organization-notification-preferences', {\n          memberId: member.get('id'),\n          inaccurateTimeReport: inaccurateTimeReport,\n          injuryReport: injuryReport,\n          breakReport: breakReport\n        });\n\n        if (!prefsToSave.isAny('memberId', member.get('id'))) {\n          prefsToSave.push(newPref);\n        }\n      });\n\n      prefsToSave.forEach(function (pref) {\n        pref.save();\n      });\n    },\n\n\n    selectedSafetyMembersLength: Ember.computed('members.@each.selectedSafety', function () {\n      if (!Ember.isNone(this.get('members'))) {\n        var selectedMembers = this.get('members').filter(function (member) {\n          if (member.get('selectedSafety')) {\n            return member;\n          }\n        });\n\n        return selectedMembers.length;\n      }\n    }),\n\n    safetyMembersSelected: Ember.computed('selectedSafetyMembersLength', function () {\n      var length = this.get('selectedSafetyMembersLength');\n      if (length > 0) {\n        return true;\n      }\n      return false;\n    }),\n\n    selectedAccuracyMembersLength: Ember.computed('members.@each.selectedAccuracy', function () {\n      if (!Ember.isNone(this.get('members'))) {\n        var selectedMembers = this.get('members').filter(function (member) {\n          if (member.get('selectedAccuracy')) {\n            return member;\n          }\n        });\n\n        return selectedMembers.length;\n      }\n    }),\n\n    accuracyMembersSelected: Ember.computed('selectedAccuracyMembersLength', function () {\n      var length = this.get('selectedAccuracyMembersLength');\n      if (length > 0) {\n        return true;\n      }\n      return false;\n    }),\n\n    selectedBreaksMembersLength: Ember.computed('members.@each.selectedBreaks', function () {\n      if (!Ember.isNone(this.get('members'))) {\n        var selectedMembers = this.get('members').filter(function (member) {\n          if (member.get('selectedBreaks')) {\n            return member;\n          }\n        });\n\n        return selectedMembers.length;\n      }\n    }),\n\n    breaksMembersSelected: Ember.computed('selectedBreaksMembersLength', function () {\n      var length = this.get('selectedBreaksMembersLength');\n      if (length > 0) {\n        return true;\n      }\n      return false;\n    }),\n\n    handleOvertimeError: function handleOvertimeError(err) {\n      var errStr = (0, _utils.loc)('Something went wrong, Please try again later.');\n      if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object') {\n        var code = Ember.get(err, 'errors.firstObject.code');\n\n        if (code === 801) {\n          errStr = (0, _utils.loc)(\"You can't save an overtime period for more than 90 days ago\");\n        } else if (code === 898) {\n          errStr = (0, _utils.loc)('You must select a later date!');\n        } else if (code === 903) {\n          errStr = (0, _utils.loc)('7th Day Overtime needs to be less hours than Daily Doubletime.');\n        } else if (code === 902) {\n          errStr = (0, _utils.loc)('Daily Overtime needs to be less hours than Daily Doubletime.');\n        } else if (code === 904) {\n          errStr = (0, _utils.loc)(\"The provided Saturday Multiplier is not a valid option\");\n        } else if (code === 905) {\n          errStr = (0, _utils.loc)(\"The provided Sunday Multiplier is not a valid option\");\n        }\n      } else if (typeof err === 'string') {\n        errStr = err;\n      }\n\n      return Ember.RSVP.reject(errStr);\n    },\n\n\n    actions: {\n\n      // calls the function that will save there general settings\n      saveGeneralSettings: function saveGeneralSettings() {\n        return this.saveOrganization();\n      },\n      openGeneralDialog: function openGeneralDialog() {\n        this.set('showGeneralDialog', true);\n      },\n      closeGeneralDialog: function closeGeneralDialog() {\n        this.set('showGeneralDialog', false);\n        this.undoChanges();\n      },\n\n\n      //open overtime dialog\n      currentOvertimeDialog: function currentOvertimeDialog() {\n        this.set('overtimeDialog', true);\n      },\n\n\n      //close overtime dialog\n      cancelOvertimePeriod: function cancelOvertimePeriod() {\n        this.set('overtimeDialog', false);\n      },\n\n\n      // save new overtime period\n      saveOvertimePeriod: function saveOvertimePeriod() {\n        this.set('overtimeNotificationBox', true);\n        this.set('overtimeClickDisabled', true);\n        return this.addOvertimePeriod().then(function () {\n          return true;\n        });\n      },\n\n\n      // handles select menu action, if custom is chosen button is displayed so they may edit there custom overtime rules\n      selectOvertimeAction: function selectOvertimeAction(item) {\n        this.setOverTimeObject(item.get('key'));\n      },\n\n\n      // deletes the scheduled overtime change and allows them to create a new one\n      deleteScheduledOvertimeChange: function deleteScheduledOvertimeChange() {\n        this.deleteScheduledOvertimeChangeFunction();\n        this.set('overtimeNotificationBox', false);\n        this.set('overtimeClickDisabled', false);\n      },\n\n\n      //open pay period dialog\n      currentPayPeriodDialog: function currentPayPeriodDialog() {\n        this.set('payPeriodDialog', true);\n      },\n\n\n      //close pay period dialog and reset the values\n      cancelPayPeriod: function cancelPayPeriod() {\n        this.set('payPeriodDialog', false);\n      },\n\n\n      // save new pay period\n      savePayPeriod: function savePayPeriod() {\n        var _this14 = this;\n\n        this.set('payPeriodNotificationBox', true);\n        this.set('payPeriodClickDisabled', true);\n\n        if (!Ember.isNone(this.get('newPayPeriodType')) && !Ember.isNone(this.get('newDayOne'))) {\n          var startTime = _utils.Time.date(this.get('payPeriodChangeDate')).startOf('day').unix();\n          // var offset = Time.timezone(startTime);\n\n          var payPeriodType = this.get('newPayPeriodType');\n          var dayOne = this.getDayOffset(startTime, this.get('newDayOne'), payPeriodType);\n\n          var payPeriod = this.get('store').createRecord('organization-pay-period', {\n            organizationId: this.get('organization.id'),\n            payPeriodType: payPeriodType,\n            dayOne: dayOne,\n            dayTwo: this.get('newDayTwo'),\n            startDate: startTime\n          });\n\n          return this.addPayPeriod(payPeriod).catch(function (err) {\n            return _this14.handlePayPeriodError(err);\n          });\n        } else {\n          return new Ember.RSVP.reject('You must select a pay period type and a pay period beginning work day');\n        }\n      },\n      handlePayPeriodError: function handlePayPeriodError(err) {\n        var errStr = (0, _utils.loc)('Something went wrong, Please try again later.');\n        if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object') {\n          if (err.errors[0] === 898) {\n            errStr = (0, _utils.loc)('You must select a later date!');\n          }\n        } else if (typeof err === 'string') {\n          errStr = err;\n        }\n        return Ember.RSVP.reject(errStr);\n      },\n\n\n      // deletes the scheduled pay period change and allows them to create a new change\n      deleteScheduledPayPeriodChange: function deleteScheduledPayPeriodChange() {\n        this.deleteScheduledPayPeriodChangeFunction();\n        this.set('payPeriodNotificationBox', false);\n        this.set('payPeriodClickDisabled', false);\n      },\n      showCustomOptionsDialog: function showCustomOptionsDialog() {\n        var overtime = this.get('store').createRecord('organization-overtime-period', {\n          organizationId: this.get('organization.id'),\n          weeklyOvertime: 40,\n          dailyOvertime: null,\n          dailyDoubletime: null,\n          seventhDayOvertime: false,\n          seventhDayDoubletime: null,\n          saturdayMultiplier: null,\n          sundayMultiplier: null\n        });\n\n        this.set('newOvertimePeriod', overtime);\n        this.set('customOptionsDialog', true);\n      },\n      hideCustomOptionsDialog: function hideCustomOptionsDialog() {\n        this.set('customOptionsDialog', false);\n        this.set('newOvertimePeriod', null);\n        this.get('overtimeRules').forEach(function (item) {\n          return item.set('_selected', false);\n        });\n      },\n      editCustomRules: function editCustomRules() {\n        this.set('customOptions', true);\n      },\n      cancelCustomRules: function cancelCustomRules() {\n        this.set('customOptions', false);\n      },\n\n\n      // handles the daily time flag select menu action and sets the organizations time flag to the value selected\n      selectItemAction: function selectItemAction(item) {\n        this.set('organization.totalTimeFlag', item.key);\n      },\n\n\n      //in the current pay period dialog, depending on what is selected it displays specific options and sets values\n      selectItem: function selectItem(item) {\n        if (item.get('key') === '10') {\n          this.set('weeklySelected', true);\n          this.set('biWeeklySelected', false);\n          this.set('semiMonthlySelected', false);\n          this.set('monthlySelected', false);\n          this.set('newPayPeriodType', 10);\n        }\n\n        if (item.get('key') === '20') {\n          this.set('biWeeklySelected', true);\n          this.set('weeklySelected', false);\n          this.set('semiMonthlySelected', false);\n          this.set('monthlySelected', false);\n          this.set('newPayPeriodType', 20);\n        }\n\n        if (item.get('key') === '30') {\n          this.set('semiMonthlySelected', true);\n          this.set('weeklySelected', false);\n          this.set('biWeeklySelected', false);\n          this.set('monthlySelected', false);\n          this.set('newPayPeriodType', 30);\n        }\n\n        if (item.get('key') === '40') {\n          this.set('monthlySelected', true);\n          this.set('weeklySelected', false);\n          this.set('biWeeklySelected', false);\n          this.set('semiMonthlySelected', false);\n          this.set('newPayPeriodType', 40);\n        }\n      },\n\n\n      // select day of the month selected for day_two\n      dayOfMonthSelectedTwo: function dayOfMonthSelectedTwo(item) {\n        this.set('newDayTwo', item.key);\n      },\n\n\n      // select day of the week selected for day_one\n      daySelected: function daySelected(item) {\n        this.set('newDayOne', item.key);\n      },\n      saveCustomOvertime: function saveCustomOvertime() {\n        var _this15 = this;\n\n        var overtime = this.get('newOvertimePeriod');\n        overtime.set('startTime', _utils.Time.date(this.get('overtimeChangeDate')).startOf('day').unix());\n        this.setCustomOvertime(overtime);\n        return this.saveOvertime(overtime).catch(function (err) {\n          return _this15.handleOvertimeError(err);\n        });\n      },\n      sundayMultiplier: function sundayMultiplier(item) {\n        this.set('newOvertimePeriod.sundayMultiplier', item.key);\n      },\n      saturdayMultiplier: function saturdayMultiplier(item) {\n        this.set('newOvertimePeriod.saturdayMultiplier', item.key);\n      },\n      seventhDayOvertime: function seventhDayOvertime(item) {\n        this.set('newOvertimePeriod.seventhDayOvertime', item.key);\n      },\n\n\n      /**\n       * Time Card Approval dialog - Save button clicked\n       *\n       * @event saveApprovalSettings\n       * @param {dialog}\n       */\n      saveApprovalSettings: function saveApprovalSettings() {\n        if (this.get('features.signatures') && this.get('disclaimerHasError')) {\n          return Ember.RSVP.reject(this.get('disclaimerErrorMessage'));\n        } else {\n          return this.saveOrganization();\n        }\n      },\n\n\n      /**\n       * Triggered \"Time Card Approval\" \"Change\" button is clicked\n       *\n       * @event openApprovalDialog\n       */\n      openApprovalDialog: function openApprovalDialog() {\n        this.set('showApprovalDialog', true);\n      },\n\n\n      /**\n       * Time Card Approval dialog - cancel or close button clicked\n       *\n       * @event cancelApprovalDialog\n       */\n      cancelApprovalDialog: function cancelApprovalDialog() {\n        this.undoChanges();\n        this.initSignatureSettings();\n        this.set('showApprovalDialog', false);\n      },\n      openTimeRoundingDialog: function openTimeRoundingDialog() {\n        this.set('timeRoundingDialog', true);\n        if (Ember.isNone(this.get('organization.timeRoundingInterval')) || this.get('organization.timeRoundingInterval') === 0) {\n          this.set('organization.timeRoundingInterval', 15 * 60);\n        }if (Ember.isNone(this.get('organization.timeRoundingType'))) {\n          this.set('organization.timeRoundingType', 10);\n        }\n      },\n      closeTimeRoundingDialog: function closeTimeRoundingDialog() {\n        this.set('timeRoundingDialog', false);\n        this.get('organization').rollbackAttributes();\n      },\n      setRoundingInterval: function setRoundingInterval(value) {\n        this.set('organization.timeRoundingInterval', parseInt(value) * 60);\n      },\n      setRoundingType: function setRoundingType(value) {\n        this.set('organization.timeRoundingType', parseInt(value));\n      },\n      openAppVersionDialog: function openAppVersionDialog() {\n        this.set('showMinimumAppDialog', true);\n      },\n      closeMinimumAppDialog: function closeMinimumAppDialog() {\n        this.set('showMinimumAppDialog', false);\n        this.get('organization').rollbackAttributes();\n      },\n      setMinimumAppVersion: function setMinimumAppVersion(value) {\n        this.set('organization.minimumAppVersion', value.get('key'));\n      },\n      setSignatureDate: function setSignatureDate(value) {\n        this.set('organization.signatureDate', value);\n      },\n      showOvertimePreviewDialog: function showOvertimePreviewDialog() {\n        this.set('overtimePreviewDialog', true);\n      },\n      hideOvertimePreviewDialog: function hideOvertimePreviewDialog() {\n        this.set('overtimePreviewDialog', false);\n      },\n      openSafetyDialog: function openSafetyDialog() {\n        this.set('showSafetyDialog', true);\n      },\n      closeSafetyDialog: function closeSafetyDialog(rollback) {\n        this.set('showSafetyDialog', false);\n        this.get('organization').rollbackAttributes();\n\n        if (rollback) {\n          this.get('safetySelectedArray').forEach(function (member) {\n            member.set('selectedSafety', false);\n          });\n          this.get('accuracySelectedArray').forEach(function (member) {\n            member.set('selectedAccuracy', false);\n          });\n          this.get('breakSelectedArray').forEach(function (member) {\n            member.set('selectedBreaks', false);\n          });\n        }\n        this.setProperties({\n          safetySelectedArray: [],\n          accuracySelectedArray: [],\n          breakSelectedArray: [],\n          safetyAllSelected: false,\n          accuracyAllSelected: false,\n          breaksAllSelected: false\n        });\n\n        if (this.get('safetyMessage') !== this.get('organization.safetySignatureMessage')) {\n          this.set('organization.safetySignatureMessage', null);\n        }\n      },\n      openDefaultTimeDialog: function openDefaultTimeDialog() {\n        this.set('showDefaultTimeDialog', true);\n      },\n      closeDefaultTimeDialog: function closeDefaultTimeDialog() {\n        this.set('showDefaultTimeDialog', false);\n        this.get('organization').rollbackAttributes();\n        this.initDefaultEntryTimes();\n      },\n      changeBreakHours: function changeBreakHours(item) {\n        this.set('breakHours', item.key);\n      },\n      changeBreakMinutes: function changeBreakMinutes(item) {\n        this.set('breakMinutes', item.key);\n      },\n\n\n      /*\n       * Project Specific Cost Codes\n       *\n       */\n\n      // When onChangeTrackCostCode is disabled, also disable requireCostCode and useProjectCostCodeScoping\n      // this removes the disabled status on requireProject and will allow the clock-in prevention warning to trigger when those options are re-checked\n      onChangeTrackCostCode: function onChangeTrackCostCode(newValue) {\n        if (!newValue) {\n          this.get('organization').setProperties({\n            requireCostCode: false,\n            useProjectCostCodeScoping: false\n          });\n        }\n      },\n\n\n      // when requireCostCode is enabled and useProjectCostCodeScoping is already enabled, warn the user that it could prevent clock-ins\n      onChangeRequireCostCode: function onChangeRequireCostCode(newValue) {\n        // Logger.info('onChangeRequireCostCode', newValue);\n\n        if (newValue && this.get('organization.useProjectCostCodeScoping')) {\n          this.send('openWarningCostCodesRequired', 'requireCostCode');\n        }\n      },\n\n\n      // when useProjectCostCodeScoping is enabled and requireCostCode is already enabled, warn the user that it could prevent clock-ins\n      onChangeUseProjectCostCodeScoping: function onChangeUseProjectCostCodeScoping(newValue) {\n        // Logger.info('onChangeUseProjectCostCodeScoping', newValue);\n\n        if (newValue && this.get('organization.requireCostCode')) {\n          this.send('openWarningCostCodesRequired', 'useProjectCostCodeScoping');\n        }\n      },\n      openWarningCostCodesRequired: function openWarningCostCodesRequired(trigger) {\n        // Logger.info('openWarningCostCodesRequired');\n        this.setProperties({\n          showWarningCostCodesRequired: true,\n          showWarningCostCodesRequiredTrigger: trigger\n        });\n      },\n      closeWarningCostCodesRequired: function closeWarningCostCodesRequired() {\n        // Logger.info('closeWarningCostCodesRequired');\n\n        this.set('showWarningCostCodesRequired', false);\n      },\n      disableUseProjectCostCodeScoping: function disableUseProjectCostCodeScoping(trigger) {\n        // Logger.info('disableUseProjectCostCodeScoping', trigger);\n\n        this.get('organization').set(trigger, false);\n        this.set('seenWarningCostCodesRequiredOnce', false);\n        this.send('closeWarningCostCodesRequired');\n      },\n      confirmUseProjectCostCodeScoping: function confirmUseProjectCostCodeScoping(trigger) {\n        var _get$setProperties;\n\n        // Logger.info('confirmUseProjectCostCodeScoping', trigger);\n\n        this.get('organization').setProperties((_get$setProperties = {}, _defineProperty(_get$setProperties, trigger, true), _defineProperty(_get$setProperties, 'requireProject', true), _get$setProperties));\n\n        this.send('closeWarningCostCodesRequired');\n      },\n      openTimeAccuracySelectDialog: function openTimeAccuracySelectDialog() {\n        this.set('showTimeAccuracySelectDialog', true);\n      },\n      closeAndRollbackTimeAccuracySelectDialog: function closeAndRollbackTimeAccuracySelectDialog() {\n        this.get('accuracySelectedArray').forEach(function (member) {\n\n          member.set('selectedAccuracy', member.get('accuracyOriginalValue'));\n        });\n        this.set('accuracySelectedArray', []);\n        this.set('accuracyAllSelected', false);\n        this.set('showTimeAccuracySelectDialog', false);\n      },\n      closeTimeAccuracySelectDialog: function closeTimeAccuracySelectDialog() {\n        this.set('showTimeAccuracySelectDialog', false);\n      },\n      openSafetySelectDialog: function openSafetySelectDialog() {\n        this.set('showSafetySelectDialog', true);\n      },\n      closeAndRollbackSafetySelectDialog: function closeAndRollbackSafetySelectDialog() {\n\n        this.get('safetySelectedArray').forEach(function (member) {\n          member.set('selectedSafety', member.get('safetyOriginalValue'));\n        });\n\n        this.set('safetySelectedArray', []);\n        this.set('safetyAllSelected', false);\n        this.set('showSafetySelectDialog', false);\n      },\n      closeSafetySelectDialog: function closeSafetySelectDialog() {\n        this.set('showSafetySelectDialog', false);\n      },\n      openBreaksSelectDialog: function openBreaksSelectDialog() {\n        this.set('showBreaksSelectDialog', true);\n      },\n      closeAndRollbackBreaksSelectDialog: function closeAndRollbackBreaksSelectDialog() {\n        this.get('breakSelectedArray').forEach(function (member) {\n          member.set('selectedBreaks', member.get('breaksOriginalValue'));\n        });\n\n        this.setProperties({\n          breakSelectedArray: [],\n          breaksAllSelected: false,\n          showBreaksSelectDialog: false\n        });\n      },\n      closeBreaksSelectDialog: function closeBreaksSelectDialog() {\n        this.set('showBreaksSelectDialog', false);\n      },\n      addMemberToSafetyList: function addMemberToSafetyList(member) {\n\n        member.set('safetyOriginalValue', !member.get('selectedSafety'));\n\n        var array = this.get('safetySelectedArray');\n\n        if (array.indexOf(member) === -1) {\n          array.push(member);\n        }\n      },\n      addMemberToAccuracyList: function addMemberToAccuracyList(member) {\n\n        member.set('accuracyOriginalValue', !member.get('selectedAccuracy'));\n\n        var array = this.get('accuracySelectedArray');\n\n        if (array.indexOf(member) === -1) {\n          array.push(member);\n        }\n      },\n      addMemberToBreakList: function addMemberToBreakList(member) {\n\n        member.set('breaksOriginalValue', !member.get('selectedBreak'));\n\n        var array = this.get('breakSelectedArray');\n\n        if (array.indexOf(member) === -1) {\n          array.push(member);\n        }\n      },\n      selectAllSafetyMembers: function selectAllSafetyMembers() {\n        var array = this.get('safetySelectedArray');\n        if (array.length !== this.get('members.length')) {\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedSafety\", true);\n            array.push(member);\n          });\n        } else {\n          this.set('safetySelectedArray', []);\n\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedSafety\", false);\n          });\n        }\n      },\n      selectAllAccuracyMembers: function selectAllAccuracyMembers() {\n        var array = this.get('accuracySelectedArray');\n        if (array.length !== this.get('members.length')) {\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedAccuracy\", true);\n            array.push(member);\n          });\n        } else {\n          this.set('accuracySelectedArray', []);\n\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedAccuracy\", false);\n          });\n        }\n      },\n      selectAllBreakMembers: function selectAllBreakMembers() {\n        var array = this.get('breakSelectedArray');\n        if (array.length !== this.get('members.length')) {\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedBreaks\", true);\n            array.push(member);\n          });\n        } else {\n          this.set('breakSelectedArray', []);\n\n          this.get('members').forEach(function (member) {\n            member.set(\"selectedBreaks\", false);\n          });\n        }\n      },\n      openOvertimeHistoryDialog: function openOvertimeHistoryDialog() {\n        this.set('showOvertimeHistoryDialog', true);\n      },\n      closeOvertimeHistoryDialog: function closeOvertimeHistoryDialog() {\n        this.set('showOvertimeHistoryDialog', false);\n      },\n      showOtDetails: function showOtDetails(overtime) {\n        this.setProperties({\n          showOtDetailsDialog: true,\n          selectedOvertimePeriod: overtime\n        });\n      },\n      closeOtDetails: function closeOtDetails() {\n        this.setProperties({\n          showOtDetailsDialog: false,\n          selectedOvertimePeriod: null\n        });\n      },\n      viewScheduledOvertimeChange: function viewScheduledOvertimeChange() {\n        this.setProperties({\n          showScheduledDetailsDialog: true\n        });\n      },\n      closeScheduledOvertimeChange: function closeScheduledOvertimeChange() {\n        this.setProperties({\n          showScheduledDetailsDialog: false\n        });\n      },\n      openSignInDialog: function openSignInDialog() {\n        this.setProperties({\n          showSignInDialog: true\n        });\n      },\n      closeSignInDialog: function closeSignInDialog() {\n        this.setProperties({\n          showSignInDialog: false\n        });\n      },\n      showCovidQuestions: function showCovidQuestions() {\n        this.setProperties({\n          covidQuestionsVisible: true\n        });\n      },\n      hideCovidQuestions: function hideCovidQuestions() {\n        this.setProperties({\n          covidQuestionsVisible: false\n        });\n      }\n    }\n  });\n});","define('busy-app/components/cost-codes/import-cost-codes', ['exports', 'busy-app/utils/cost-code-csv-import', '@busy-web/utils'], function (exports, _costCodeCsvImport, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: [\"c-cost-codes-import-cost-codes\"],\n\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\tmodel: null,\n\t\timportData: null,\n\n\t\tshowImportError: false,\n\t\tshowPreview: false,\n\n\t\timportProgress: (0, _utils.loc)('Saving'),\n\n\t\timportErrorMessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setupButtons();\n\t\t},\n\t\tsetupButtons: function setupButtons() {\n\t\t\tthis.set('buttonInfo1', [{ action: this.get('actions.closeImportAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo2', [{ action: this.get('actions.openPreviewAction'), color: 'blue', text: (0, _utils.loc)('Next'), target: this }, { action: this.get('actions.closeMappingAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo3', [{ action: this.get('actions.saveAction'), color: 'blue', text: (0, _utils.loc)('Save'), target: this }, { action: this.get('actions.closePreviewAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfoError', [{ action: this.get('actions.closeErrorAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t},\n\t\tcloseImport: function closeImport() {\n\t\t\tthis.set('showImportError', false);\n\t\t\tthis.set('showPreview', false);\n\t\t\tthis.set('showMapping', false);\n\t\t},\n\t\tshowError: function showError(err) {\n\t\t\tthis.set('importErrorMessage', err);\n\t\t\tthis.set('showImportError', true);\n\t\t},\n\t\tcheckRequiredFields: function checkRequiredFields() {\n\t\t\tvar importData = this.get('importData');\n\t\t\tvar noDescriptionCount = 0;\n\t\t\tvar noCostCodeCount = 0;\n\n\t\t\timportData._rawDataRows.forEach(function (item) {\n\t\t\t\tif (Ember.isEmpty(item[importData.headerMap.title])) {\n\t\t\t\t\tnoDescriptionCount += 1;\n\t\t\t\t}\n\n\t\t\t\tif (Ember.isEmpty(item[importData.headerMap.costCode])) {\n\t\t\t\t\tnoCostCodeCount += 1;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (noCostCodeCount > 0) {\n\t\t\t\tvar message = (0, _utils.loc)('Cost code number is required for all imported cost codes. There were %@ missing cost code numbers. Please check your uploaded file and try again.', [noCostCodeCount]);\n\t\t\t\tthis.showError(message);\n\t\t\t} else if (noDescriptionCount > 0) {\n\t\t\t\tvar _message = (0, _utils.loc)('Description is required for all imported cost codes. There were %@ missing descriptions. Please check your uploaded file and try again.', [noDescriptionCount]);\n\t\t\t\tthis.showError(_message);\n\t\t\t} else {\n\t\t\t\tthis.set('showPreview', true);\n\t\t\t\timportData.triggerParse();\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tthis.closeImport();\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tcloseErrorAction: function closeErrorAction() {\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t\tthis.set('showImportError', false);\n\t\t\t},\n\t\t\topenPreviewAction: function openPreviewAction() {\n\t\t\t\tthis.checkRequiredFields();\n\t\t\t},\n\t\t\tclosePreviewAction: function closePreviewAction() {\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t},\n\t\t\topenMappingAction: function openMappingAction() {\n\t\t\t\tthis.set('showMapping', true);\n\t\t\t},\n\t\t\tcloseMappingAction: function closeMappingAction() {\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t},\n\t\t\tselectListItem: function selectListItem(item) {\n\t\t\t\tthis.get('importData').setHeaderByListType(item);\n\t\t\t},\n\t\t\tuploadAction: function uploadAction(data) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tdata = data[0];\n\t\t\t\tvar owner = Ember.getOwner(this);\n\t\t\t\tvar csv = _costCodeCsvImport.default.create(owner.ownerInjection());\n\n\t\t\t\tcsv.set('showInsurance', this.get('features.insuranceClasses'));\n\n\t\t\t\tcsv.on('onFinishFileParse', function () {\n\t\t\t\t\t_this.set('showMapping', true);\n\t\t\t\t});\n\n\t\t\t\tcsv.on('progress', function (left, total) {\n\t\t\t\t\tif (total > 5) {\n\t\t\t\t\t\t_this.set('importProgress', (0, _utils.loc)('Importing cost codes %@%', [Math.ceil((total - left) / total * 100)]));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tcsv.on('complete', function () {\n\t\t\t\t\t_this.sendAction('onComplete', _this.get('model'));\n\t\t\t\t});\n\n\t\t\t\tcsv.on('error', function (err) {\n\t\t\t\t\t_this.showError(err);\n\t\t\t\t});\n\n\t\t\t\tcsv.run(data);\n\t\t\t\tthis.set('importData', csv);\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar data = this.get('importData');\n\t\t\t\treturn data.saveModel().then(function (res) {\n\t\t\t\t\t_this2.set('model', data.get('model'));\n\t\t\t\t\treturn (0, _utils.loc)(\"Saved %@ cost codes successfully!\", [res.length]);\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this2.closeImport();\n\t\t\t\t});\n\t\t\t},\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\tthis.get('analytics').openIntercom();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/cost-codes/splash-screen', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    auth: Ember.inject.service(),\n\n    isSaving: false,\n    scopeToProject: true,\n    requireCostCode: false,\n\n    actions: {\n      onClose: function onClose() {\n        this.sendAction('onClose');\n      },\n      onEnable: function onEnable() {\n        var _this = this;\n\n        var org = Ember.isNone(this.get('auth.organization.content')) ? this.get('auth.organization') : this.get('auth.organization.content');\n\n        org.setProperties({\n          trackCostCode: true,\n          useProjectCostCodeScoping: this.get('scopeToProject'),\n          requireCostCode: this.get('requireCostCode')\n        });\n\n        this.set('isSaving', true);\n        return org.save().then(function () {\n          if (!_this.get('isDestroyed')) {\n            _this.set('isSaving', false);\n            _this.send('onClose');\n            _this.sendAction('onEnabled');\n          }\n        });\n      },\n      onLearnMore: function onLearnMore() {\n        window.open('http://support.busybusy.com/faq/what-are-busybusy-cost-codes');\n      }\n    }\n  });\n});","define('busy-app/components/d-button-split', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['d-button-group'],\n\t\telementType: 'span',\n\n\t\tclassModifiers: 'blue',\n\n\t\tprimaryText: null,\n\t\tprimaryIcon: null,\n\t\tprimaryAction: null,\n\n\t\tselectAction: null,\n\t\tselectOptions: null,\n\n\t\tactions: {\n\t\t\tonPrimaryAction: function onPrimaryAction() {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\t_logger.default.info.apply(_logger.default, [this, 'onPrimaryAction'].concat(_toConsumableArray(args)));\n\n\t\t\t\treturn Ember.get(this, 'primaryAction').apply(undefined, _toConsumableArray(args));\n\t\t\t},\n\t\t\tonSelectAction: function onSelectAction(item) {\n\t\t\t\t_logger.default.info(this, 'onSelectAction', item);\n\n\t\t\t\treturn Ember.get(this, 'selectAction')(item);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/d-button', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['d-button'],\n\t\tclassNameBindings: ['isActive:active', 'isSelected:selected'],\n\t\tattributeBindings: ['tabindex'],\n\n\t\ttagName: 'a',\n\n\t\tisActive: false,\n\t\tisSelected: false,\n\t\tdisabled: false,\n\t\ttabindex: null,\n\t\tname: '',\n\t\tidx: 0,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setDisabled(this.get('disabled'));\n\t\t},\n\t\tsetDisabled: function setDisabled(disabled) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isEmpty(this.$())) {\n\t\t\t\tEmber.run.next(null, function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.$().attr('disabled', disabled);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tEmber.run.next(null, function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.setDisabled(disabled);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tcheckDisable: Ember.observer('disabled', function () {\n\t\t\tthis.setDisabled(this.get('disabled'));\n\t\t}),\n\n\t\tsubmitAction: function submitAction() {\n\t\t\tthis.sendAction('onSubmit', this.get('idx'));\n\t\t},\n\t\tclick: function click() {\n\t\t\tthis.submitAction();\n\t\t},\n\t\tkeyPress: function keyPress(e) {\n\t\t\tif (e.which === 13) {\n\t\t\t\tthis.submitAction();\n\t\t\t}\n\t\t},\n\t\tfocusIn: function focusIn(e) {\n\t\t\tthis.sendAction('onFocusIn', e);\n\t\t},\n\t\tfocusOut: function focusOut(e) {\n\t\t\tthis.sendAction('onFocusOut', e);\n\t\t},\n\t\tkeyUp: function keyUp(e) {\n\t\t\tthis.sendAction('onKeyUp', e);\n\t\t},\n\t\tkeyDown: function keyDown(e) {\n\t\t\tthis.sendAction('onKeyDown', e);\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/button-bar', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  exports.default = Ember.Component.extend({\n    classNames: ['c-dialogs-button-bar'],\n\n    /**\n     * List of button information including required params like action and text\n     *\n     * @public\n     * @property buttonInfo\n     * @type array\n     */\n    buttonInfo: null,\n\n    /**\n     * internal button list\n     *\n     * @private\n     * @property _buttonInfo\n     * @type array\n     */\n    _buttonInfo: null,\n\n    // private properties below whould not be set in template\n    timeout: null,\n\n    isShowing: false,\n    isSaving: false,\n    isSaved: false,\n    isError: false,\n\n    savingMessageText: (0, _utils.loc)('Saving'),\n    savedMessageText: (0, _utils.loc)('Successfully Saved'),\n    errorMessageText: (0, _utils.loc)('An error occurred! Please try again later.'),\n\n    confirmText: (0, _utils.loc)(\"Save\"),\n    confirmCancelText: (0, _utils.loc)(\"Cancel\"),\n    confirmReasonText: (0, _utils.loc)(\"Are you sure you want to take this action?\"),\n    confirmHeader: (0, _utils.loc)(\"Warning: Are you sure you want to Continue?\"),\n    showConfirm: false,\n\n    /**\n     * initialize the component\n     *\n     * @private\n     * @method init\n     */\n    init: function init() {\n      this._super();\n\n      if (!Ember.isNone(this.get('targetParent'))) {\n        this.set('targetParent.buttonBar', this);\n      }\n\n      // set the button list to an empty array if nothing was passed in\n      if (Ember.isNone(this.get('buttonInfo'))) {\n        this.set('buttonInfo', []);\n      }\n\n      // make sure the button list is an array\n      _utils.Assert.test(\"Component: <button-bar> requires [buttonInfo] to be an array of objects.\", Ember.isArray(this.get('buttonInfo')));\n\n      // setup the internal button list\n      this.setupButtons();\n    },\n\n\n    /**\n     * parse the button info list and build it with optional params included\n     * make sure the objects in the list are all ember objects\n     *\n     * @private\n     * @method setupButtons\n     */\n    setupButtons: function setupButtons() {\n      var list = [];\n      this.get('buttonInfo').forEach(function (item) {\n        _utils.Assert.test(\"Component: <button-bar> requires [buttonInfo] to be an array of objects.\", !Ember.isNone(item) && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object');\n\n        // wrap item in EmberObject\n        if (Ember.typeOf(item) !== 'instance') {\n          item = Ember.Object.create(item);\n        }\n\n        // throw error if missing required params\n        _utils.Assert.test(\"Component: <button-bar> missing required field [action:function] in buttonInfo.\", !Ember.isNone(item.get('action')) && typeof item.get('action') === 'function');\n        _utils.Assert.test(\"Component: <button-bar> missing required field [text:string] in buttonInfo.\", !Ember.isEmpty(item.get('text')) && typeof item.get('text') === 'string');\n\n        // set defaults and force optional params to be correct type.\n        var color = item.getWithDefault('color', 'grey');\n        _utils.Assert.test(\"Component: <button-bar> optional field [color:string] must be the following options -> blue red grey\", color === 'blue' || color === 'red' || color === 'grey' || color === 'gray');\n        item.set('color', color);\n\n        var left = item.getWithDefault('left', false);\n        _utils.Assert.test(\"Component: <button-bar> optional field [left:boolean] in buttonInfo. must be true or false\", typeof left === 'boolean');\n        item.set('left', left);\n\n        var disabled = item.getWithDefault('disabled', false);\n        _utils.Assert.test(\"Component: <button-bar> optional field [disabled:boolean] in buttonInfo. must be true or false\", typeof disabled === 'boolean');\n        item.set('disabled', disabled);\n\n        var confirm = item.getWithDefault('confirm', false);\n        _utils.Assert.test(\"Component: <button-bar> optional field [confirm:boolean] in buttonInfo. must be true or false\", typeof confirm === 'boolean');\n        item.set('confirm', confirm);\n\n        var closeAfter = item.getWithDefault('closeAfter', false);\n        _utils.Assert.test(\"Component: <button-bar> optional field [closeAfter:boolean] in buttonInfo. must be true or false\", typeof closeAfter === 'boolean');\n        item.set('closeAfter', closeAfter);\n\n        // add object to new list\n        list.pushObject(item);\n      });\n\n      var view = this;\n      Ember.$(document).find('.button-bar').on('keyup', function (evt) {\n        if (evt.which === 13) {\n          var button = list.findBy('keyAction', true);\n          if (Ember.isNone(button)) {\n            button = list.get('firstObject');\n          }\n\n          if (!Ember.isNone(button)) {\n            view.invokeActionItem(button.get('text'));\n          }\n        }\n      });\n\n      // set internal button list\n      this.set('_buttonInfo', list);\n    },\n\n\n    /**\n     * Shows the pop up saving box\n     *\n     * @public\n     * @method showSavingBox\n     */\n    showSavingBox: function showSavingBox() {\n      var timeout = 0;\n      if (!this.get('isShowing')) {\n        // set isShowing flag to true\n        this.set('isShowing', true);\n\n        // set the timeout to a 200 milliseconds\n        timeout = 200;\n      } else if (!Ember.isNone(this.get('timeout'))) {\n        // get the stored timeout\n        var timer = this.get('timeout');\n\n        // calculate the time spent since the timeout was stored\n        var timeSpent = new Date().valueOf() - timer.timestamp;\n\n        // get the time left for this timeout\n        timeout = timer.duration - timeSpent;\n      }\n      return this.promise(timeout);\n    },\n\n\n    /**\n     * Hides the pop up saving message box\n     *\n     * @public\n     * @method hideSavingBox\n     */\n    hideSavingBox: function hideSavingBox() {\n      var _this = this;\n\n      var timeout = 0;\n      if (this.get('isError') || this.get('isSaved')) {\n        // reset the error flag\n        this.set('isError', false);\n\n        // set the isSaved flag to off\n        this.set('isSaved', false);\n\n        // set a timeout of 300 milliseconds\n        timeout = 300;\n      } else if (!Ember.isNone(this.get('timeout'))) {\n        // get the stored timeout\n        var timer = this.get('timeout');\n\n        // calculate the time left in the timeout\n        var timeSpent = new Date().valueOf() - timer.timestamp;\n\n        // get the time left for the timeout\n        timeout = timer.duration - timeSpent;\n      }\n\n      return this.promise(timeout).then(function () {\n        _this.set('isShowing', false);\n\n        return true;\n      });\n    },\n    promise: function promise(duration) {\n      var _this2 = this;\n\n      var timestamp = new Date().valueOf();\n\n      if (this.get('timeout')) {\n        window.clearTimeout(this.get('timeout').timeout);\n      }\n\n      return new Ember.RSVP.Promise(function (resolve) {\n        var timer = window.setTimeout(function () {\n          if (!_this2.get('isDestroyed')) {\n            Ember.run(null, resolve, true);\n          }\n        }, duration);\n\n        if (!_this2.get('isDestroyed')) {\n          _this2.set('timeout', { timeout: timer, timestamp: timestamp, duration: duration });\n        }\n      });\n    },\n\n\n    /**\n     * shows a saving message box. this box will not hide until\n     * either success or error message calls have been made\n     *\n     * @public\n     * @param message {string} the message to show when saving (not required)\n     */\n    showSavingMessage: function showSavingMessage(message) {\n      return this._savingMessage(message);\n    },\n\n\n    /**\n     * private save message call for internal class use\n     *\n     * @public\n     * @param message {string} the message to show when saving\n     * @param complete {function} the callback function called when the timeout has finished\n     */\n    _savingMessage: function _savingMessage(message) {\n      var _this3 = this;\n\n      message = !Ember.isEmpty(message) ? message : this.get('savingMessageText');\n\n      this.set('savingMessageText', message);\n\n      this.set('isSaved', false);\n      this.set('isError', false);\n\n      return this.showSavingBox().then(function () {\n        _this3.set('isSaving', true);\n\n        return true;\n      });\n    },\n\n\n    /**\n     * show the message success box\n     *\n     * @private\n     * @param message {string} the success message (not required)\n     * @param timeout {int} the time in milliseconds for the message to display (not required) default 2000 miliseconds\n     */\n    showSavedMessage: function showSavedMessage(message, timeout) {\n      var _this4 = this;\n\n      return this.showSavingBox().then(function () {\n        return _this4._successMessage(message, timeout);\n      });\n    },\n\n\n    /**\n     * private success message call\n     *\n     * @private\n     */\n    _successMessage: function _successMessage(message, timeout) {\n      var _this5 = this;\n\n      message = !Ember.isEmpty(message) ? message : this.get('savedMessageText');\n      timeout = !Ember.isNone(timeout) ? timeout : 2000;\n\n      // clear window timeout\n      if (this.get('timeout')) {\n        window.clearTimeout(this.get('timeout'));\n      }\n\n      // set saved message\n      this.set('savedMessageText', message);\n\n      // hide saving and error and show saved\n      this.set('isSaving', false);\n      this.set('isSaved', true);\n      this.set('isError', false);\n\n      return this.promise(timeout).then(function () {\n        return _this5.hideSavingBox();\n      });\n    },\n\n\n    /**\n     * shows the message error box\n     *\n     * @public\n     * @param message {string} the success message (not required)\n     * @param timeout {int} the time in milliseconds for the message to display (not required) default 4000 miliseconds\n     */\n    showErrorMessage: function showErrorMessage(message, timeout) {\n      var _this6 = this;\n\n      return this.showSavingBox().then(function () {\n        return _this6._errorMessage(message, timeout);\n      });\n    },\n\n\n    /**\n     * private error message call\n     *\n     * @private\n     */\n    _errorMessage: function _errorMessage(message, timeout) {\n      var _this7 = this;\n\n      message = !Ember.isEmpty(message) ? message : this.get('errorMessageText');\n      timeout = !Ember.isNone(timeout) ? timeout : 4000;\n\n      // set error message\n      this.set('errorMessageText', message);\n\n      // hide saving and saved and show error\n      this.set('isSaving', false);\n      this.set('isSaved', false);\n      this.set('isError', true);\n\n      return this.promise(timeout).then(function () {\n        return _this7.hideSavingBox();\n      });\n    },\n\n\n    /**\n     * clear out the current saving status message\n     *\n     * @public\n     * @method clearStatus\n     */\n    clearStatus: function clearStatus() {\n      if (!this.get('isDestroyed')) {\n        // clear window timeout\n        if (this.get('timeout')) {\n          window.clearTimeout(this.get('timeout').timeout);\n          this.set('timeout', null);\n        }\n\n        // hide saving saved and erorr\n        this.set('isSaving', false);\n        this.set('isSaved', false);\n        this.set('isError', false);\n      }\n    },\n\n\n    /**\n     * dispatch calls to the correct action then handles showing and hiding status information\n     *\n     * @public\n     * @method dispatchCall\n     * @param item {object}\n     * @param forceSave {boolean}\n     * @return EmberPromise\n     */\n    dispatchCall: function dispatchCall(item, forceSave) {\n      var _this8 = this;\n\n      if (!forceSave && item.get('disabled')) {\n        return Ember.RSVP.resolve();\n      }\n\n      // disable buttons\n      this.get('_buttonInfo').forEach(function (item) {\n        return item.set('disabled', true);\n      });\n\n      // clear current save status\n      this.clearStatus();\n\n      // show saving messge\n      this.showSavingMessage(item.get('savingMessage'));\n\n      // override close actions on error\n      var isError = false;\n\n      // call the action handler\n      return this.callAction(item, forceSave).then(function (message) {\n        // response can return false to disable saved message.\n        if (message === false) {\n          // clear status and hide saving box\n          _this8.clearStatus();\n          _this8.hideSavingBox();\n          return false;\n        } else {\n          // show saved message\n          return _this8.showSavedMessage(message);\n        }\n      }).catch(function (err) {\n        isError = true;\n        if (err instanceof Error) {\n          throw err;\n        }\n        // show saved message\n        return _this8.showErrorMessage(err);\n      }).finally(function () {\n        // enable buttons\n        _this8.get('_buttonInfo').forEach(function (item) {\n          return item.set('disabled', false);\n        });\n\n        // send the done action if closeAfter is true\n        if (item.get('closeAfter') && !isError) {\n          _this8.sendAction('onDone');\n        }\n      });\n    },\n\n\n    /**\n     * Checks if the call returns a promise and handles success and error\n     *\n     * @public\n     * @method callAction\n     * @param item {object}\n     * @param forceSave {boolean}\n     * @return EmberPromise\n     */\n    callAction: function callAction(item) {\n      var _this9 = this;\n\n      var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      _utils.Assert.isObject(item);\n\n      return new Ember.RSVP.Promise(function (resolve, reject) {\n        var method = item.get('action'); // get method for action\n        var target = item.get('target') || null; // get context target for this\n        var promise = method.call(target, _this9, forceSave); // invoke action method\n\n        // if the method returns a promise then show status\n        if (!Ember.isNone(promise) && typeof promise.then === 'function') {\n          // listen for promise to return\n          promise.then(function (result) {\n            // if the result returned a string then\n            // use it as the message for success.\n            var message = void 0;\n            if (typeof result === 'string') {\n              message = result;\n            } else if (result === false) {\n              message = false;\n            }\n            // resolve success\n            Ember.run(null, resolve, message);\n          }).catch(function (err) {\n            // get error message\n            var message = _this9.handleError(item, err);\n            if (message !== undefined) {\n              // reject promise if the error message was not\n              // an override error\n              Ember.run(null, reject, message);\n            }\n          });\n        } else {\n          // no promise was found so resolve the current promise\n          Ember.run(null, resolve, false);\n        }\n      });\n    },\n\n\n    /**\n     * @private\n     * @method handleError\n     * @param error\n     */\n    handleError: function handleError(item, error) {\n      // throw the error if error is and Error instance\n      if (error instanceof Error) {\n        throw new Ember.Error(error);\n      }\n\n      // if the error is an object then check for override ability\n      if ((typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object') {\n        if (error.canOverride) {\n          // show the override confirm dialog\n          this.showConfirmDialog(item, error.message);\n\n          // return undefined so the caller knows the override is pending\n          return undefined;\n        } else if (error.message) {\n          // return the error message\n          return error.message;\n        }\n      }\n\n      // if error is a string the return it\n      if (typeof error === 'string') {\n        return error;\n      }\n\n      // return an empty string for all other errors\n      return null;\n    },\n\n\n    /**\n     * Show the confirm dialog\n     *\n     * @public\n     * @method showConfirmDialog\n     * @param item {object}\n     * @param message {string} optional message for dialog\n     */\n    showConfirmDialog: function showConfirmDialog(item, message) {\n      _utils.Assert.isObject(item);\n      message = !Ember.isNone(message) ? message : item.getWithDefault('confirmReasonText', this.get('confirmReasonText'));\n\n      this.set('_confirmItem', item);\n      this.set('confirmText', item.getWithDefault('confirmText', this.get('confirmText')));\n      this.set('confirmCancelText', item.getWithDefault('confirmCancelText', this.get('confirmCancelText')));\n      this.set('confirmReasonText', message);\n      this.set('confirmHeader', item.getWithDefault('confirmHeader', this.get('confirmHeader')));\n      this.set('confirmAlertHigh', item.getWithDefault('confirmAlertHigh', false));\n      this.set('showConfirm', true);\n    },\n\n\n    /**\n     * Hides the confirm dialog\n     *\n     * @public\n     * @method hideConfirmDialog\n     */\n    hideConfirmDialog: function hideConfirmDialog() {\n      this.set('showConfirm', false);\n      this.get('_buttonInfo').forEach(function (item) {\n        return item.set('disabled', false);\n      });\n      this.set('_confirmItem', null);\n    },\n    invokeActionItem: function invokeActionItem(textName) {\n      var item = this.get('_buttonInfo').findBy('text', textName);\n      if (!Ember.isNone(item)) {\n        this.send('invokeAction', item);\n      }\n    },\n    willDestroyElement: function willDestroyElement() {\n      this._super.apply(this, arguments);\n      Ember.$(document).off('keyup.button-bar');\n    },\n\n\n    actions: {\n      invokeAction: function invokeAction(item) {\n        if (item.get('confirm')) {\n          this.showConfirmDialog(item);\n        } else {\n          this.dispatchCall(item);\n        }\n      },\n      confirmAction: function confirmAction() {\n        var item = this.get('_confirmItem');\n        this.dispatchCall(item, true);\n        this.hideConfirmDialog();\n      },\n      cancelConfirmAction: function cancelConfirmAction() {\n        this.hideConfirmDialog();\n        this.hideSavingBox();\n      }\n    }\n  });\n});","define('busy-app/components/dialogs/confirm-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    confirmHeader: (0, _utils.loc)(\"Warning: Are you sure you want to Continue?\"),\n    confirmMessage: (0, _utils.loc)(\"Are you sure you want to take this action?\"),\n\n    confirmText: (0, _utils.loc)(\"Save\"),\n    cancelText: (0, _utils.loc)(\"Cancel\"),\n\n    alertHigh: false,\n    hideConfirmButton: false,\n\n    actions: {\n      confirm: function confirm() {\n        this.sendAction('onConfirm');\n      },\n      cancel: function cancel() {\n        this.sendAction('onCancel');\n      }\n    }\n  });\n});","define('busy-app/components/dialogs/content-view', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['c-dialogs-content-view'],\n\n    analytics: Ember.inject.service('analytics'),\n\n    /** public property list */\n    saveText: (0, _utils.loc)('Save'),\n    cancelText: (0, _utils.loc)('Cancel'),\n    deleteText: (0, _utils.loc)('Delete'),\n    saveCloseText: (0, _utils.loc)('Save and Close'),\n    removeText: (0, _utils.loc)('Remove'),\n    savingMessage: (0, _utils.loc)('Saving'),\n    saveColor: 'blue',\n    hideFooter: false,\n    saveDisabled: false,\n\n    headerTitle: '',\n\n    closeOnSave: true,\n    confirmOnDelete: true,\n    confirmOnSave: false,\n    showCancelButton: true,\n    hideSaveAndClose: false,\n\n    /** private property list */\n    hasFooter: false,\n    canClose: false,\n    isDisabled: false,\n\n    showDeleteOverlay: false,\n    showConfirmSaveOverlay: false,\n\n    confirmSaveOverlay: false,\n    confirmReasonText: '',\n    confirmCallback: null,\n    disablePadding: false,\n\n    buttonInfo: null,\n\n    /**\n     * inititalizes the dialog\n     *\n     * @private\n     * @method init\n     * @returns {void}\n     */\n    init: function init() {\n      this._super();\n\n      if (!Ember.isNone(this.get('headerTitle'))) {\n        this.get('analytics').addPageView(this.get('headerTitle') + ' ' + 'dialog');\n      }\n\n      if (Ember.isNone(this.get('buttonInfo'))) {\n        this.setupButtons();\n      }\n    },\n\n\n    showFooter: Ember.computed('buttonInfo.length', 'hideFooter', function () {\n      if (this.get('buttonInfo.length') && !this.get('hideFooter')) {\n        return true;\n      }\n      return false;\n    }),\n\n    setupButtons: function setupButtons() {\n      var disabled = false;\n\n      var list = [];\n      if (!Ember.isNone(this.get('onSaveConfirmError'))) {\n\n        list.push({ action: this.get('onSaveConfirmError'), color: this.get('saveColor'), text: this.get('saveText'), closeAfter: this.get('closeOnSave'), confirmOnError: true, disabled: disabled });\n\n        if (!this.get('closeOnSave') && !this.get('hideSaveAndClose')) {\n          list.push({ action: this.get('onSaveConfirmError'), color: this.get('saveColor'), text: this.get('saveCloseText'), closeAfter: true, confirmOnError: true });\n        }\n      }\n\n      if (!Ember.isNone(this.get('onSave'))) {\n        list.push({ action: this.get('onSave'), color: this.get('saveColor'), text: this.get('saveText'), closeAfter: this.get('closeOnSave') });\n\n        if (!this.get('closeOnSave') && !this.get('hideSaveAndClose')) {\n          list.push({ action: this.get('onSave'), color: this.get('saveColor'), text: this.get('saveCloseText'), closeAfter: true });\n        }\n      }\n\n      if (!Ember.isNone(this.get('onDelete'))) {\n        list.push({\n          action: this.get('onDelete'), color: 'red', text: this.get('deleteText'), left: true, closeAfter: true,\n          confirm: this.get('confirmOnDelete'), confirmText: (0, _utils.loc)('Delete'), confirmReasonText: (0, _utils.loc)('Are you sure you want to delete this?')\n        });\n      }\n\n      if (!Ember.isNone(this.get('onRemove'))) {\n        list.push({\n          action: this.get('onRemove'), color: 'red', text: this.get('removeText'), left: true, closeAfter: true,\n          confirm: true, confirmText: (0, _utils.loc)('Remove'), confirmReasonText: (0, _utils.loc)('Are you sure you want to remove this?')\n        });\n      }\n      if (!Ember.isNone(this.get('onCancel')) && this.get('showCancelButton')) {\n\n        list.push({ action: this.get('onCancel'), color: 'grey', text: this.get('cancelText') });\n      }\n\n      this.set('buttonInfo', list);\n    },\n\n\n    /**\n     * Shows a saving message at the\n     * bottom of the dialog\n     *\n     * @public\n     * @method showSavingMessage\n     * @param message {string} The save message text\n     * @param timeout {number} The time in miliseconds to show the message for\n     * @returns {EmberPromise}\n     */\n    showSavingMessage: function showSavingMessage(message, timeout) {\n      return this.get('busySave').showSavingMessage(message, timeout);\n    },\n\n\n    /**\n     * Shows an error message at the\n     * bottom of the dialog\n     *\n     * @public\n     * @method showErrorMessage\n     * @param message {string} The error message text\n     * @param timeout {number} The time in miliseconds to show the message for\n     * @returns {EmberPromise}\n     */\n    showErrorMessage: function showErrorMessage(message, timeout) {\n      return this.get('busySave').showErrorMessage(message, timeout);\n    },\n\n\n    /**\n     * Shows a saved message at the\n     * bottom of the dialog and fires the close dialog event.\n     *\n     * @public\n     * @method showSavedMessage\n     * @param message {string} The saved message text\n     * @param timeout {number} The time in miliseconds to show the message for\n     * @returns {EmberPromise}\n     */\n    showSavedMessage: function showSavedMessage(message, timeout) {\n      return this.get('busySave').showSavedMessage(message, timeout);\n    },\n    invokeAction: function invokeAction(type) {\n      // make sure a string is passed in\n      _utils.Assert.isString(type);\n\n      // get the method\n      var func = this.get(type);\n      _utils.Assert.test('Component: [content-view] actions must be passed with (action \"someAction\")', typeof func === 'function');\n\n      // invoke func method\n      var promise = func();\n\n      // if the method returns a promise then show status\n      if (!Ember.isNone(promise) && typeof promise.then === 'function') {\n        // listen for promise to return\n        return promise;\n      } else {\n        return Ember.RSVP.resolve();\n      }\n    },\n\n\n    actions: {\n      doneAction: function doneAction() {\n        if (!Ember.isNone(this.get('onClose'))) {\n          this.invokeAction('onClose');\n        } else if (!Ember.isNone(this.get('onCancel'))) {\n          this.invokeAction('onCancel');\n        }\n      },\n      saveAction: function saveAction(actionName) {\n        if (!Ember.isNone(this.get('buttonBar')) && !Ember.isEmpty(actionName)) {\n          this.get('buttonBar').invokeActionItem(actionName);\n        }\n      },\n      closeAction: function closeAction() {\n        this.sendAction('onCancel');\n      },\n      cancelAction: function cancelAction() {\n        this.sendAction('onCancel');\n      },\n      saveCloseAction: function saveCloseAction() {\n        var _this = this;\n\n        var busySave = this.get('busySave');\n\n        if (!busySave.get('isDisabled')) {\n          busySave.set('canClose', true);\n        }\n\n        busySave.showConfirm = function (message, callback) {\n          _this.set('confirmSaveOverlay', true);\n          _this.set('confirmReasonText', message);\n          _this.set('confirmCallback', function () {\n            callback.call(null, true, busySave);\n          });\n        };\n\n        //this.sendAction('onSave', busySave);\n      },\n      deleteAction: function deleteAction() {\n        if (this.get('confirmOnDelete')) {\n          this.set('showDeleteOverlay', true);\n        } else {\n          this.send('confirmDelete');\n        }\n      },\n      confirmSave: function confirmSave() {\n        if (this.get('confirmCallback')) {\n          this.get('confirmCallback').call(null);\n        } else {\n          this.sendAction('onConfirmSave', this.get('busySave'));\n        }\n        this.set('confirmSaveOverlay', false);\n      },\n      cancelConfirmSave: function cancelConfirmSave() {\n        this.get('busySave').showErrorMessage('', 0);\n        this.set('confirmSaveOverlay', false);\n      },\n      confirmDelete: function confirmDelete() {\n        this.set('showDeleteOverlay', false);\n        this.sendAction('onDelete', this.get('busySave'));\n      },\n      cancelDelete: function cancelDelete() {\n        this.set('showDeleteOverlay', false);\n      },\n      backAction: function backAction() {\n        this.sendAction('onBack');\n      }\n    }\n  });\n});","define('busy-app/components/dialogs/delete-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tdeleteType: '',\n\t\tdeleteText: (0, _utils.loc)(\"Delete\"),\n\n\t\tdeleteMessage: Ember.computed('deleteText', 'deleteType', function () {\n\t\t\tvar type = this.get('deleteType');\n\t\t\tif (Ember.isEmpty(type)) {\n\t\t\t\ttype = 'this';\n\t\t\t}\n\t\t\treturn (0, _utils.loc)(\"Are you sure you want to %@ %@?\", [this.get('deleteText').toLowerCase(), type]);\n\t\t}),\n\n\t\tactions: {\n\t\t\tconfirm: function confirm() {\n\t\t\t\tthis.sendAction('onConfirm');\n\t\t\t},\n\t\t\tcancel: function cancel() {\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/error/gps-location-required', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c--dialog--gps-location-required'],\n\n\t\tonClose: null,\n\n\t\tactions: {\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\n\t});\n});","define('busy-app/components/dialogs/fs-modal-dialog', ['exports', 'busy-app/components/dialogs/modal-dialog'], function (exports, _modalDialog) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _modalDialog.default.extend({\n\t\tclassName: 'c-dialogs-fs-modal-dialog',\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\n\t\t\t// reverse the history and close the dialog\n\t\t\t// when the back button is clicked\n\t\t\tvar _this = this;\n\t\t\twindow.onpopstate = function () {\n\t\t\t\twindow.history.forward();\n\t\t\t\t_this.send('closeAction');\n\t\t\t};\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tthis._super();\n\t\t\twindow.onpopstate = null;\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/instructions-container', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-dialogs-instructions-container'],\n\n\t\theaderTitle: null,\n\t\tsaveText: null,\n\t\tcancelText: null,\n\n\t\tactions: {\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tonSave: function onSave() {\n\t\t\t\tthis.sendAction('onSave');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/instructions-header', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-dialogs-instructions-header'],\n\t\ttagName: 'header',\n\n\t\tlogo: null,\n\t\ttitle: null\n\t});\n});","define('busy-app/components/dialogs/instructions-section', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['c-dialogs-instructions-section'],\n\n    tagName: 'section',\n\n    title: ''\n  });\n});","define('busy-app/components/dialogs/modal-dialog', ['exports', '@busy-web/components/mixins/close-on-escape'], function (exports, _closeOnEscape) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar kDefaults = {\n\t\ttranslucentOverlay: true,\n\t\trenderInPlace: false,\n\t\tclickOutsideToClose: false\n\t};\n\n\t/**\n  * `Component\\Dialogs\\ModalDialog`\n  *\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend(_closeOnEscape.default, {\n\t\tclassName: 'c-dialogs-modal-dialog',\n\n\t\t_classNames: Ember.computed('basic', function () {\n\t\t\tvar classNames = this.get('className');\n\t\t\tif (this.get('basic')) {\n\t\t\t\tclassNames += ' basic';\n\t\t\t}\n\n\t\t\tif (this.get('small')) {\n\t\t\t\tclassNames += ' small';\n\t\t\t}\n\n\t\t\tif (this.get('fixed')) {\n\t\t\t\tclassNames += ' fixed';\n\t\t\t}\n\n\t\t\treturn classNames;\n\t\t}),\n\n\t\tbasic: false,\n\t\tsmall: false,\n\t\tfixed: false,\n\n\t\tshowCloseButton: true,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\t\t\tObject.keys(kDefaults).forEach(function (item) {\n\t\t\t\tvar prop = _this.getWithDefault(item, kDefaults[item]);\n\t\t\t\t_this.set(item, prop);\n\t\t\t});\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.bindEscape();\n\t\t},\n\t\tonEscape: function onEscape() {\n\t\t\tthis.send('closeAction');\n\t\t\treturn false;\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tcloseButtonAction: function closeButtonAction() {\n\t\t\t\tthis.sendAction('onCloseButton');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/open-entry-location', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    store: Ember.inject.service('store'),\n    subscription: Ember.inject.service(),\n    openEntry: null,\n    member: null,\n    showEndTime: false,\n    boundItems: null,\n\n    init: function init() {\n      this._super();\n      this.set('markers', []);\n      this.setBreaks();\n      this.setStartAndEndMarkers();\n      this.set('boundItems', []);\n    },\n    setBreaks: function setBreaks() {\n      var _this = this;\n\n      this.get('store').query('time-entry-break', { time_entry_id: this.get('openEntry.id') }).then(function (results) {\n        _this.set('breaks', results);\n      });\n    },\n    setStartAndEndMarkers: function setStartAndEndMarkers() {\n      var _this2 = this;\n\n      var markers = this.get('markers');\n      var viewEntryLocation = this.get('openEntry');\n\n      this.get('store').query('client-time-entry-log', { original_time_entry_id: viewEntryLocation.get('id'), action_type: 60 }).then(function (results) {\n        var edits = results.filter(function (item) {\n          if (item.get('actionType') === 60) {\n            return item;\n          }\n        });\n\n        var mostRecentEdit = edits.sortBy('createdOn').reverse()[0];\n\n        if (viewEntryLocation.get('startLocationId')) {\n          _this2.get('store').find('member-location', viewEntryLocation.get('startLocationId')).then(function (item) {\n            var startTimeRangeStart = viewEntryLocation.get('startTime') - 180;\n            var startTimeRangeEnd = viewEntryLocation.get('startTime') + 180;\n\n            var markerImage = {\n              url: startTimeRangeStart < item.get('timeLocal') && startTimeRangeEnd > item.get('timeLocal') ? '/images/icons/map_icons_start.png' : '/images/icons/map_icons_dark_gray.png',\n              size: new window.google.maps.Size(35, 35),\n              anchor: new window.google.maps.Point(15, 15),\n              labelOrigin: new window.google.maps.Point(15, 15)\n            };\n\n            var markerType = startTimeRangeStart < item.get('timeLocal') && startTimeRangeEnd > item.get('timeLocal') ? 'Start' : 'Location Update';\n\n            item.set('markerImage', markerImage);\n            item.set('markerType', markerType);\n            _this2.setProperties({\n              lat: item.get('latitude'),\n              lng: item.get('longitude'),\n              zoom: 10\n            });\n            if (startTimeRangeStart < item.get('timeLocal') && startTimeRangeEnd > item.get('timeLocal')) {\n              item.set('markerImage', {\n                url: '/images/icons/map_icons_dark_gray.png',\n                size: new window.google.maps.Size(35, 35),\n                anchor: new window.google.maps.Point(15, 15),\n                labelOrigin: new window.google.maps.Point(15, 15)\n              });\n              item.set('markerType', 'Location Update');\n              markers.push(item);\n            } else {\n              markers.push(item);\n            }\n            // let boundItem = new window.google.maps.LatLng();\n            var boundItem = { lat: item.get('latitude'), lng: item.get('longitude') };\n            _this2.get('boundItems').push(boundItem);\n          });\n        }\n\n        if (viewEntryLocation.get('endLocationId')) {\n          _this2.get('store').find('member-location', viewEntryLocation.get('endLocationId')).then(function (item) {\n            var endTimeRangeStart = viewEntryLocation.get('endTime') - 180;\n            var endTimeRangeEnd = viewEntryLocation.get('endTime') + 180;\n\n            var markerImage = {\n              url: endTimeRangeStart < item.get('timeLocal') && endTimeRangeEnd > item.get('timeLocal') ? '/images/icons/map_icons_end.png' : '/images/icons/map_icons_dark_gray.png',\n              size: new window.google.maps.Size(35, 35),\n              anchor: new window.google.maps.Point(15, 15),\n              labelOrigin: new window.google.maps.Point(15, 15)\n            };\n\n            var markerType = endTimeRangeStart < item.get('timeLocal') && endTimeRangeEnd > item.get('timeLocal') ? 'End' : 'Location Update';\n\n            item.set('markerImage', markerImage);\n            item.set('markerType', markerType);\n            if (Ember.isPresent(mostRecentEdit)) {\n              if (endTimeRangeStart < item.get('timeLocal') && endTimeRangeEnd > item.get('timeLocal')) {\n                item.set('markerImage.url', '/images/icons/map_icons_dark_gray.png');\n                item.set('markerType', 'Location Update');\n                markers.push(item);\n              } else {\n                markers.push(item);\n              }\n            } else {\n              markers.push(item);\n            }\n            var boundItem = { lat: item.get('latitude'), lng: item.get('longitude') };\n            _this2.get('boundItems').push(boundItem);\n          });\n        }\n      }).finally(function () {\n        _this2.setMarkers();\n      });\n    },\n\n\n    /**\n     * Sets the marker colors based on location's time status.\n     * @private\n     * @method setMarkers\n     */\n    setMarkers: function setMarkers() {\n      var _this3 = this;\n\n      this.set('mapLoading', true);\n      var markers = this.get('markers');\n      var viewEntryLocation = this.get('openEntry');\n      var start = viewEntryLocation.get('startTime');\n      var showEndTime = this.get('showEndTime');\n      var end = _utils.Time.now().unix();\n      if (showEndTime) {\n        end = viewEntryLocation.get('endTime');\n      }\n\n      if (!Ember.isNone(viewEntryLocation)) {\n        var query = {\n          _lte: { time_local: end },\n          _gte: { time_local: start },\n          member_id: viewEntryLocation.get('memberId'),\n          deleted_on: '_-NULL-_',\n          archived_on: '_-NULL-_'\n        };\n\n        this.get('store').query('member-location', query).then(function (results) {\n          var locationItems = results.filter(function (loc) {\n            if (Ember.isPresent(viewEntryLocation.get('endLocationId'))) {\n              if (loc.get('id') !== viewEntryLocation.get('startLocationId') && loc.get('id') !== viewEntryLocation.get('endLocationId')) {\n                return loc;\n              }\n            } else {\n              if (loc.get('id') !== viewEntryLocation.get('startLocationId')) {\n                return loc;\n              }\n            }\n          });\n\n          locationItems.forEach(function (item) {\n            var iconUrl = '/images/icons/map_icons_dark_gray.png';\n            var markerType = 'Location';\n            var breaksLength = _this3.get('breaks.length');\n\n            if (breaksLength > 0) {\n              _this3.get('breaks').forEach(function (entryBreak) {\n                if (item.get('id') === entryBreak.get('startLocationId')) {\n                  iconUrl = '/images/icons/map_icons_start-break.png';\n                  markerType = 'Break Start';\n                } else if (item.get('id') === entryBreak.get('endLocationId')) {\n                  iconUrl = '/images/icons/map_icons_end-break.png';\n                  markerType = 'Break End';\n                } else if (item.get('timeLocal') > entryBreak.get('startDeviceTime') && item.get('timeLocal') < entryBreak.get('deviceEndTime')) {\n                  item.set('doNotTrack', true);\n                }\n              });\n            }\n\n            var markerImage = {\n              url: iconUrl,\n              size: new window.google.maps.Size(35, 35),\n              anchor: new window.google.maps.Point(15, 15),\n              labelOrigin: new window.google.maps.Point(15, 15)\n            };\n\n            item.set('markerImage', markerImage);\n            item.set('markerType', markerType);\n\n            if (item.get('markerType') === 'Location') {\n              item.set('isLocationChange', true);\n            } else {\n              item.set('isLocationChange', false);\n            }\n\n            if (!item.get('doNotTrack') && _this3.get('subscription.isProAccount')) {\n              markers.pushObject(item);\n            }\n            if (!_this3.get('subscription.isProAccount') && (item.get('markerType') === 'Break Start' || item.get('markerType') === 'Break End')) {\n              markers.pushObject(item);\n            }\n            var boundItem = { lat: item.get('latitude'), lng: item.get('longitude') };\n            _this3.get('boundItems').push(boundItem);\n          });\n        }).finally(function () {\n          _this3.set('mapLoading', false);\n\n          _this3.setProjectMarker();\n        });\n      }\n    },\n    setProjectMarker: function setProjectMarker() {\n      var _this4 = this;\n\n      var viewEntryLocation = this.get('openEntry');\n      var project = viewEntryLocation.get('project.title');\n      var projectId = viewEntryLocation.get('projectId');\n\n      if (Ember.isPresent(projectId)) {\n        this.get('store').query('project-info', { project_id: projectId }).then(function (results) {\n          if (Ember.isPresent(results.content[0])) {\n            var projectInfo = results.content[0]._data;\n            var projectMarker = Ember.Object.create({\n              project: project,\n              latitude: projectInfo.latitude,\n              longitude: projectInfo.longitude,\n              locationRadius: projectInfo.locationRadius,\n              timeLocal: _utils.Time.now().unix(),\n              noTooltip: true\n            });\n            var markerImage = {\n              url: '/images/icons/project_pin.png',\n              size: new window.google.maps.Size(30, 30),\n              anchor: new window.google.maps.Point(15, 15),\n              labelOrigin: new window.google.maps.Point(15, 15)\n            };\n\n            projectMarker.set('markerImage', markerImage);\n            _this4.set('mapMarkers', _this4.get('markers').sortBy('timeLocal').map(function (marker) {\n              marker.set('distanceFromProject', _this4.getPinDistance(projectInfo.latitude, projectInfo.longitude, marker.get('latitude'), marker.get('longitude'), projectInfo.locationRadius));\n              return marker;\n            }));\n            _this4.get('mapMarkers').pushObject(projectMarker);\n            // let boundItem = new window.google.maps.LatLng();\n            var boundItem = { lat: projectInfo.latitude, lng: projectInfo.longitude };\n            _this4.get('boundItems').push(boundItem);\n          } else {\n            _this4.set('mapMarkers', _this4.get('markers').sortBy('timeLocal'));\n          }\n        });\n      } else {\n        this.set('mapMarkers', this.get('markers').sortBy('timeLocal'));\n      }\n    },\n    getPinDistance: function getPinDistance(projectLat, projectLng, pinLat, pinLng, projectRadius) {\n      if (projectLat == pinLat && projectLng == pinLng) {\n        return 0;\n      } else if (projectLat === null && projectLng === null) {\n        return '';\n      } else {\n        var radProjectLat = Math.PI * projectLat / 180;\n        var radPinLat = Math.PI * pinLat / 180;\n        var angle = projectLng - pinLng;\n        var radAngle = Math.PI * angle / 180;\n        var distance = Math.sin(radProjectLat) * Math.sin(radPinLat) + Math.cos(radProjectLat) * Math.cos(radPinLat) * Math.cos(radAngle);\n        if (distance > 1) {\n          distance = 1;\n        }\n        distance = Math.acos(distance);\n        distance = distance * 180 / Math.PI;\n        distance = distance * 60 * 1.1515;\n        if (!Ember.isNone(projectRadius)) {\n          var projRad = projectRadius / 1609;\n          distance = distance - projRad;\n\n          if (distance <= 0) {\n            return '';\n          }\n          if (distance < 0.1) {\n            return '< 0.1';\n          } else {\n            return distance.toFixed(1);\n          }\n        }\n        if (distance <= 0) {\n          return '';\n        }\n        if (distance < 0.1) {\n          return '< 0.1';\n        } else {\n          return distance.toFixed(1);\n        }\n      }\n    },\n\n\n    actions: {\n      closeDialog: function closeDialog() {\n        this.sendAction('onClose');\n      },\n      onLoad: function onLoad(_ref) {\n        var map = _ref.map;\n\n        var bounds = new window.google.maps.LatLngBounds();\n        if (Ember.isPresent(this.get('boundItems'))) {\n          this.get('boundItems').forEach(function (item) {\n            var boundItem = new window.google.maps.LatLng(item.lat, item.lng);\n            bounds.extend(boundItem);\n          });\n          map.fitBounds(bounds, 20);\n          map.setCenter(bounds.getCenter());\n        }\n      },\n      closeInfoWindows: function closeInfoWindows() {\n        this.get('markers').forEach(function (marker) {\n          marker.set('showInfoWindow', false);\n        });\n      },\n      openInfoWindow: function openInfoWindow(item) {\n        var clickedFromMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n        if (!item.get('noTooltip')) {\n          if (!item.get('active')) {\n            this.get('markers').forEach(function (marker) {\n              marker.setProperties({\n                showInfoWindow: false,\n                active: false\n              });\n            });\n            item.setProperties({\n              showInfoWindow: true,\n              active: true\n            });\n\n            if (clickedFromMap) {\n              var anchor = 'marker-' + item.get('timeLocal');\n              var pageHeight = Ember.$(document).height();\n              if (Ember.$('#' + anchor).position().top > pageHeight || Ember.$('#' + anchor).position().top < 0) {\n                Ember.$('.marker-list').animate({\n                  scrollTop: Ember.$('#' + anchor).position().top\n                }, 1000);\n              }\n            }\n          }\n        }\n      }\n    }\n  });\n});","define('busy-app/components/dialogs/open-trial', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/pro-feature-upgrade', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\trouter: Ember.inject.service(),\n\n\t\tonClose: null,\n\t\tonPlanUpgraded: null,\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tstartTrial: function startTrial(dialog) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tdialog.showSavingMessage((0, _utils.loc)(\"Starting your free trial\"));\n\t\t\t\tthis.get('proFeature').startTrial().then(function () {\n\t\t\t\t\tdialog.showSavedMessage((0, _utils.loc)(\"Free trial has been started\"));\n\t\t\t\t\t_this.send('planUpgraded');\n\t\t\t\t});\n\t\t\t},\n\t\t\tstartUpgrade: function startUpgrade() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\t_logger.default.info(this, 'startUpgrade');\n\n\t\t\t\treturn this.get('proFeature').startUpgrade().then(function () {\n\t\t\t\t\treturn _this2.send('close');\n\t\t\t\t});\n\t\t\t},\n\t\t\tplanUpgraded: function planUpgraded() {\n\t\t\t\t_logger.default.info(this, 'planUpgraded');\n\n\t\t\t\tthis.send('close');\n\t\t\t\tthis.sendAction('onPlanUpgraded');\n\t\t\t},\n\t\t\tlearnMore: function learnMore() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\t_logger.default.info(this, 'learnMore');\n\n\t\t\t\treturn this.get('router').transitionTo('company-settings', { queryParams: { bc_tab: 'subscription' } }).then(function () {\n\t\t\t\t\treturn _this3.send('close');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/save-message', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: 'busy-save',\n\n\t\tclassNames: ['busy-save'],\n\n\t\tisShowing: false,\n\n\t\tisSaving: false,\n\t\tisSaved: false,\n\t\tisError: false,\n\n\t\ttimeout: null,\n\n\t\tsavingMessageText: (0, _utils.loc)('Saving'),\n\t\tsavedMessageText: (0, _utils.loc)('Successfully Saved'),\n\t\terrorMessageText: (0, _utils.loc)('An error occurred! Please try again later.'),\n\n\t\tmessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (!Ember.isNone(this.get('targetParent'))) {\n\t\t\t\tthis.set('targetParent.busySave', this);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * Shows a saving message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showSavingMessage\n   * @param message {string} The save message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowSavingMessage: function showSavingMessage(message, timeout) {\n\t\t\treturn this.savingMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows an error message at the\n   * bottom of the dialog\n   *\n   * @public\n   * @method showErrorMessage\n   * @param message {string} The error message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowErrorMessage: function showErrorMessage(message, timeout) {\n\t\t\treturn this.errorMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * Shows a saved message at the\n   * bottom of the dialog and fires the close dialog event.\n   *\n   * @public\n   * @method showSavedMessage\n   * @param message {string} The saved message text\n   * @param timeout {number} The time in miliseconds to show the message for\n   * @returns {EmberPromise}\n   */\n\t\tshowSavedMessage: function showSavedMessage(message, timeout) {\n\t\t\treturn this.successMessage(message, timeout);\n\t\t},\n\n\n\t\t/**\n   * shows a saving message box. this box will not hide until\n   * either success or error message calls have been made\n   *\n   * @public\n   * @param message {string} the message to show when saving (not required)\n   */\n\t\tsavingMessage: function savingMessage(message) {\n\t\t\treturn this._savingMessage(message);\n\t\t},\n\n\n\t\t/**\n   * private save message call for internal class use\n   *\n   * @public\n   * @param message {string} the message to show when saving\n   * @param complete {function} the callback function called when the timeout has finished\n   */\n\t\t_savingMessage: function _savingMessage(message) {\n\t\t\tvar _this = this;\n\n\t\t\tmessage = typeof message === 'string' ? message : this.get('savingMessageText');\n\n\t\t\tthis.set('savingMessageText', message);\n\n\t\t\tthis.set('isSaved', false);\n\t\t\tthis.set('isError', false);\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\t_this.set('isSaving', true);\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * show the message success box\n   *\n   * @private\n   * @param message {string} the success message (not required)\n   * @param timeout {int} the time in milliseconds for the message to display (not required) default 2000 miliseconds\n   */\n\t\tsuccessMessage: function successMessage(message, timeout) {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\treturn _this2._successMessage(message, timeout);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * private success message call\n   *\n   * @private\n   */\n\t\t_successMessage: function _successMessage(message, timeout) {\n\t\t\tvar _this3 = this;\n\n\t\t\tmessage = message !== undefined ? message : this.get('savedMessageText');\n\t\t\ttimeout = timeout !== undefined ? timeout : 2000;\n\n\t\t\tif (this.get('timeout')) {\n\t\t\t\twindow.clearTimeout(this.get('timeout'));\n\t\t\t}\n\n\t\t\tthis.set('savedMessageText', message);\n\t\t\tthis.set('isSaving', false);\n\t\t\tthis.set('isSaved', true);\n\t\t\tthis.set('isError', false);\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\t_this3.sendAction('onSaved');\n\t\t\t\treturn _this3.hide();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * shows the message error box\n   *\n   * @public\n   * @param message {string} the success message (not required)\n   * @param timeout {int} the time in milliseconds for the message to display (not required) default 4000 miliseconds\n   */\n\t\terrorMessage: function errorMessage(message, timeout) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.show().then(function () {\n\t\t\t\treturn _this4._errorMessage(message, timeout);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * private error message call\n   *\n   * @private\n   */\n\t\t_errorMessage: function _errorMessage(message, timeout) {\n\t\t\tvar _this5 = this;\n\n\t\t\tmessage = message !== undefined ? message : this.get('errorMessageText');\n\t\t\ttimeout = timeout !== undefined ? timeout : 4000;\n\n\t\t\tthis.set('errorMessageText', message);\n\t\t\tthis.set('isSaving', false);\n\t\t\tthis.set('isSaved', false);\n\t\t\tthis.set('isError', true);\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\t_this5.sendAction('onError');\n\t\t\t\treturn _this5.hide();\n\t\t\t});\n\t\t},\n\t\tshow: function show() {\n\t\t\tvar timeout = 0;\n\t\t\tif (!this.get('isShowing')) {\n\t\t\t\t// set isShowing flag to true\n\t\t\t\tthis.set('isShowing', true);\n\n\t\t\t\t// set the timeout to a 200 milliseconds\n\t\t\t\ttimeout = 200;\n\t\t\t} else if (!Ember.isNone(this.get('timeout'))) {\n\t\t\t\t// get the stored timeout\n\t\t\t\tvar timer = this.get('timeout');\n\n\t\t\t\t// calculate the time spent since the timeout was stored\n\t\t\t\tvar timeSpent = new Date().valueOf() - timer.timestamp;\n\n\t\t\t\t// get the time left for this timeout\n\t\t\t\ttimeout = timer.duration - timeSpent;\n\t\t\t}\n\t\t\treturn this.promise(timeout);\n\t\t},\n\t\thide: function hide() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar timeout = 0;\n\t\t\tif (this.get('isError') || this.get('isSaved')) {\n\t\t\t\t// reset the error flag\n\t\t\t\tthis.set('isError', false);\n\n\t\t\t\t// set the isSaved flag to off\n\t\t\t\tthis.set('isSaved', false);\n\n\t\t\t\t// set a timeout of 300 milliseconds\n\t\t\t\ttimeout = 300;\n\t\t\t} else if (!Ember.isNone(this.get('timeout'))) {\n\t\t\t\t// get the stored timeout\n\t\t\t\tvar timer = this.get('timeout');\n\n\t\t\t\t// calculate the time left in the timeout\n\t\t\t\tvar timeSpent = new Date().valueOf() - timer.timestamp;\n\n\t\t\t\t// get the time left for the timeout\n\t\t\t\ttimeout = timer.duration - timeSpent;\n\t\t\t}\n\n\t\t\treturn this.promise(timeout).then(function () {\n\t\t\t\t_this6.set('isShowing', false);\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\t\tpromise: function promise(duration) {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar timestamp = new Date().valueOf();\n\n\t\t\tif (this.get('timeout')) {\n\t\t\t\twindow.clearTimeout(this.get('timeout').timeout);\n\t\t\t}\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\tvar timer = window.setTimeout(function () {\n\t\t\t\t\tif (!_this7.get('isDestroyed')) {\n\t\t\t\t\t\tEmber.run(null, resolve, true);\n\t\t\t\t\t}\n\t\t\t\t}, duration);\n\n\t\t\t\t_this7.set('timeout', { timeout: timer, timestamp: timestamp, duration: duration });\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/components/dialogs/summary-report', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\tvar kTitle = {\n\t\tmember: 'model.member.fullName',\n\t\tproject: 'model.project.title',\n\t\tcostCode: 'model.costCode.costCode',\n\t\tequipment: 'model.equipment.equipmentName',\n\t\tday: 'model.startDate'\n\t};\n\tvar kSubTitle = {\n\t\tmember: 'model.member.memberNumber',\n\t\tproject: 'model.project.projectNumber',\n\t\tcostCode: 'model.costCode.title',\n\t\tequipment: 'model.equipment.makeModel',\n\t\tday: 'model.startDate'\n\t};\n\n\t/**\n  * `Component/Dialogs/SummaryReport`\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tstore: Ember.inject.service('store'),\n\t\taccess: Ember.inject.service('access'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tgraylog: Ember.inject.service('graylog'),\n\n\t\tclassNames: ['c-dialogs-summary-report'],\n\n\t\tmodel: null,\n\t\t_data: null,\n\n\t\ttype: 'member',\n\t\tstart: 0,\n\t\tend: 0,\n\t\tsettings: null,\n\t\tisUnassignedProject: false,\n\t\tincludeUnpaidTimeoff: false,\n\t\tincludeZeroTimeEntries: false,\n\t\taddEntryConfig: null,\n\n\t\tcurrentOption: 'project',\n\t\tcurrentTab: 'summary',\n\n\t\tdirtyFlag: false,\n\t\tisLoading: false,\n\t\tisCSVLoading: false,\n\n\t\ttitle: Ember.computed('type', 'model.{member.fullName,project.title,costCode.costCode,equipment.equipmentName,startDateFormatted}', 'isUnassignedProject', function () {\n\t\t\tvar key = Ember.get(kTitle, Ember.get(this, 'type'));\n\t\t\tif (key === 'model.startDate') {\n\t\t\t\tif (_utils.Time.date(Ember.get(this, key)).startOf('year').unix() !== _utils.Time.date().startOf('year').unix()) {\n\t\t\t\t\treturn _utils.Time.date(Ember.get(this, key)).format('MMM D, YYYY');\n\t\t\t\t}\n\t\t\t\treturn _utils.Time.date(Ember.get(this, key)).format('MMM D');\n\t\t\t}\n\n\t\t\tvar title = Ember.get(this, key);\n\t\t\tif (Ember.get(this, 'isUnassignedProject')) {\n\t\t\t\ttitle = title + ' <i>(' + (0, _utils.loc)('Unassigned') + ')</i>';\n\t\t\t}\n\t\t\treturn title;\n\t\t}),\n\n\t\tsubTitle: Ember.computed('type', 'model.{member.memberName,project.projectNumber,costCode.title,equipment.makeModel,startDateFormatted}', 'isUnassignedProject', function () {\n\t\t\tvar key = Ember.get(kSubTitle, Ember.get(this, 'type'));\n\t\t\tif (key === 'model.startDate') {\n\t\t\t\treturn \"\"; //Time.date(get(this, key)).format('MMM, D');\n\t\t\t}\n\t\t\treturn Ember.get(this, key);\n\t\t}),\n\n\t\tshowLoading: Ember.computed.or('isLoading', 'dirtyFlag'),\n\n\t\tisDay: Ember.computed('type', function () {\n\t\t\tif (Ember.get(this, 'type') === 'day') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tselectOptions: Ember.computed('currentOption', function () {\n\t\t\t// get the current selected option\n\t\t\tvar currentOption = Ember.get(this, 'currentOption');\n\n\t\t\t// build the options array\n\t\t\tvar options = [Ember.Object.create({ key: 'project', label: (0, _utils.loc)('By Project'), _selected: currentOption === 'project' }), Ember.Object.create({ key: 'member', label: (0, _utils.loc)('By Employee'), _selected: currentOption === 'member' }), Ember.Object.create({ key: 'costCode', label: (0, _utils.loc)('By Cost Code'), _selected: currentOption === 'costCode' }), Ember.Object.create({ key: 'equipment', label: (0, _utils.loc)('By Equipment'), _selected: currentOption === 'equipment' }), Ember.Object.create({ key: 'startDate', label: (0, _utils.loc)('By Date'), _selected: currentOption === 'startDate' })];\n\n\t\t\t// remove the data type from the options menu so\n\t\t\t// the dialog does not show members filtered by a member\n\t\t\t// or projects filtered by a project\n\n\t\t\tvar type = Ember.get(this, 'type');\n\t\t\tif (type === 'day') {\n\t\t\t\ttype = 'startDate';\n\t\t\t}\n\t\t\tvar remove = options.findBy('key', type);\n\t\t\toptions.removeObject(remove);\n\n\t\t\treturn options;\n\t\t}),\n\n\t\ttabOptions: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ key: 'summary', label: (0, _utils.loc)('Summary') }), Ember.Object.create({ key: 'details', label: (0, _utils.loc)('Details') })];\n\t\t}),\n\n\t\tdateFormat: Ember.computed('end', function () {\n\t\t\tvar isCurrentYear = _utils.Time.date(Ember.get(this, 'end')).isSame(_utils.Time.date(), 'year');\n\n\t\t\treturn isCurrentYear ? 'ddd, MMM D' : 'ddd, MMM D, YYYY';\n\t\t}),\n\n\t\tloadData: function loadData() {\n\t\t\tvar refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\tvar modelType = Ember.get(this, 'currentOption');\n\t\t\tvar isDetail = Ember.get(this, 'currentTab') === 'details' ? true : false;\n\t\t\tif (!Ember.isNone(Ember.get(this, '_data'))) {\n\t\t\t\tEmber.get(this, '_data').load(this, modelType, isDetail, refresh);\n\t\t\t}\n\t\t},\n\t\tdidReceiveAttrs: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\t\tvar owner, groupMembers, groupMemberIds;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tthis._super();\n\n\t\t\t\t\t\t\t\t// set current option\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'type') === 'project') {\n\t\t\t\t\t\t\t\t\tEmber.set(this, 'currentOption', 'member');\n\t\t\t\t\t\t\t\t} else if (Ember.get(this, 'type') === 'member' && Ember.get(this, 'currentOption') === 'day') {\n\t\t\t\t\t\t\t\t\tEmber.set(this, 'currentOption', 'startDate');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tEmber.set(this, 'currentOption', 'project');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// setup DataLoader if not already setup\n\t\t\t\t\t\t\t\tif (!Ember.get(this, 'testing') && Ember.isNone(Ember.get(this, '_data'))) {\n\t\t\t\t\t\t\t\t\t// create new DataLoader instance\n\t\t\t\t\t\t\t\t\towner = Ember.getOwner(this);\n\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data', DataLoader.create(owner.ownerInjection(), {}));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (Ember.isNone(Ember.get(this, '_data'))) {\n\t\t\t\t\t\t\t\t\t_context.next = 16;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// set filterType\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'type') !== Ember.get(this, '_data.filterType')) {\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.filterType', Ember.get(this, 'type'));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// set start time\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'start') !== Ember.get(this, '_data.start')) {\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.start', Ember.get(this, 'start'));\n\n\t\t\t\t\t\t\t\t\tif (Ember.get(this, 'type') === 'day') {\n\t\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.start', Ember.get(this, 'model.startDate'));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// set end time\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'end') !== Ember.get(this, '_data.end')) {\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.end', Ember.get(this, 'end'));\n\n\t\t\t\t\t\t\t\t\tif (Ember.get(this, 'type') === 'day') {\n\t\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.end', Ember.get(this, 'model.startDate') + 86400 - 1);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// set includeZeroTimeEntries\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'includeZeroTimeEntries') !== Ember.get(this, '_data.includeZeroTimeEntries')) {\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.includeZeroTimeEntries', Ember.get(this, 'includeZeroTimeEntries'));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// set includeUnpaidTimeoff\n\t\t\t\t\t\t\t\tif (Ember.get(this, 'includeUnpaidTimeoff') !== Ember.get(this, '_data.includeUnpaidTimeoff')) {\n\t\t\t\t\t\t\t\t\tEmber.set(this, '_data.includeUnpaidTimeoff', Ember.get(this, 'includeUnpaidTimeoff'));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\t\t\t\t_context.next = 16;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_context.next = 12;\n\t\t\t\t\t\t\t\treturn this.loadGroupMembers();\n\n\t\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\t\tgroupMembers = _context.sent;\n\t\t\t\t\t\t\t\tgroupMemberIds = new Set(groupMembers.mapBy('id'));\n\n\t\t\t\t\t\t\t\t// attach config information need to handle the Group Scoped Permissions feature\n\n\t\t\t\t\t\t\t\tEmber.set(this, '_data.useGroupPermissionScoping', Ember.get(this, 'auth.useGroupPermissionScoping'));\n\t\t\t\t\t\t\t\tEmber.set(this, '_data.groupMemberIds', groupMemberIds);\n\n\t\t\t\t\t\t\tcase 16:\n\n\t\t\t\t\t\t\t\t// load data\n\t\t\t\t\t\t\t\tthis.loadData();\n\n\t\t\t\t\t\t\tcase 17:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction didReceiveAttrs() {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn didReceiveAttrs;\n\t\t}(),\n\t\tloadGroupMembers: function loadGroupMembers() {\n\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t    id = _EmberGetProperties.id,\n\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\tvar query = { member_group_id: memberGroupId };\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t},\n\t\texportCSVDetails: function exportCSVDetails() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isCSVLoading', true);\n\n\t\t\tvar _EmberGet = Ember.get(this, 'settings'),\n\t\t\t    start = _EmberGet.start,\n\t\t\t    end = _EmberGet.end;\n\n\t\t\tvar type = Ember.get(this, 'type');\n\n\t\t\tvar _filterByType = filterByType(this, type),\n\t\t\t    id = _filterByType.id;\n\n\t\t\tvar member = null;\n\t\t\tvar project = null;\n\t\t\tif (type === 'member') {\n\t\t\t\tmember = id;\n\t\t\t} else if (type === 'project') {\n\t\t\t\tproject = id;\n\t\t\t}\n\n\t\t\tEmber.get(this, 'store').exportCSV('time-card-report-csv', start, end, member, project).then(function () {\n\t\t\t\t_this.set('isCSVLoading', false);\n\t\t\t});\n\t\t},\n\t\texportCSVSummary: function exportCSVSummary() {\n\t\t\tEmber.set(this, 'isCSVLoading', true);\n\n\t\t\tvar store = Ember.get(this, 'store');\n\t\t\tvar settings = Ember.get(this, 'settings');\n\t\t\tvar type = Ember.get(this, 'currentOption');\n\n\t\t\tvar dataModel = Ember.get(this, 'contentSummary.' + type);\n\n\t\t\t// NOTE: content details has a container for data model\n\t\t\t// if there is a need for a csv on details page someday\n\t\t\t// if (!isNone(get(dataModel, 'container'))) {\n\t\t\t//   dataModel = get(data, 'container');\n\t\t\t// }\n\n\t\t\tvar startDate = _utils.Time.date(settings.start).format('MM/DD/YYYY');\n\t\t\tvar endDate = _utils.Time.date(settings.end).format('DDMMMYYYY');\n\n\t\t\t// report title format: {title}{group_by}Activity({start_date}-{end_date})\n\t\t\tvar reportTitle = '' + Ember.get(this, 'title').replace(/ /g, '') + Ember.String.classify(type) + 'Activity(' + startDate + '-' + endDate + ')';\n\n\t\t\t// build data map\n\t\t\tvar dataMap = {};\n\t\t\tif (type === 'startDate') {\n\t\t\t\tdataMap = {};\n\t\t\t\tdataMap.date = function (data) {\n\t\t\t\t\treturn _utils.Time.date(data.startDate).format('DDMMMYYYY');\n\t\t\t\t};\n\t\t\t} else if (type === 'member') {\n\t\t\t\tdataMap = { 'First Name': 'member.firstName', 'Last Name': 'member.lastName', 'Employee Number': 'member.memberNumber' };\n\t\t\t} else if (type === 'project') {\n\t\t\t\tdataMap = { 'Project': 'project.title', 'Project Number': 'project.projectNumber' };\n\t\t\t} else if (type === 'equipment') {\n\t\t\t\tdataMap = { 'Equipment Name': 'equipment.equipmentName', 'Equipment Make/Model': 'equipment.makeModel' };\n\t\t\t} else if (type === 'costCode') {\n\t\t\t\tdataMap = { 'Cost Code': 'costCode.costCode', 'Cost Code Title': 'costCode.title' };\n\t\t\t}\n\n\t\t\tif (settings.regCost) {\n\t\t\t\tdataMap.regularCost = function (data) {\n\t\t\t\t\treturn \"$\" + data.regularCost.toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.regHours) {\n\t\t\t\tdataMap.regularHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data.regularSeconds, 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.otCost) {\n\t\t\t\tdataMap.overtimeCost = function (data) {\n\t\t\t\t\treturn \"$\" + data.overtimeCost.toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.otHours) {\n\t\t\t\tdataMap.overtimeHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data.overtimeSeconds, 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.ot2Cost) {\n\t\t\t\tdataMap.doubleTimeCost = function (data) {\n\t\t\t\t\treturn \"$\" + data.doubletimeCost.toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.ot2Hours) {\n\t\t\t\tdataMap.doubleTimeHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data.doubletimeCost, 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.overburden) {\n\t\t\t\tdataMap.laborBurden = function (data) {\n\t\t\t\t\tif (type === 'project') {\n\t\t\t\t\t\treturn \"$\" + data.totalOverburden.toFixed(2);\n\t\t\t\t\t}\n\t\t\t\t\treturn \"$\" + data.overburden.toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.totalCost) {\n\t\t\t\tif (Ember.get(this, 'features.reportLaborBurden')) {\n\t\t\t\t\tdataMap.totalCost = function (data) {\n\t\t\t\t\t\tif (data.totalTotalOverburdenCost) {\n\t\t\t\t\t\t\treturn '$' + data.totalTotalOverburdenCost.toFixed(2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn '$' + data.totalOverburdenCost.toFixed(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tdataMap.totalCost = function (data) {\n\t\t\t\t\t\tif (data.totalTotalCost) {\n\t\t\t\t\t\t\treturn '$' + data.totalTotalCost.toFixed(2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn '$' + data.totalCost.toFixed(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdataMap.totalHours = function (data) {\n\t\t\t\tif (data.totalTotalSeconds) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data.totalTotalSeconds, 20, true, false);\n\t\t\t\t} else {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data.totalSeconds, 20, true, false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tstore.csvExport(Ember.get(dataModel, 'content'), dataMap, reportTitle, true, true);\n\t\t\tEmber.set(this, 'isCSVLoading', false);\n\t\t},\n\n\n\t\t/**\n   * Sets the initial latitude, longitude and zoom\n   * @private\n   * @method setLatLngZoom\n   */\n\t\tsetLatLngZoom: function setLatLngZoom(lat, lng, zoom) {\n\t\t\tthis.set('lat', lat);\n\t\t\tthis.set('lng', lng);\n\t\t\tthis.set('zoom', zoom);\n\t\t},\n\n\n\t\tdateTitle: Ember.computed('start', 'end', function () {\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tvar startTime = _utils.Time.date(start).utc();\n\t\t\tvar endTime = _utils.Time.date(end).utc();\n\t\t\tvar currentTime = _utils.Time.date().utc();\n\n\t\t\tvar isDateRange = !startTime.isSame(endTime, 'day');\n\t\t\tvar isDifferentYear = !endTime.isSame(currentTime, 'year');\n\n\t\t\tvar dateRange = [startTime.format('MMM DD'), isDateRange ? endTime.format('MMM DD') : null].compact().join(' &ndash; ');\n\n\t\t\treturn [dateRange, isDifferentYear ? endTime.format('YYYY') : null].compact().join(', ');\n\t\t}),\n\n\t\t/* graylog events */\n\n\t\tgraylogActivityCsvExport: function graylogActivityCsvExport(type) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity CSV Export',\n\t\t\t\tfull_message: 'Activity CSV Export',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_report_type: type,\n\t\t\t\t_view_level: 'summary',\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\t\tgraylogActivityReportParametersChanged: function graylogActivityReportParametersChanged(type, viewLevel) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity Report Parameters Changed',\n\t\t\t\tfull_message: 'Activity Report Parameters Changed',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_report_type: type,\n\t\t\t\t_view_level: viewLevel,\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\treduceBreaks: function reduceBreaks(alpha, beta) {\n\t\t\t\tvar time = 0;\n\t\t\t\tif (Ember.get(beta, 'segmentType') === 20) {\n\t\t\t\t\ttime = Ember.get(beta, 'endTime') - Ember.get(beta, 'startTime');\n\t\t\t\t}\n\t\t\t\treturn alpha + time;\n\t\t\t},\n\t\t\tselectOptionAction: function selectOptionAction(item) {\n\t\t\t\tEmber.set(this, 'currentOption', Ember.get(item, 'key'));\n\t\t\t\tthis.graylogActivityReportParametersChanged(Ember.get(item, 'key'), this.get('currentTab'));\n\t\t\t\tthis.loadData();\n\t\t\t},\n\t\t\tselectTabAction: function selectTabAction(item) {\n\t\t\t\tthis.set('currentTab', Ember.get(item, 'key'));\n\t\t\t\tthis.loadData();\n\t\t\t},\n\t\t\topenEntry: function openEntry(item) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\t_logger.default.info(this, 'openEntry');\n\n\t\t\t\tvar type = Ember.get(item, 'isTimeOff') ? 'time-off' : 'time-entry';\n\t\t\t\tvar entry = Ember.get(this, 'store').peekRecord(type, item.id);\n\t\t\t\tEmber.RSVP.resolve(Ember.get(entry, 'member')).then(function (member) {\n\t\t\t\t\tif (Ember.get(_this2, 'access').canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\t\tEmber.set(_this2, 'editEntry', entry);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\topenViewEntry: function openViewEntry(item) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\t_logger.default.info(this, 'openViewEntry');\n\n\t\t\t\tvar type = Ember.get(item, 'isTimeOff') ? 'time-off' : 'time-entry';\n\t\t\t\tvar entry = Ember.get(this, 'store').peekRecord(type, item.id);\n\t\t\t\tEmber.RSVP.resolve(Ember.get(entry, 'member')).then(function (member) {\n\t\t\t\t\tif (Ember.get(_this3, 'access').canTakeActionFor('timeEvents', member)) {\n\t\t\t\t\t\tEmber.set(_this3, 'viewEntry', entry);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\topenViewEntryLocation: function openViewEntryLocation(item) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t_logger.default.info(this, 'openViewEntryLocation');\n\n\t\t\t\tvar type = Ember.get(item, 'isTimeOff') ? 'time-off' : 'time-entry';\n\t\t\t\tvar entry = Ember.get(this, 'store').peekRecord(type, item.id);\n\t\t\t\tEmber.RSVP.resolve(Ember.get(entry, 'member')).then(function (member) {\n\t\t\t\t\tif (Ember.get(_this4, 'access').canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\t\tEmber.set(_this4, 'viewEntryLocation', entry);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\t_logger.default.info(this, 'closeEditDialog');\n\n\t\t\t\tif (Ember.get(this, 'editEntry.hasDirtyAttributes')) {\n\t\t\t\t\tEmber.get(this, 'editEntry').rollbackAttributes();\n\t\t\t\t}\n\n\t\t\t\tEmber.set(this, 'editEntry', null);\n\t\t\t},\n\t\t\tcloseViewDialog: function closeViewDialog() {\n\t\t\t\t_logger.default.info(this, 'closeViewDialog');\n\t\t\t\tEmber.set(this, 'viewEntry', null);\n\t\t\t},\n\t\t\tcloseViewLocationDialog: function closeViewLocationDialog() {\n\t\t\t\t_logger.default.info(this, 'closeViewLocationDialog');\n\t\t\t\tEmber.set(this, 'viewEntryLocation', null);\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\trefreshSync: function refreshSync() {\n\t\t\t\tEmber.set(this, 'editEntry', null);\n\t\t\t\t// set(this, 'viewEntry', null);\n\t\t\t\tEmber.set(this, 'viewEntryLocation', null);\n\t\t\t\tEmber.set(this, 'dirtyFlag', true);\n\t\t\t},\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.loadData(true);\n\t\t\t},\n\t\t\texportCSVAction: function exportCSVAction() {\n\t\t\t\tif (Ember.get(this, 'features.activityReport')) {\n\t\t\t\t\tif (Ember.get(this, 'currentTab') === 'summary') {\n\t\t\t\t\t\tthis.graylogActivityCsvExport(this.get('type'));\n\t\t\t\t\t\tthis.exportCSVSummary();\n\t\t\t\t\t} else if (Ember.get(this, 'currentTab') === 'details') {\n\t\t\t\t\t\tthis.exportCSVDetails();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'upgradeDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\thideUpgradeDialog: function hideUpgradeDialog() {\n\t\t\t\tEmber.set(this, 'upgradeDialog', false);\n\t\t\t},\n\t\t\topenConflictResolver: function openConflictResolver(item) {\n\t\t\t\tvar type = Ember.get(item, 'isTimeOff') ? 'time-off' : 'time-entry';\n\t\t\t\tvar entry = Ember.get(this, 'store').peekRecord(type, item.id);\n\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tshowConflictResolver: true,\n\t\t\t\t\tactiveConflict: entry\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseConflictResolver: function closeConflictResolver() {\n\t\t\t\tthis.send('refreshModel');\n\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tshowConflictResolver: false,\n\t\t\t\t\tactiveConflict: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/**\n \t* filterBy params for loading data\n \t*\n \t* @property filterBy\n \t* @type {object}\n \t*/\n\tvar filterByType = function filterByType(target, type) {\n\t\t_utils.Assert.isObject(target);\n\t\t_utils.Assert.isString(type);\n\n\t\t// get the underscored property key for this type\n\t\tvar property = Ember.String.underscore(type + '_id');\n\n\t\t// get the id for this type\n\t\tvar id = Ember.get(target, 'model.' + type + '.id');\n\n\t\t// if id is null then use the null string\n\t\tif (Ember.isNone(id)) {\n\t\t\tid = '_-NULL-_';\n\t\t}\n\n\t\t// return id and property\n\t\treturn { id: id, property: property };\n\t};\n\n\tvar DataLoader = Ember.Object.extend({\n\t\tstore: Ember.inject.service('store'),\n\n\t\tfilterType: null,\n\t\tstart: null,\n\t\tend: null,\n\n\t\tuseGroupPermissionScoping: false,\n\t\tgroupMemberIds: null,\n\n\t\t_cache: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis._cache = new window.Map();\n\t\t},\n\t\tgetSummaryEndPoint: function getSummaryEndPoint(modelType) {\n\t\t\tvar type = Ember.get(this, 'filterType');\n\t\t\t// member is always first in the reports api endpoints'\n\t\t\tvar endPoint = 'member';\n\n\t\t\t// project will come second if project is needed\n\t\t\tif (type === 'project' || modelType === 'project') {\n\t\t\t\tendPoint += '-project';\n\t\t\t}\n\n\t\t\t// cost code will come after project or member\n\t\t\tif (type === 'costCode' || modelType === 'costCode') {\n\t\t\t\tendPoint += '-cost-code';\n\t\t\t}\n\n\t\t\t// equipment will come after project and after costcode\n\t\t\tif (type === 'equipment' || modelType === 'equipment') {\n\t\t\t\tendPoint += '-equipment';\n\t\t\t}\n\n\t\t\tif (type === 'member' && modelType === 'startDate') {\n\t\t\t\tendPoint += '-day';\n\t\t\t} else if (modelType === 'startDate') {\n\t\t\t\tendPoint += '-day';\n\t\t\t\tendPoint = endPoint.replace(/^member-/, '');\n\t\t\t}\n\n\t\t\t// finish the endPoint with seconds and in the future\n\t\t\t// this can be modified to support cost as well.\n\t\t\treturn endPoint;\n\t\t},\n\t\tcacheType: function cacheType() {\n\t\t\tvar isDetail = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\treturn isDetail ? 'detail' : 'summary';\n\t\t},\n\t\tsetCache: function setCache(data, modelType) {\n\t\t\tvar isDetail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\t_utils.Assert.isString(modelType);\n\t\t\t_utils.Assert.isBoolean(isDetail);\n\n\t\t\t// get contentType string\n\t\t\tvar key = this.cacheType(isDetail);\n\n\t\t\t// get current cache object for the modelType\n\t\t\t// or create it if it doesnt exist\n\t\t\tvar cache = Ember.get(this._cache, modelType);\n\t\t\tif (Ember.isNone(cache)) {\n\t\t\t\tcache = {};\n\t\t\t}\n\n\t\t\t// set cache time to live to 15 seconds\n\t\t\tvar ttl = _utils.Time.date().add('15', 'seconds').unix();\n\n\t\t\t// add the data to the cache object\n\t\t\tEmber.set(cache, key, { data: data, ttl: ttl });\n\n\t\t\t// add the cache object to the map\n\t\t\tEmber.set(this._cache, modelType, cache);\n\t\t},\n\t\tgetCache: function getCache(modelType) {\n\t\t\tvar isDetail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t_utils.Assert.isString(modelType);\n\t\t\t_utils.Assert.isBoolean(isDetail);\n\n\t\t\tvar cacheType = Ember.get(this._cache, modelType);\n\t\t\tif (!Ember.isNone(cacheType)) {\n\t\t\t\tvar cache = Ember.get(cacheType, this.cacheType(isDetail));\n\t\t\t\tif (!Ember.isNone(cache) && _utils.Time.timestamp() <= cache.ttl) {\n\t\t\t\t\treturn cache.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\thasCache: function hasCache(modelType) {\n\t\t\tvar isDetail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t_utils.Assert.isString(modelType);\n\t\t\t_utils.Assert.isBoolean(isDetail);\n\n\t\t\treturn !Ember.isNone(this.getCache(modelType, isDetail));\n\t\t},\n\t\tload: function load(target, modelType) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar isDetail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\t\tvar refresh = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n\t\t\t// get start and end timestamps\n\t\t\tvar start = Ember.get(this, 'start');\n\t\t\tvar end = Ember.get(this, 'end');\n\n\t\t\t// if this is not a hard refresh and the data is in the cache\n\t\t\t// then return the cached data else load new data\n\t\t\tif (!refresh && this.hasCache(modelType, isDetail)) {\n\t\t\t\tvar cache = this.getCache(modelType, isDetail);\n\t\t\t\tthis.setContent(target, cache, modelType, isDetail);\n\t\t\t} else {\n\t\t\t\t// require start and end times are set\n\t\t\t\tif (!Ember.isNone(start) && !Ember.isNone(end)) {\n\t\t\t\t\t// start loading animation\n\t\t\t\t\tif (!Ember.get(target, 'isDestroyed')) {\n\t\t\t\t\t\tEmber.set(target, 'isLoading', true);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar loading = void 0;\n\t\t\t\t\tif (isDetail) {\n\t\t\t\t\t\tif (modelType === 'startDate') {\n\t\t\t\t\t\t\tmodelType = 'startTime';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tloading = this.getDetailData(target, modelType, start, end); // load detail data\n\t\t\t\t\t} else {\n\t\t\t\t\t\tloading = this.getSummaryData(target, modelType, start, end); // load summary data\n\t\t\t\t\t}\n\n\t\t\t\t\tloading.then(function (data) {\n\t\t\t\t\t\t// create a content details with aggregate data\n\t\t\t\t\t\t_this5.setContent(target, data, modelType, isDetail);\n\t\t\t\t\t});\n\n\t\t\t\t\t// stop loading animation\n\t\t\t\t\tloading.finally(function () {\n\t\t\t\t\t\tif (!Ember.get(target, 'isDestroyed')) {\n\t\t\t\t\t\t\tEmber.set(target, 'isLoading', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error(target, 'Start and End are required before calling loadData()');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetContainer: function setContainer(target, data, modelType) {\n\t\t\t// create a container for aggregating the data\n\t\t\treturn Ember.get(this, 'store').fetchContainer(data, modelType).then(function (container) {\n\t\t\t\t// add the show type to the container\n\t\t\t\tEmber.set(container, 'modelType', modelType);\n\n\t\t\t\treturn container;\n\t\t\t});\n\t\t},\n\t\tsetContent: function setContent(target, container, modelType, isDetail) {\n\t\t\tEmber.set(container, 'isDetail', isDetail);\n\n\t\t\t// add container to cache\n\t\t\tthis.setCache(container, modelType, isDetail);\n\n\t\t\tvar contentStr = 'content' + (isDetail ? 'Detail' : 'Summary');\n\n\t\t\t// set the content array for the contentType passed in\n\t\t\tEmber.set(target, contentStr, container);\n\t\t},\n\t\tgetSummaryData: function getSummaryData(target, type, start, end) {\n\t\t\tvar _this6 = this;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\t// build the model type string\n\t\t\tvar modelType = this.getSummaryEndPoint(type);\n\t\t\tvar modelTypeCost = modelType + '-cost';\n\t\t\tvar modelTypeSeconds = modelType + '-seconds';\n\n\t\t\t// get filterType and make sure it is a valid string\n\t\t\tvar filterType = Ember.get(this, 'filterType');\n\n\t\t\tvar _filterByType2 = filterByType(target, filterType),\n\t\t\t    id = _filterByType2.id,\n\t\t\t    property = _filterByType2.property;\n\n\t\t\tif (id === '_-NULL-_') {\n\t\t\t\tid = '00000000-0000-0000-0000-000000000000';\n\t\t\t}\n\n\t\t\tvar query = _defineProperty({}, property, id);\n\n\t\t\tif (type === 'startDate') {\n\t\t\t\tquery._gte = { start_date: start };\n\t\t\t\tquery._lte = { start_date: end };\n\t\t\t\tquery.deleted_on = \"_-DISABLE-_\";\n\t\t\t} else {\n\t\t\t\tquery.start_date = start;\n\t\t\t\tquery.end_date = end;\n\t\t\t\tquery.limit = 10000;\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tseconds: Ember.get(this, 'store').findAll(modelTypeSeconds, query),\n\t\t\t\tcost: Ember.get(this, 'store').findAll(modelTypeCost, query)\n\t\t\t}).then(function () {\n\t\t\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(data) {\n\t\t\t\t\tvar filter;\n\t\t\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\t\t\twhile (1) {\n\t\t\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\tif (!Ember.get(_this6, 'useGroupPermissionScoping')) {\n\t\t\t\t\t\t\t\t\t\t_context2.next = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t_context2.next = 3;\n\t\t\t\t\t\t\t\t\treturn _this6.filterByMemberGroup(data.seconds);\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tdata.seconds = _context2.sent;\n\n\t\t\t\t\t\t\t\tcase 4:\n\n\t\t\t\t\t\t\t\t\t// filter 0 time objects\n\t\t\t\t\t\t\t\t\tfilter = [];\n\n\t\t\t\t\t\t\t\t\tdata.seconds.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t// set the cost model on the seconds model for the container filter\n\t\t\t\t\t\t\t\t\t\tEmber.set(item, 'cost', data.cost.findBy('uid', Ember.get(item, 'uid')));\n\n\t\t\t\t\t\t\t\t\t\t// check if model has totalTotalSeconds or if it does not have totalTotalSeconds\n\t\t\t\t\t\t\t\t\t\t// check if the model has totalSeconds if both are null, undefined, or 0 then filter this\n\t\t\t\t\t\t\t\t\t\t// model from the list.\n\t\t\t\t\t\t\t\t\t\tif (!Ember.isNone(Ember.get(item, 'totalTotalSeconds')) && Ember.get(item, 'totalTotalSeconds') === 0 || Ember.isNone(Ember.get(item, 'totalTotalSeconds')) && Ember.get(item, 'totalSeconds') === 0) {\n\t\t\t\t\t\t\t\t\t\t\t// add the model to the remove list\n\t\t\t\t\t\t\t\t\t\t\tfilter.push(item);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//check if an 'unassigned' project label was selected and remove all items\n\t\t\t\t\t\t\t\t\t\t//that have totalTotalSeconds\n\t\t\t\t\t\t\t\t\t\tif (Ember.get(target, 'isUnassignedProject') && Ember.get(item, 'totalSeconds') === 0) {\n\t\t\t\t\t\t\t\t\t\t\t// add the model to the remove list\n\t\t\t\t\t\t\t\t\t\t\tfilter.push(item);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t// remove all models with no time\n\t\t\t\t\t\t\t\t\tdata.seconds.removeObjects(filter);\n\n\t\t\t\t\t\t\t\t\t// create a content details with aggregate data\n\t\t\t\t\t\t\t\t\treturn _context2.abrupt('return', _this6.setContainer(target, data.seconds, type));\n\n\t\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _callee2, _this6);\n\t\t\t\t}));\n\n\t\t\t\treturn function (_x8) {\n\t\t\t\t\treturn _ref2.apply(this, arguments);\n\t\t\t\t};\n\t\t\t}());\n\t\t},\n\t\tgetDetailData: function getDetailData(target, type, start, end) {\n\t\t\tvar _this7 = this;\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntry: this.getTimeEntryData(target, start, end),\n\t\t\t\ttimeOff: this.getTimeOffData(target, start, end),\n\t\t\t\tconflict: this.getConflictData(target, start, end)\n\t\t\t}).then(function () {\n\t\t\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(data) {\n\t\t\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\t\t\twhile (1) {\n\t\t\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\tif (!Ember.get(_this7, 'useGroupPermissionScoping')) {\n\t\t\t\t\t\t\t\t\t\t_context3.next = 10;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t_context3.next = 3;\n\t\t\t\t\t\t\t\t\treturn _this7.filterByMemberGroup(data.timeEntry);\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tdata.timeEntry = _context3.sent;\n\t\t\t\t\t\t\t\t\t_context3.next = 6;\n\t\t\t\t\t\t\t\t\treturn _this7.filterByMemberGroup(data.timeOff);\n\n\t\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\t\tdata.timeOff = _context3.sent;\n\t\t\t\t\t\t\t\t\t_context3.next = 9;\n\t\t\t\t\t\t\t\t\treturn _this7.filterByMemberGroup(data.conflict);\n\n\t\t\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\t\t\tdata.conflict = _context3.sent;\n\n\t\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\t\t\treturn _context3.abrupt('return', _this7.getSegmentData(start, end, data.timeEntry).then(function () {\n\t\t\t\t\t\t\t\t\t\tvar entries = [];\n\t\t\t\t\t\t\t\t\t\tdata.timeEntry.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t\tvar conflict = !Ember.isNone(data.conflict) && data.conflict.find(function (c) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn Ember.get(c, 'id') === Ember.get(item, 'id');\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tEmber.set(item, 'conflict', conflict);\n\n\t\t\t\t\t\t\t\t\t\t\tif (Ember.get(target, 'isUnassignedProject')) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (Ember.get(item, 'projectId') === Ember.get(item, 'project.rootProjectId')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tentries.pushObject(item);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tentries.pushObject(item);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tdata.timeOff.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t\treturn entries.pushObject(item);\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t// call the time-entry joined models to trigger\n\t\t\t\t\t\t\t\t\t\t// loads of the models\n\t\t\t\t\t\t\t\t\t\treturn Ember.RSVP.all(entries.map(function (item) {\n\t\t\t\t\t\t\t\t\t\t\tvar equipmentId = Ember.get(item, 'equipmentId');\n\t\t\t\t\t\t\t\t\t\t\tvar projectId = Ember.get(item, 'projectId');\n\t\t\t\t\t\t\t\t\t\t\tvar costCodeId = Ember.get(item, 'costCodeId');\n\n\t\t\t\t\t\t\t\t\t\t\tvar project = Ember.isNone(projectId) ? Ember.RSVP.resolve() : Ember.RSVP.resolve(Ember.get(item, 'project')).then(function (p) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn !Ember.isNone(p) ? Ember.RSVP.all([Ember.RSVP.resolve(Ember.get(p, 'parentProjects')), Ember.RSVP.resolve(Ember.get(p, 'projectInfo'))]).then(function () {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn p;\n\t\t\t\t\t\t\t\t\t\t\t\t}) : Ember.RSVP.resolve(p);\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t// ensure deleted equipment is allowed to be returned here, but short circuit lookups if there is no equipment\n\t\t\t\t\t\t\t\t\t\t\tvar equipment = Ember.isNone(equipmentId) ? Ember.RSVP.resolve() : Ember.get(_this7, 'store').queryRecord('equipment', { id: equipmentId, deleted_on: '_-DISABLE-_' }).then(function (item) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn !Ember.isNone(item) ? Ember.RSVP.resolve(Ember.get(item, 'equipmentJoins')).then(function () {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn item;\n\t\t\t\t\t\t\t\t\t\t\t\t}) : item;\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\tvar member = Ember.get(item, 'member');\n\t\t\t\t\t\t\t\t\t\t\tvar costCode = Ember.isNone(costCodeId) ? Ember.RSVP.resolve() : Ember.get(item, 'costCode');\n\n\t\t\t\t\t\t\t\t\t\t\treturn Ember.RSVP.hash({ project: project, member: member, costCode: costCode, equipment: equipment }).then(function () {\n\t\t\t\t\t\t\t\t\t\t\t\treturn item;\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t})).then(function (models) {\n\t\t\t\t\t\t\t\t\t\t\tvar _ref4;\n\n\t\t\t\t\t\t\t\t\t\t\tmodels = sortByType(type, models);\n\t\t\t\t\t\t\t\t\t\t\t// if (type === 'startTime') {\n\t\t\t\t\t\t\t\t\t\t\t//   models = models.sortBy('startTime', 'endTime', 'member.fullName', 'project.fullTitle', 'costCode.costCode', 'equipment.equipmentName');\n\t\t\t\t\t\t\t\t\t\t\t// } else {\n\t\t\t\t\t\t\t\t\t\t\t//   let name, id;\n\t\t\t\t\t\t\t\t\t\t\t//   if (type === 'project') {\n\t\t\t\t\t\t\t\t\t\t\t//     name = 'project.fullTitle';\n\t\t\t\t\t\t\t\t\t\t\t//     id = 'projectId';\n\t\t\t\t\t\t\t\t\t\t\t//   } else if (type === 'costCode') {\n\t\t\t\t\t\t\t\t\t\t\t//     name = 'costCode.costCode';\n\t\t\t\t\t\t\t\t\t\t\t//     id = 'costCodeId';\n\t\t\t\t\t\t\t\t\t\t\t//   } else if (type === 'equipment') {\n\t\t\t\t\t\t\t\t\t\t\t//     name = 'equipment.equipmentName';\n\t\t\t\t\t\t\t\t\t\t\t//     id = 'equipmentId';\n\t\t\t\t\t\t\t\t\t\t\t//   }\n\t\t\t\t\t\t\t\t\t\t\t//   models = sortModels(id, name, models);\n\t\t\t\t\t\t\t\t\t\t\t// }\n\t\t\t\t\t\t\t\t\t\t\t// set container\n\t\t\t\t\t\t\t\t\t\t\t//const container =\n\t\t\t\t\t\t\t\t\t\t\t//return this.setContainer(target, entries, type);\n\n\t\t\t\t\t\t\t\t\t\t\treturn _ref4 = {}, _defineProperty(_ref4, type, models), _defineProperty(_ref4, 'modelType', type), _ref4; //, container };\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _callee3, _this7);\n\t\t\t\t}));\n\n\t\t\t\treturn function (_x9) {\n\t\t\t\t\treturn _ref3.apply(this, arguments);\n\t\t\t\t};\n\t\t\t}());\n\t\t},\n\t\tgetTimeEntryData: function getTimeEntryData(target, start, end) {\n\t\t\tvar _this8 = this;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\t// get filterType and make sure it is a valid string\n\t\t\tvar filterType = Ember.get(this, 'filterType');\n\n\t\t\tvar _filterByType3 = filterByType(target, filterType),\n\t\t\t    id = _filterByType3.id,\n\t\t\t    property = _filterByType3.property;\n\n\t\t\tvar query = {\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\t_gte: { end_time: start },\n\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t};\n\n\t\t\tvar promisedData = void 0;\n\n\t\t\tif (property === 'project_id' && id !== '_-NULL-_') {\n\t\t\t\tpromisedData = Ember.get(this, 'store').filter('project').findWithAllChildren('time-entry', id, query);\n\t\t\t} else {\n\t\t\t\tquery[property] = id;\n\t\t\t\tpromisedData = this.get('store').findAll('time-entry', query);\n\t\t\t}\n\n\t\t\treturn promisedData.then(function (timeEntries) {\n\t\t\t\tif (!Ember.get(_this8, 'includeZeroTimeEntries') && !Ember.isNone(timeEntries)) {\n\t\t\t\t\ttimeEntries = timeEntries.filter(function (entry) {\n\t\t\t\t\t\treturn Ember.get(entry, 'startTime') !== Ember.get(entry, 'endTime');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn timeEntries;\n\t\t\t});\n\t\t},\n\t\tgetTimeOffData: function getTimeOffData(target, start, end) {\n\t\t\tvar _this9 = this;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\t// get filterType and make sure it is a valid string\n\t\t\tvar filterType = Ember.get(this, 'filterType');\n\n\t\t\tvar _filterByType4 = filterByType(target, filterType),\n\t\t\t    id = _filterByType4.id,\n\t\t\t    property = _filterByType4.property;\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { date_stamp: start },\n\t\t\t\t_lte: { date_stamp: end },\n\t\t\t\t// paid: true,\n\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t};\n\n\t\t\tif (property === 'member_id' || id === '_-NULL-_') {\n\t\t\t\tif (property === 'member_id') {\n\t\t\t\t\tquery[property] = id;\n\t\t\t\t}\n\t\t\t\treturn this.get('store').findAll('time-off', query).then(function (timeOff) {\n\t\t\t\t\tif (!Ember.get(_this9, 'includeUnpaidTimeoff')) {\n\t\t\t\t\t\ttimeOff = timeOff.filterBy('paid', true);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn timeOff;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\t\tgetSegmentData: function getSegmentData(start, end, entries) {\n\t\t\tvar _this10 = this;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\t\t\t_utils.Assert.isArray(entries);\n\n\t\t\tvar ids = entries.map(function (m) {\n\t\t\t\treturn m.id;\n\t\t\t}).uniq();\n\t\t\tvar query = {\n\t\t\t\t_gte: { start_time: start },\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t};\n\n\t\t\treturn this.get('store').findWhereIn('segment', 'time_entry_id', ids, query).then(function (segments) {\n\t\t\t\tvar segmentIds = segments.mapBy('id');\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tseconds: _this10.get('store').findWhereIn('segment-seconds', 'segment_id', segmentIds, { deleted_on: '_-NULL-_' }),\n\t\t\t\t\tcost: _this10.get('store').findWhereIn('segment-cost', 'segment_id', segmentIds, { deleted_on: '_-NULL-_' })\n\t\t\t\t}).then(function (segmentData) {\n\t\t\t\t\tsegments.forEach(function (item) {\n\t\t\t\t\t\titem.set('seconds', segmentData.seconds.filterBy('segmentId', item.id));\n\t\t\t\t\t\titem.set('cost', segmentData.cost.filterBy('segmentId', item.id));\n\t\t\t\t\t});\n\n\t\t\t\t\tentries.forEach(function (item) {\n\t\t\t\t\t\treturn item.set('segments', segments.filterBy('timeEntryId', item.id));\n\t\t\t\t\t});\n\n\t\t\t\t\treturn entries;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetConflictData: function getConflictData(target, start, end) {\n\t\t\tif (start && end && _utils.Time.date(end).diff(_utils.Time.date(start), 'days') > 31) {\n\t\t\t\t_logger.default.warn(this, 'Date range too large, skipping time conflict lookup');\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tvar params = { range_start: start, range_end: end };\n\t\t\t// get filterType and make sure it is a valid string\n\t\t\tvar filterType = Ember.get(this, 'filterType');\n\n\t\t\tvar _filterByType5 = filterByType(target, filterType),\n\t\t\t    id = _filterByType5.id,\n\t\t\t    property = _filterByType5.property;\n\n\t\t\tif (property === 'member_id') {\n\t\t\t\tEmber.setProperties(params, { member_id: id });\n\t\t\t\treturn Ember.get(this, 'store').query('time-entry-member-conflicts', params);\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'store').query('time-entry-organization-conflicts', params);\n\t\t\t}\n\t\t},\n\t\tfilterByMemberGroup: function () {\n\t\t\tvar _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(collection) {\n\t\t\t\tvar groupMemberIds;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee4$(_context4) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context4.prev = _context4.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tif (!Ember.isNone(collection)) {\n\t\t\t\t\t\t\t\t\t_context4.next = 2;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context4.abrupt('return', collection);\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgroupMemberIds = Ember.get(this, 'groupMemberIds');\n\t\t\t\t\t\t\t\treturn _context4.abrupt('return', collection.filter(function (item) {\n\t\t\t\t\t\t\t\t\treturn groupMemberIds.has(Ember.get(item, 'memberId'));\n\t\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context4.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee4, this);\n\t\t\t}));\n\n\t\t\tfunction filterByMemberGroup(_x10) {\n\t\t\t\treturn _ref5.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn filterByMemberGroup;\n\t\t}()\n\t});\n\n\tvar SORT_ORDER = {\n\t\tstartTime: 'startTime',\n\t\tendTime: 'endTime',\n\t\tmember: 'member.fullName',\n\t\tproject: 'project.fullTitle',\n\t\tcostCode: 'costCode.costCode',\n\t\tequipment: 'equipment.equipmentName'\n\t};\n\n\tvar sortByType = function sortByType(type, models) {\n\t\tvar idx = Object.keys(SORT_ORDER).indexOf(type);\n\t\tvar sortOrder = Object.values(SORT_ORDER);\n\t\tvar sort = [].concat(sortOrder.slice(idx, idx + 1), sortOrder.slice(0, idx), sortOrder.slice(idx + 1 - sortOrder.length));\n\n\t\treturn models.sort(function (a, b) {\n\t\t\tfor (var i = 0; i < sort.length; i++) {\n\t\t\t\tvar key = sort[i];\n\t\t\t\tvar propA = Ember.get(a, key);\n\t\t\t\tvar propB = Ember.get(b, key);\n\t\t\t\tvar compareValue = compare(propA, propB);\n\t\t\t\tif (compareValue) {\n\t\t\t\t\treturn compareValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t};\n\n\tvar compare = function compare(a, b) {\n\t\tif (a !== b) {\n\t\t\t// a is undefined or null so push it down the list\n\t\t\tif (Ember.isNone(a)) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// b is undefined or null so push it down the list\n\t\t\tif (Ember.isNone(b)) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// a less than b so push it up the list\n\t\t\tif (a < b) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// b is less than a so push it up the list\n\t\t\tif (b < a) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t};\n\n\t// const sortModels = (name, modelArray) => {\n\t//   return modelArray.sort((a, b) => {\n\t//     // if name is undefined then push it to the bottom of the list\n\t//     let aName = get(a, name);\n\t//     let bName = get(b, name);\n\t//     if (bName === undefined) {\n\t//       return -1;\n\t//     }\n\n\t//     if (aName < bName) {\n\t//       return -1;\n\t//     }\n\n\t//     if (aName > bName) {\n\t//       return 1;\n\t//     }\n\n\t//     return 0;\n\t//   });\n\t// };\n});","define('busy-app/components/dialogs/tab-header-dialog', ['exports', 'busy-app/utils/docs', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _docs, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttitle: null,\n\t\tsubTitle: null,\n\t\tnoDate: false,\n\t\tstart: null,\n\t\tend: null,\n\n\t\tonSelectTab: null,\n\t\tonSelectOption: null,\n\n\t\tselectOptions: null,\n\t\tcurrentOption: null,\n\n\t\ttabOptions: null,\n\t\tcurrentTab: null,\n\t\tcreateTimeEntryConfig: null,\n\t\tbuttonOptions: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tEmber.$('body').addClass('tab-dialog');\n\t\t},\n\n\n\t\t_selectOptions: Ember.computed('selectOptions.[]', 'currentOption', function () {\n\t\t\treturn this.setSelected(this.get('selectOptions'), this.get('currentOption'));\n\t\t}),\n\n\t\t_tabOptions: Ember.computed('tabOptions.[]', 'currentTab', function () {\n\t\t\treturn this.setSelected(this.get('tabOptions'), this.get('currentTab'));\n\t\t}),\n\n\t\t_dateTitle: Ember.computed('start', 'end', 'noDate', function () {\n\t\t\tif (this.get('noDate')) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tvar start = this.get('start');\n\t\t\t\tvar end = this.get('end');\n\n\t\t\t\tvar startTime = _utils.Time.date(start).utc();\n\t\t\t\tvar endTime = _utils.Time.date(end).utc();\n\t\t\t\tvar currentTime = _utils.Time.date().utc();\n\n\t\t\t\tvar isDateRange = !startTime.isSame(endTime, 'day');\n\t\t\t\tvar isDifferentYear = !endTime.isSame(currentTime, 'year');\n\n\t\t\t\tvar dateRange = [startTime.format('MMM DD'), isDateRange ? endTime.format('MMM DD') : null].compact().join(' &ndash; ');\n\n\t\t\t\treturn [dateRange, isDifferentYear ? endTime.format('YYYY') : null].compact().join(', ');\n\t\t\t}\n\t\t}),\n\n\t\t_splitButtonOptions: Ember.computed('enableCsv', function () {\n\t\t\treturn {\n\t\t\t\tprimaryText: (0, _utils.loc)('Print'),\n\t\t\t\tprimaryAction: 'printAction',\n\t\t\t\tselectAction: 'onSplitButtonSelect',\n\t\t\t\tclassModifiers: 'white',\n\n\t\t\t\tselectOptions: [\n\t\t\t\t// EmberObject.create({ key: 'printAction', value: loc('Print') }),\n\t\t\t\tEmber.Object.create({ key: 'exportCSVAction', value: (0, _utils.loc)('Download (.csv)') })]\n\t\t\t};\n\t\t}),\n\n\t\tsetSelected: function setSelected(collection, selected) {\n\t\t\tif (Ember.isEmpty(collection) || Ember.isNone(selected)) {\n\t\t\t\treturn collection;\n\t\t\t}\n\n\t\t\treturn collection.map(function (item) {\n\t\t\t\titem.set('_selected', selected === item.key);\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tprintAction: function printAction() {\n\t\t\t\t//const $body = this.$().closest('body');\n\t\t\t\t//const $printNode = $body.find('.c-dialogs-fs-modal-dialog');\n\n\t\t\t\t_docs.default.print(); //$printNode);\n\t\t\t},\n\t\t\tselectOptionAction: function selectOptionAction(item) {\n\t\t\t\tthis.sendAction('onSelectOption', item);\n\t\t\t},\n\t\t\tselectTabAction: function selectTabAction(item) {\n\t\t\t\tthis.sendAction('onSelectTab', item);\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tEmber.$('body').removeClass('tab-dialog');\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\texportCSVAction: function exportCSVAction() {\n\t\t\t\tthis.sendAction('onExportCSV');\n\t\t\t},\n\t\t\tonSplitButtonSelect: function onSplitButtonSelect(item) {\n\t\t\t\t_logger.default.info(this, 'onSplitButtonSelect', item);\n\t\t\t\treturn this.send(Ember.get(item, 'key'));\n\t\t\t},\n\t\t\trefreshSync: function refreshSync() {\n\t\t\t\treturn this.sendAction('refreshSync');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/ember-chart', ['exports', 'ember-cli-chartjs/components/ember-chart'], function (exports, _emberChart) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberChart.default;\n    }\n  });\n});","define('busy-app/components/ember-date-range-picker', ['exports', '@busy-web/ember-date-time/components/ember-date-range-picker'], function (exports, _emberDateRangePicker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberDateRangePicker.default;\n    }\n  });\n});","define('busy-app/components/ember-date-time-picker', ['exports', '@busy-web/ember-date-time/components/ember-date-time-picker'], function (exports, _emberDateTimePicker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberDateTimePicker.default;\n    }\n  });\n});","define('busy-app/components/ember-jsignature', ['exports', 'ember-jsignature/components/ember-jsignature'], function (exports, _emberJsignature) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberJsignature.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog-positioned-container', ['exports', 'ember-modal-dialog/components/positioned-container'], function (exports, _positionedContainer) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _positionedContainer.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog/-basic-dialog', ['exports', 'ember-modal-dialog/components/basic-dialog'], function (exports, _basicDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _basicDialog.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog/-in-place-dialog', ['exports', 'ember-modal-dialog/components/in-place-dialog'], function (exports, _inPlaceDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _inPlaceDialog.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog/-liquid-dialog', ['exports', 'ember-modal-dialog/components/liquid-dialog'], function (exports, _liquidDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _liquidDialog.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog/-liquid-tether-dialog', ['exports', 'ember-modal-dialog/components/liquid-tether-dialog'], function (exports, _liquidTetherDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _liquidTetherDialog.default;\n    }\n  });\n});","define('busy-app/components/ember-modal-dialog/-tether-dialog', ['exports', 'ember-modal-dialog/components/tether-dialog'], function (exports, _tetherDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _tetherDialog.default;\n    }\n  });\n});","define('busy-app/components/ember-wormhole', ['exports', 'ember-wormhole/components/ember-wormhole'], function (exports, _emberWormhole) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberWormhole.default;\n    }\n  });\n});","define('busy-app/components/employee-selector', ['exports', '@busy-web/utils', 'busy-app/utils/debug', 'busy-app/utils/access'], function (exports, _utils, _debug, _access) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-employee-selector'],\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\n\t\theaderTitle: (0, _utils.loc)('Employees'),\n\n\t\tmodel: null,\n\t\tallowEditForAllPermission: false,\n\t\taccessRequired: null,\n\t\trequireMembers: false,\n\t\tallowCancel: false,\n\n\t\t__selectedMembers: null,\n\t\t__memberList: null,\n\t\t__restrictedMembers: null,\n\t\t__isSelectAll: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tEmber.set(this, '__memberList', []);\n\n\t\t\t// setting this to an non empty array tricks\n\t\t\t// the interface into not showing ui before\n\t\t\t// the restrictedMembers list is loaded.\n\t\t\tEmber.set(this, '__restrictedMembers', [1]);\n\n\t\t\tthis.setEmployees();\n\t\t},\n\n\n\t\tcanEdit: Ember.computed('allowEditForAllPermission', '__restrictedMembers.[]', function () {\n\t\t\t// override to allow edits when not all members are allowed\n\t\t\tif (Ember.get(this, 'allowEditForAllPermission')) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!(Ember.get(this, '__restrictedMembers.length') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\tif (Ember.isEmpty(Ember.get(this, 'model'))) {\n\t\t\t\tEmber.set(this, '__selectedMembers', []);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, '__selectedMembers', normalizeModels(Ember.get(this, 'model')));\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(this.get('accessRequired'))) {\n\t\t\t\tEmber.set(this, 'accessRequired', ['timeEvents', 'manageTimeEntries', 'manageEmployees']);\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, '__memberList'))) {\n\t\t\t\tthis.checkSelectedMembers();\n\t\t\t}\n\t\t},\n\t\tcheckSelectedMembers: function checkSelectedMembers() {\n\t\t\tvar _this = this;\n\n\t\t\tvar memberList = Ember.get(this, '__memberList');\n\t\t\tvar current = Ember.get(this, '__selectedMembers');\n\n\t\t\t// check for members the auth member cannot edit\n\t\t\tvar cannotRemove = current.filter(function (c) {\n\t\t\t\treturn Ember.isNone(memberList.find(function (m) {\n\t\t\t\t\treturn Ember.get(m, 'id') === Ember.get(c, 'id');\n\t\t\t\t}));\n\t\t\t});\n\t\t\tEmber.set(this, '__restrictedMembers', cannotRemove);\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'model'))) {\n\t\t\t\tmemberList.forEach(function (member) {\n\t\t\t\t\tvar memberFound = Ember.get(_this, 'model').findBy('id', Ember.get(member, 'id'));\n\t\t\t\t\tif (!Ember.isNone(memberFound)) {\n\t\t\t\t\t\tEmber.set(member, 'isSelected', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(member, 'isSelected', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tEmber.get(this, '__memberList').forEach(function (member) {\n\t\t\t\t\treturn Ember.set(member, 'isSelected', false);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tsetEmployees: function setEmployees() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// prevent api calls in components durring tests\n\t\t\treturn (0, _debug.component_safe_api)(function () {\n\t\t\t\treturn _this2._setEmployees();\n\t\t\t});\n\t\t},\n\t\t_setEmployees: function _setEmployees() {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn Ember.RSVP.resolve(Ember.get(this, 'auth.member')).then(function (authMember) {\n\t\t\t\treturn Ember.RSVP.resolve(Ember.get(_this3, 'auth.authMemberPosition')).then(function (permission) {\n\t\t\t\t\tvar positionIds = getAccessForPermision(Ember.get(_this3, 'access'), permission, Ember.get(_this3, 'accessRequired'));\n\t\t\t\t\tvar query = { _asc: ['first_name', 'last_name'], archived_on: null, deleted_on: null };\n\n\t\t\t\t\tif (Ember.get(_this3, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\n\t\t\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// load employees\n\t\t\t\t\treturn Ember.get(_this3, 'store').findWhereIn('member', 'position_id', positionIds, query).then(function (models) {\n\t\t\t\t\t\tmodels = models.toArray();\n\n\t\t\t\t\t\t// add auth member if has self but not same permission\n\t\t\t\t\t\tif (!models.find(function (member) {\n\t\t\t\t\t\t\treturn Ember.get(member, 'id') === Ember.get(authMember, 'id');\n\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\tif ((0, _access.levelSelf)(permission.get('timeEvents'))) {\n\t\t\t\t\t\t\t\tmodels.push(authMember);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tEmber.set(_this3, '__models', models);\n\n\t\t\t\t\t\tmodels = models.map(function (item) {\n\t\t\t\t\t\t\tvar json = item.toJSON({ includeId: true });\n\t\t\t\t\t\t\tjson.fullName = Ember.get(item, 'fullName');\n\t\t\t\t\t\t\treturn json;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// set members list\n\t\t\t\t\t\tEmber.set(_this3, '__memberList', models.sortBy('firstName', 'lastName'));\n\n\t\t\t\t\t\t// set selected for all members in __selectedMembers\n\t\t\t\t\t\t_this3.checkSelectedMembers();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\taddRemoveSelected: function addRemoveSelected() {\n\t\t\tvar memberList = Ember.get(this, '__memberList');\n\t\t\tvar cannotRemove = Ember.get(this, '__restrictedMembers') || [];\n\t\t\tvar selected = memberList.filter(function (m) {\n\t\t\t\treturn Ember.get(m, 'isSelected') === true;\n\t\t\t});\n\n\t\t\t// add selected members to restricted members list\n\t\t\tvar currentSelected = [].concat(cannotRemove, selected);\n\n\t\t\tEmber.set(this, '__selectedMembers', currentSelected.sortBy('firstName', 'lastName'));\n\t\t},\n\n\n\t\tactions: {\n\t\t\tdoneAction: function doneAction() {\n\t\t\t\tvar selected = Ember.get(this, '__selectedMembers');\n\t\t\t\tEmber.set(this, 'showEmployeeDialog', false);\n\n\t\t\t\tif (Ember.isEmpty(selected) && Ember.get(this, 'requireMembers')) {\n\t\t\t\t\tselected = normalizeModels(Ember.get(this, 'model'));\n\t\t\t\t\tEmber.set(this, '__selectedMembers', selected);\n\t\t\t\t\tthis.checkSelectedMembers();\n\t\t\t\t}\n\n\t\t\t\tselected = getModels(Ember.get(this, '__models'), selected);\n\t\t\t\tthis.sendAction('onDone', selected);\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tEmber.set(this, 'showEmployeeDialog', false);\n\n\t\t\t\tvar selected = normalizeModels(Ember.get(this, 'model'));\n\t\t\t\tEmber.set(this, '__selectedMembers', selected);\n\t\t\t\tthis.checkSelectedMembers();\n\n\t\t\t\tselected = getModels(Ember.get(this, '__models'), selected);\n\t\t\t\tthis.sendAction('onDone', selected);\n\t\t\t},\n\t\t\temployeeClicked: function employeeClicked(item) {\n\t\t\t\tvar isSelected = !Ember.get(item, 'isSelected');\n\t\t\t\tEmber.setProperties(item, { isSelected: isSelected });\n\t\t\t\tthis.addRemoveSelected();\n\t\t\t},\n\t\t\temployeeSelected: function employeeSelected() {\n\t\t\t\tthis.addRemoveSelected();\n\t\t\t},\n\t\t\tselectAllItems: function selectAllItems(isChecked) {\n\t\t\t\tvar memberList = Ember.get(this, '__memberList');\n\t\t\t\tmemberList.forEach(function (item) {\n\t\t\t\t\treturn Ember.set(item, 'isSelected', isChecked);\n\t\t\t\t});\n\n\t\t\t\tvar selected = getSelected(Ember.get(this, '__models'), memberList);\n\t\t\t\tEmber.set(this, '__selectedMembers', selected);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tvar normalizeModels = function normalizeModels(models) {\n\t\tif (!Ember.isEmpty(models)) {\n\t\t\treturn models.map(function (m) {\n\t\t\t\tif (m && m.toJSON) {\n\t\t\t\t\tvar json = m.toJSON({ includeId: true });\n\t\t\t\t\tjson.fullName = Ember.get(m, 'firstName') + ' ' + Ember.get(m, 'lastName');\n\t\t\t\t\treturn json;\n\t\t\t\t}\n\t\t\t\treturn m;\n\t\t\t});\n\t\t}\n\t\treturn [];\n\t};\n\n\tvar getSelected = function getSelected(members, list) {\n\t\tvar selected = list.filterBy('isSelected', true);\n\t\treturn getModels(members, selected);\n\t};\n\n\tvar getModels = function getModels(members, selected) {\n\t\treturn selected.map(function (s) {\n\t\t\treturn members.findBy('id', Ember.get(s, 'id'));\n\t\t});\n\t};\n\n\tfunction getAccessForPermision(accessService, permission) {\n\t\tvar accessRequired = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\t\t(true && !(!Ember.isNone(accessRequired) && Array.isArray(accessRequired)) && Ember.assert(\"accessRequired must be an array of strings\", !Ember.isNone(accessRequired) && Array.isArray(accessRequired)));\n\n\n\t\tvar accessPermission = getAccess(accessService, permission, accessRequired);\n\n\t\treturn Ember.get(accessService, 'auth.positions').sortBy('level').map(function (item) {\n\t\t\treturn includeId(accessPermission, permission, item);\n\t\t}).compact();\n\t}\n\n\tvar ALLOWED_PERMISSION = ['manageEmployees', 'manageTimeEntries', 'timeEvents'];\n\n\tfunction getAccess(accessService, permission, accessRequired) {\n\t\tvar defaultPerm = { self: false, same: false, lower: false, higher: false };\n\t\tif (!Ember.isNone(accessService)) {\n\t\t\treturn accessRequired.map(function (cp) {\n\t\t\t\tif (ALLOWED_PERMISSION.indexOf(cp) !== -1) {\n\t\t\t\t\treturn accessService.parseSetting(Ember.get(permission, cp));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}).reduce(function (a, b) {\n\t\t\t\tif (Ember.isNone(b)) {\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tself: a.self || b.self,\n\t\t\t\t\tsame: a.same || b.same,\n\t\t\t\t\tlower: a.lower || b.lower,\n\t\t\t\t\thigher: a.higher || b.higher\n\t\t\t\t};\n\t\t\t}, defaultPerm);\n\t\t} else {\n\t\t\treturn defaultPerm;\n\t\t}\n\t}\n\n\tfunction includeId(accessPermission, permission, item) {\n\t\tvar lower = accessPermission.lower && Ember.get(item, 'level') > Ember.get(permission, 'level');\n\t\tvar same = accessPermission.same && Ember.get(item, 'level') === Ember.get(permission, 'level');\n\t\tvar higher = accessPermission.higher && Ember.get(item, 'level') < Ember.get(permission, 'level');\n\n\t\tif (lower || higher || same) {\n\t\t\treturn Ember.get(item, 'id');\n\t\t}\n\t}\n});","define('busy-app/components/employees/edit-info-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-employees-employee-dialog-edit-details'],\n\n    auth: Ember.inject.service('auth'),\n    store: Ember.inject.service('store'),\n    access: Ember.inject.service('access'),\n    features: Ember.inject.service('features'),\n\n    showCompanyInfo: true,\n    positionsMenu: null,\n    member: null,\n\n    username: '',\n    firstName: '',\n    lastName: '',\n    memberNumber: '',\n    pendingEmail: '',\n    phone: '',\n    timeLocationRequired: 'AUTO',\n\n    init: function init() {\n      this._super();\n      this.setMemberInfo();\n      this.get('auth.isOwner');\n    },\n\n\n    canShowCompanyInfo: Ember.computed('access.auth.authmemberPosition.id', 'showCompanyInfo', 'member.id', function () {\n      if (this.get('showCompanyInfo') && (this.get('member.id') !== this.get('access.auth.authmemberPosition.id') || this.get('access').isOwner(this.get('member.id')))) {\n        return true;\n      }\n      return false;\n    }),\n\n    usernameWarning: Ember.computed('username', function () {\n      var username = this.get('username');\n\n      if (username !== this.get('member.username')) {\n        return 'Warning: User will be logged out if username is changed.';\n      }\n      return;\n    }),\n\n    setMemberInfo: Ember.observer('member', function () {\n      if (!Ember.isNone(this.get('member'))) {\n        this.set('username', this.get('member.username'));\n        this.set('firstName', this.get('member.firstName'));\n        this.set('lastName', this.get('member.lastName'));\n        this.set('memberNumber', this.get('member.memberNumber') || '');\n        this.set('phone', this.get('member.phone') || '');\n\n        if (this.get('member.pendingEmail')) {\n          this.set('email', this.get('member.pendingEmail'));\n        } else if (this.get('member.certifiedEmail')) {\n          this.set('email', this.get('member.certifiedEmail'));\n        }\n\n        // only allow changing the setting if the LD Pro feature flag is enabled\n        if (this.get('features.memberGpsSettingDevelopment') && this.get('features.memberGpsSetting')) {\n          this.set('timeLocationRequired', this.get('member.timeLocationRequired') || 'AUTO');\n        }\n      }\n    }),\n\n    gpsLocationMenu: Ember.computed('member.timeLocationRequired', function () {\n      var curentValue = this.get('member.timeLocationRequired');\n\n      var options = [Ember.Object.create({ key: 'YES', title: (0, _utils.loc)('Required'), _selected: curentValue === 'YES' }), Ember.Object.create({ key: 'AUTO', title: (0, _utils.loc)('Not Required'), _selected: curentValue === 'AUTO' }), Ember.Object.create({ key: 'NO', title: (0, _utils.loc)('Off'), _selected: curentValue === 'NO' })];\n\n      // If the account is not pro, the only option is the current value\n      if (!Ember.get(this, 'features.memberGpsSetting')) {\n        options.forEach(function (item) {\n          var _unselectable = Ember.get(item, 'key') !== curentValue;\n          Ember.setProperties(item, { _unselectable: _unselectable });\n        });\n      }\n\n      return options;\n    }),\n\n    validate: function validate(member) {\n      var email = this.get('email');\n\n      if (this.get('access').isOwner(member.get('id')) && Ember.isEmpty(email)) {\n        return Ember.RSVP.reject((0, _utils.loc)('Email is required for main account owner.'));\n      } else {\n        if (!Ember.isEmpty(email)) {\n          if (email !== member.get('certifiedEmail')) {\n            if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(email)) {\n              member.set('pendingEmail', email);\n            } else {\n              return Ember.RSVP.reject((0, _utils.loc)('Email must be a vaild email address.'));\n            }\n          }\n        } else if (Ember.isEmpty(email)) {\n          member.setProperties({\n            pendingEmail: null,\n            certifiedEmail: null\n          });\n        }\n      }\n\n      var phone = this.get('phone').trim();\n      if (!Ember.isEmpty(phone)) {\n        member.set('phone', phone);\n      } else if (!Ember.isNone(member.get('phone'))) {\n        member.set('phone', '_-NULL-_');\n      }\n\n      var memberNumber = this.get('memberNumber').trim();\n      if (!Ember.isEmpty(memberNumber)) {\n        member.set('memberNumber', memberNumber);\n      } else if (!Ember.isNone(member.get('memberNumber'))) {\n        member.set('memberNumber', '_-NULL-_');\n      }\n\n      var firstName = this.get('firstName').trim();\n      if (!Ember.isEmpty(firstName) && firstName !== member.get('firstName')) {\n        member.set('firstName', firstName);\n      } else if (Ember.isEmpty(this.get('firstName'))) {\n        return Ember.RSVP.reject((0, _utils.loc)('First Name is required'));\n      }\n\n      var lastName = this.get('lastName').trim();\n      if (!Ember.isEmpty(lastName) && lastName !== member.get('lastName')) {\n        member.set('lastName', lastName);\n      } else if (Ember.isEmpty(this.get('lastName'))) {\n        return Ember.RSVP.reject((0, _utils.loc)('Last Name is required'));\n      }\n\n      if (Ember.isNone(member.get('positionId'))) {\n        return Ember.RSVP.reject((0, _utils.loc)('Position must be set before saving'));\n      }\n      return Ember.RSVP.resolve(member);\n    },\n\n\n    actions: {\n      close: function close() {\n        this.sendAction('onClose');\n      },\n      selectPosition: function selectPosition(item) {\n        this.set('member.positionId', item.get('id'));\n        this.set('member.position', item);\n      },\n      selectGpsLocation: function selectGpsLocation(item) {\n        this.set('member.timeLocationRequired', item.get('key'));\n      },\n      save: function save() {\n        var _this = this;\n\n        this.set('usernameError', '');\n        return this.validate(this.get('member')).then(function (member) {\n          if (member) {\n            var username = _this.get('username').trim();\n            var email = _this.get('email');\n\n            if (!Ember.isEmpty(email) && email !== member.get('pendingEmail') && email !== member.get('certifiedEmail')) {\n              member.set('pendingEmail', email);\n            }\n            if (!Ember.isEmpty(username) && member.get('username') !== username && /^\\S{6}\\S*$/.test(username)) {\n              return _this.get('store').rpcRequest('account', 'username-available', { username: username }).then(function (data) {\n                if (data.data === false) {\n                  _this.set('usernameError', (0, _utils.loc)('This username is taken. Please choose another.'));\n                  return Ember.RSVP.reject((0, _utils.loc)('This username is taken. Please choose another.'));\n                } else {\n                  member.set('username', username);\n                  return member.save();\n                }\n              });\n            } else if (Ember.isEmpty(username)) {\n              return Ember.RSVP.reject((0, _utils.loc)('Username is required'));\n            } else if (!/^\\S{2}\\S*$/.test(username)) {\n              return Ember.RSVP.reject((0, _utils.loc)('Username must be at least 2 characters'));\n            } else if (member.get('hasDirtyAttributes')) {\n              return member.save();\n            } else {\n              return Ember.RSVP.resolve();\n            }\n          }\n        });\n      }\n    }\n  });\n});","define('busy-app/components/employees/edit-lock-date', ['exports', 'moment', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _moment, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tanalytics: Ember.inject.service('analytics'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * Public Properties\n   */\n\n\t\t/**\n   * @public\n   * @property classNames\n   * @type string[]\n   * @default v-employees-edit-lock-date\n   */\n\n\t\tclassNames: ['c-employees-edit-lock-date'],\n\n\t\t/**\n   * @public\n   * @property memberEntries\n   * @type Models.Member[]\n   */\n\t\tmemberEntries: null,\n\n\t\t/**\n   * @public\n   * @property totalRows\n   * @type number\n   */\n\t\ttotalRows: null,\n\n\t\t/**\n   * Private Properties\n   */\n\n\t\t/**\n   * @private\n   * @property lockDate\n   * @type Moment\n   */\n\t\tlockDate: null,\n\n\t\t/**\n   * @private\n   * @property format\n   * @type string\n   */\n\t\tformat: null,\n\n\t\t/**\n   * @private\n   * @property maxDate\n   * @type Moment\n   */\n\t\tmaxDate: null,\n\n\t\t/**\n   * @private\n   * @property showSaveConfirmOverlay\n   * @type boolean\n   * @default false\n   */\n\t\tshowSaveConfirmOverlay: false,\n\n\t\t/**\n   * @private\n   * @property showDeleteConfirmOverlay\n   * @type boolean\n   * @default false\n   */\n\t\tshowDeleteConfirmOverlay: false,\n\n\t\t/**\n   * Component Lifecycle\n   */\n\n\t\t/**\n   * @private\n   * @constructor\n   * @async\n   * @method init\n   */\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t_utils.Assert.isArray(this.get('memberEntries'));\n\t\t\t_utils.Assert.test('Must select a member', this.get('memberEntries.length'));\n\n\t\t\t// config for the date picker\n\t\t\tthis.set('format', _utils.Locale.format(\"ddd, MMM DD\", _moment.default.locale()));\n\t\t\tthis.set('maxDate', _utils.Time.date().add(-1, 'days').endOf('day').unix());\n\t\t\tthis.set('lockDate', this.getDefaultLockDate());\n\n\t\t\t// make sure every member has memberLock set\n\t\t\treturn Ember.RSVP.all(this.get('memberEntries').map(function (member) {\n\t\t\t\t_utils.Assert.isObject(member);\n\t\t\t\treturn function () {\n\t\t\t\t\treturn member.get('memberLock');\n\t\t\t\t};\n\t\t\t}));\n\t\t},\n\n\n\t\t/**\n   * Computed Properties\n   */\n\n\t\t/**\n   * Compute the end of the day for the current `lockDate`\n   *\n   * @public\n   * @property lockDateEnd\n   * @type {Moment}\n   */\n\t\tlockDateEnd: Ember.computed('lockDate', function () {\n\t\t\tvar lockDate = _utils.Time.date(this.get('lockDate'));\n\t\t\t_utils.Assert.isMoment(lockDate);\n\t\t\treturn lockDate.endOf('day');\n\t\t}),\n\n\t\t/**\n   * Compute the timestamp for end of the day for the current `lockDate`\n   *\n   * @public\n   * @property lockDateEndTimeStamp\n   * @type {Moment}\n   */\n\t\tlockDateEndTimeStamp: Ember.computed('lockDateEnd', function () {\n\t\t\t_utils.Assert.isMoment(this.get('lockDateEnd'));\n\t\t\treturn this.get('lockDateEnd').unix();\n\t\t}),\n\n\t\t/**\n   * Compute an array of memberId's based on the `memberEntries` attribute\n   *\n   * @public\n   * @property memberIds\n   * @type {string[]}\n   */\n\t\tmemberIds: Ember.computed.mapBy('memberEntries', 'id'),\n\n\t\t/**\n   * Confirmation message to be shown when deleting lock dates\n   *\n   * @public\n   * @property confirmDeleteMessage\n   * @type {string}\n   */\n\t\tconfirmDeleteMessage: Ember.computed('memberEntries.[]', function () {\n\t\t\tvar numMembers = this.get('memberEntries.length');\n\n\t\t\treturn (0, _utils.loc)(\"Are you sure you want to delete the lock date for %@ employees?\", numMembers);\n\t\t}),\n\n\t\t// /**\n\t\t//  * Warning message to be shown regarding members with lock dates newer than the selected lock date\n\t\t//  *\n\t\t//  * @public\n\t\t//  * @property membersWithNewerLocksWarning\n\t\t//  * @type {string}\n\t\t//  */\n\t\t// membersWithNewerLocksWarning: computed('membersWithNewerLocks.[]', function()\n\t\t// {\n\t\t// \treturn loc(`Selected employee has a lock date more recent than the selected date`);\n\t\t// }),\n\n\t\t/**\n   * Warning message to be shown regarding members with open entries older than the selected lock date\n   *\n   * @public\n   * @property membersWithOlderOpenEntries\n   * @type {string}\n   */\n\t\tmembersWithOlderOpenEntriesWarning: Ember.computed('membersWithOlderOpenEntries.[]', function () {\n\t\t\tvar lockDate = _utils.Time.date(this.get('lockDate'));\n\n\t\t\t_utils.Assert.isMoment(lockDate);\n\n\t\t\tvar formattedDate = _utils.Time.timeFormat(lockDate.unix(), \"MMMM DD\");\n\t\t\treturn (0, _utils.loc)(\"Open time entries on or before %@ are preventing the lock date from being moved for\", [formattedDate]);\n\t\t}),\n\n\t\t// /**\n\t\t//  * Filtered collection of members who have a lock date newer than the selected lock date\n\t\t//  *\n\t\t//  * @public\n\t\t//  * @property membersWithNewerLocks\n\t\t//  * @type {Models.Member[]}\n\t\t//  */\n\t\t// membersWithNewerLocks: computed('memberEntries.@each.memberLock', 'lockDateEnd', function()\n\t\t// {\n\t\t// \tconst newLockDate = this.get('lockDateEnd');\n\t\t// \tAssert.isMoment(newLockDate);\n\t\t//\n\t\t// \treturn this.get('memberEntries').filter((member) =>\n\t\t// \t{\n\t\t// \t\tconst memberLock = member.get('memberLock');\n\t\t//\n\t\t// \t\tif (isNone(memberLock))\n\t\t// \t\t{\n\t\t// \t\t\treturn false;\n\t\t// \t\t}\n\t\t// \t\telse\n\t\t// \t\t{\n\t\t// \t\t\tconst currentTimestamp = memberLock.get('effectiveDate');\n\t\t// \t\t\tconst currentLockDate = Time.date(currentTimestamp);\n\t\t// \t\t\tAssert.isMoment(currentLockDate);\n\t\t//\n\t\t// \t\t\treturn currentLockDate.isAfter(newLockDate);\n\t\t// \t\t}\n\t\t//\n\t\t// \t});\n\t\t// }),\n\n\n\t\t// /**\n\t\t//  * \"And More\" list of membersWithNewerLocks\n\t\t//  *\n\t\t//  * @public\n\t\t//  * @property membersWithNewerLocksList\n\t\t//  * @type {Models.Member[]}\n\t\t//  */\n\t\t// membersWithNewerLocksList: computed('membersWithNewerLocks', function()\n\t\t// {\n\t\t// \tconst items = this.get('membersWithNewerLocks').map((member) => {\n\t\t// \t\tconst formattedDate = Time.date(member.get('memberLock.effectiveDate')).format('L');\n\t\t//\n\t\t// \t\treturn `${formattedDate} - ${member.get('fullName')}`;\n\t\t// \t});\n\t\t//\n\t\t// \treturn this.truncateArrayToPlusMore(items);\n\t\t// }),\n\n\n\t\t/**\n   * Filtered collection of members with time entries opened before the selected lock date\n   *\n   * @public\n   * @property getMembersWithConflictingOpenEntries\n   * @type {Models.Member[]}\n   */\n\t\tmembersWithOlderOpenEntries: Ember.computed('memberEntries.@each.openEntry', 'lockDateEnd', function () {\n\t\t\tvar lockDateEndUnix = this.get('lockDateEnd').unix();\n\n\t\t\treturn this.get('memberEntries').filter(function (member) {\n\t\t\t\tvar openEntry = member.get('openEntry');\n\n\t\t\t\tif (!Ember.isNone(openEntry) && openEntry.get('startTime') <= lockDateEndUnix) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * \"And More\" list of membersWithOlderOpenEntries\n   *\n   * @public\n   * @property membersWithOlderOpenEntriesList\n   * @type {Models.Member[]}\n   */\n\t\tmembersWithOlderOpenEntriesList: Ember.computed('membersWithOlderOpenEntries.[]', function () {\n\t\t\tvar items = this.get('membersWithOlderOpenEntries').mapBy('fullName');\n\n\t\t\treturn this.truncateArrayToPlusMore(items, 3, 2);\n\t\t}),\n\n\t\t/**\n   * Collection of members who have fatal errors\n   *\n   * @public\n   * @property membersNotUpdateable\n   * @type {Models.Member[]}\n   */\n\t\tmembersNotUpdateable: Ember.computed('membersWithOlderOpenEntries', 'memberEntries', function () {\n\t\t\tvar membersWithOlderOpenEntries = this.get('membersWithOlderOpenEntries');\n\t\t\tvar invalidMemberIds = [];\n\n\t\t\tif (!Ember.isNone(membersWithOlderOpenEntries) && membersWithOlderOpenEntries.get('length')) {\n\t\t\t\tinvalidMemberIds = invalidMemberIds.concat(membersWithOlderOpenEntries.mapBy('id'));\n\t\t\t}\n\n\t\t\t// filter to members who can't be updated\n\t\t\treturn this.get('memberEntries').filter(function (member) {\n\t\t\t\treturn invalidMemberIds.includes(member.get('id'));\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Collection of members who are valid to be updated\n   *\n   * @public\n   * @property membersUpdateable\n   * @type {Models.Member[]}\n   */\n\t\tmembersUpdateable: Ember.computed('membersNotUpdateable', 'memberEntries', function () {\n\t\t\tvar membersNotUpdateable = this.get('membersNotUpdateable');\n\t\t\tvar invalidMemberIds = membersNotUpdateable.mapBy('id');\n\n\t\t\t// remove members who can't be updated\n\t\t\treturn this.get('memberEntries').reject(function (member) {\n\t\t\t\treturn invalidMemberIds.includes(member.get('id'));\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Private Methods\n   */\n\n\t\t/**\n   * Update memberLocks with the selected `effectiveDate`\n   *\n   * @private\n   * @method updateMemberLocks\n   * @async\n   * @chainable\n   * @return {Models.MemberLock[]}\n   */\n\t\tupdateMemberLocks: function updateMemberLocks() {\n\t\t\tvar effectiveDate = this.get('lockDateEnd').unix();\n\t\t\tvar members = this.get('membersUpdateable');\n\n\t\t\tthis.get('busySave').showSavingMessage('Saving');\n\n\t\t\tthis.analyticsEvent('LOCK_DATE_SUBMIT', members.mapBy('id'));\n\n\t\t\treturn this.saveMemberLocks(effectiveDate, members);\n\t\t},\n\n\n\t\t/**\n   * Update memberLocks with `null` values for the `effectiveDate`\n   *\n   * @private\n   * @method deleteMemberLocks\n   * @async\n   * @chainable\n   * @return {Models.MemberLock[]}\n   */\n\t\tdeleteMemberLocks: function deleteMemberLocks() {\n\t\t\tvar deletedValue = '_-NULL-_';\n\n\t\t\tthis.get('busySave').showSavingMessage('Deleting');\n\n\t\t\tthis.analyticsEvent('LOCK_DATE_CANCEL', this.get('memberEntries').mapBy('id'));\n\n\t\t\treturn this.saveMemberLocks(deletedValue, this.get('memberEntries')).then(function () {\n\t\t\t\treturn (0, _utils.loc)('Deleted');\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Calls API on `member-lock`\n   * Submit updated memberLocks to the server\n   *\n   * @private\n   * @method deleteMemberLocks\n   * @param effectiveDate {number}\n   * @param members {Models.Member[]}\n   * @async\n   * @chainable\n   * @return {Models.MemberLock[]}\n   */\n\t\tsaveMemberLocks: function saveMemberLocks(effectiveDate, members) {\n\t\t\tvar promises = members.map(function (member) {\n\t\t\t\treturn member.updateMemberLock(effectiveDate);\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promises).catch(function (err) {\n\t\t\t\t_logger.default.error('EditLockDate', 'saveMemberLocks', { effectiveDate: effectiveDate, members: members, err: err });\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Determine the appropriate default date to for the date picker.\n   * If there's more than one member, use yesterday, otherwise use the current lock date.\n   *\n   * @private\n   * @method getDefaultLockDate\n   * @return {Moment}\n   */\n\t\tgetDefaultLockDate: function getDefaultLockDate() {\n\t\t\treturn _utils.Time.date().add(-1, 'days').endOf('day').unix();\n\t\t},\n\n\n\t\t/**\n   * Is `lockDateEnd` newer than yesterday?\n   *\n   * @private\n   * @method isTooNew\n   * @return {boolean}\n   */\n\t\tisTooNew: function isTooNew() {\n\t\t\tvar yesterday = _utils.Time.date().add('-1', 'days').endOf('day');\n\t\t\treturn this.get('lockDateEnd').isAfter(yesterday);\n\t\t},\n\n\n\t\t/**\n   * Return a trancated array. Last element shows number how many were suppressed.\n   *\n   * @public\n   * @method truncateArrayToPlusMore\n   * @param items {string[]}\n   * @param [limit=3] {number} Only truncate if there are more than this many items\n   * @param [showNum=2] {number} How many items to show if truncation is trigged\n   */\n\t\ttruncateArrayToPlusMore: function truncateArrayToPlusMore(items) {\n\t\t\tvar limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n\t\t\tvar showNum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;\n\n\t\t\t_utils.Assert.isArray(items);\n\t\t\t_utils.Assert.isInteger(limit);\n\t\t\t_utils.Assert.isInteger(showNum);\n\n\t\t\t_utils.Assert.test('limit must be gt 0', limit > 0);\n\t\t\t_utils.Assert.test('showNum must be gt 0', showNum > 0);\n\n\t\t\tvar numItems = items.length;\n\n\t\t\tif (items.length > limit && items.length > showNum) {\n\t\t\t\tvar numMoreItems = numItems - showNum;\n\n\t\t\t\titems = items.slice(0, showNum).concat((0, _utils.loc)(\"+ %@ more\", [numMoreItems]));\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method getConflictWarnings\n   * @return {string[]}\n   */\n\t\tgetConflictWarnings: function getConflictWarnings() {\n\t\t\t// const membersWithNewerLocks = this.get('membersWithNewerLocks');\n\t\t\tvar membersWithOlderOpenEntries = this.get('membersWithOlderOpenEntries');\n\t\t\tvar warningMessages = [];\n\n\t\t\t// if (!isNone(membersWithNewerLocks) && membersWithNewerLocks.get('length') > 0)\n\t\t\t// {\n\t\t\t// \tconst items = this.get('membersWithNewerLocksList');\n\t\t\t// \tconst message = this.get('membersWithNewerLocksWarning');\n\t\t\t//\n\t\t\t// \twarningMessages.push(EmberObject.create({ items, message }));\n\t\t\t// }\n\n\t\t\tif (!Ember.isNone(membersWithOlderOpenEntries) && membersWithOlderOpenEntries.get('length') > 0) {\n\t\t\t\tvar items = this.get('membersWithOlderOpenEntriesList');\n\t\t\t\tvar message = this.get('membersWithOlderOpenEntriesWarning');\n\n\t\t\t\twarningMessages.push(Ember.Object.create({ items: items, message: message }));\n\t\t\t}\n\n\t\t\treturn warningMessages;\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method analyticsEvent\n   * @async\n   */\n\t\tanalyticsEvent: function analyticsEvent(type, targetMemberIds) {\n\t\t\tvar typeMap = {\n\t\t\t\t'LOCK_DATE_SUBMIT': 80,\n\t\t\t\t'LOCK_DATE_CANCEL': 81\n\t\t\t};\n\t\t\tvar navSource = window.location.pathname;\n\n\t\t\t_utils.Assert.isString(type);\n\t\t\t_utils.Assert.isArray(targetMemberIds);\n\t\t\t_utils.Assert.isInteger(typeMap[type]);\n\n\t\t\treturn this.get('analytics').addEvent(typeMap[type], { navSource: navSource, targetMemberIds: targetMemberIds });\n\t\t},\n\n\n\t\t/**\n   * Dialog Controls\n   */\n\n\t\t/**\n   * @private\n   * @method openDeleteConfirmOverlay\n   */\n\t\topenDeleteConfirmOverlay: function openDeleteConfirmOverlay() {\n\t\t\treturn this.set('showDeleteConfirmOverlay', true);\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method closeDeleteConfirmOverlay\n   */\n\t\tcloseDeleteConfirmOverlay: function closeDeleteConfirmOverlay() {\n\t\t\treturn this.set('showDeleteConfirmOverlay', false);\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method openSaveConfirmOverlay\n   */\n\t\topenSaveConfirmOverlay: function openSaveConfirmOverlay() {\n\t\t\treturn this.set('showSaveConfirmOverlay', true);\n\t\t},\n\n\n\t\t/**\n   * @private\n   * @method closeSaveConfirmOverlay\n   */\n\t\tcloseSaveConfirmOverlay: function closeSaveConfirmOverlay() {\n\t\t\treturn this.set('showSaveConfirmOverlay', false);\n\t\t},\n\n\n\t\t/**\n   * Action Events\n   */\n\n\t\tactions: {\n\n\t\t\t/**\n    * @event onClose\n    */\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\treturn this.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * @event onDelete\n    * @param busySave {Components.BusySave}\n    */\n\t\t\tdeleteAction: function deleteAction(busySave) {\n\t\t\t\tthis.set('busySave', busySave);\n\t\t\t\treturn this.deleteMemberLocks();\n\t\t\t},\n\n\n\t\t\t/**\n    * @event onSave\n    * @param busySave {Components.BusySave}\n    */\n\t\t\tsaveAction: function saveAction(busySave) {\n\t\t\t\tthis.set('busySave', busySave);\n\n\t\t\t\t// check for fatal errors\n\t\t\t\tif (this.isTooNew()) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Lock date must be earlier than today\"));\n\t\t\t\t}\n\n\t\t\t\tvar warningMessages = this.getConflictWarnings();\n\t\t\t\tif (warningMessages.length) {\n\t\t\t\t\tthis.set('warningMessages', warningMessages);\n\t\t\t\t\treturn this.openSaveConfirmOverlay();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.updateMemberLocks();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @event saveConfirmAccepted\n    */\n\t\t\tsaveConfirmAccepted: function saveConfirmAccepted() {\n\t\t\t\tthis.closeSaveConfirmOverlay();\n\t\t\t\treturn this.updateMemberLocks(this.get('lockDateEnd'));\n\t\t\t},\n\n\n\t\t\t/**\n    * @event saveConfirmDeclined\n    */\n\t\t\tsaveConfirmDeclined: function saveConfirmDeclined() {\n\t\t\t\tthis.closeSaveConfirmOverlay();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/edit-photo-dialog', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    member: null,\n\n    actions: {\n      close: function close() {\n        this.get('member').rollbackAttributes();\n        this.sendAction('onClose');\n      },\n      savePhoto: function savePhoto() {\n        return this.get('member').save();\n      },\n      imageChange: function imageChange(file) {\n        this.set('member.image', file);\n      }\n    }\n  });\n});","define('busy-app/components/employees/employee-info', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-employees-employee-details'],\n\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n    router: Ember.inject.service('router'),\n    toggle: Ember.inject.service('toggle'),\n    store: Ember.inject.service(),\n    access: Ember.inject.service(),\n    subscription: Ember.inject.service(),\n\n    showEditDialog: false,\n    showPassDialog: false,\n    showPhotoDialog: false,\n    showCompanyInfo: true,\n    isArchived: false,\n\n    member: null,\n    positionsMenu: null,\n\n    allowProOverride: false,\n\n    transferHeader: (0, _utils.loc)('Transfer Ownership'),\n    transferMessage: (0, _utils.loc)('Are you sure you want to re-assign control of this company account to another person?'),\n\n    init: function init() {\n      this._super();\n      this.loadPositions();\n      this.getAdminMembers();\n      if (this.get('features.allowSubscriptionOverride')) {\n        var allowProOverride = _utils.LocalStorage.getProperty('x-allow-override-pro') === \"true\";\n        if (!Ember.isNone(allowProOverride)) {\n          this.set('allowProOverride', allowProOverride);\n        }\n      }\n    },\n\n\n    timeFormat: Ember.computed(function () {\n      var isDecimal = parseInt(_utils.Time.getHoursFormat(), 10) === 20;\n      return [Ember.Object.create({ key: 10, value: \"00:00\", _selected: !isDecimal }), Ember.Object.create({ key: 20, value: \"0.00\", _selected: isDecimal })];\n    }),\n\n    isSelf: Ember.computed('member.id', 'auth.member.id', function () {\n      if (!Ember.isNone(this.get('member.id')) && this.get('auth.member.id')) {\n        return this.get('auth.member.id') === this.get('member.id');\n      }\n      return false;\n    }),\n\n    isOwner: Ember.computed('member.id', 'auth.organization.ownedBy', function () {\n      return this.get('member.id') === this.get('auth.organization.ownedBy');\n    }),\n\n    saveMember: function saveMember() {\n      return this.get('member').save();\n    },\n\n\n    loadPositions: Ember.observer('auth.positions.@each.id', 'member.id', 'auth.authMemberPosition.id', function () {\n      if (!Ember.isNone(this.get('member.positionId')) && !Ember.isEmpty(this.get('auth.positions'))) {\n\n        var memberPosition = this.get('auth.positions').findBy('id', this.get('authmember.positionId'));\n\n        if (!Ember.isNone(memberPosition) && !Ember.isNone(memberPosition.get('id'))) {\n          this.set('member.position', memberPosition);\n        }\n\n        var authPosition = this.get('auth.authMemberPosition');\n        if (!Ember.isNone(authPosition) && !Ember.isNone(authPosition.get('id'))) {\n          var pos = this.get('auth.positions').filter(function (item) {\n            return authPosition.get('level') <= item.get('level');\n          });\n\n          this.set('positionsMenu', pos);\n        }\n      }\n    }),\n\n    overridePro: Ember.observer('allowProOverride', function () {\n      if (this.get('features.allowSubscriptionOverride')) {\n        _utils.LocalStorage.setProperty('x-allow-override-pro', this.get('allowProOverride'));\n        if (this.get('allowProOverride')) {\n          this.get('features').enable('overrides/pro');\n        } else {\n          this.get('features').disable('overrides/pro');\n        }\n        this.get('toggle').getAllFlags();\n      }\n    }),\n\n    getAdminMembers: function getAdminMembers() {\n      var _this = this;\n\n      var adminPosition = this.get('auth.positions').filter(function (pos) {\n        if (pos.get('title').toLowerCase() === 'admin') {\n          return pos;\n        }\n      });\n\n      var adminMembers = [];\n\n      this.get('store').findAll('member', { archived_on: null }).then(function (members) {\n\n        members.sortBy('firstName').forEach(function (member) {\n          if (member.get('positionId') === adminPosition[0].get('id') && !_this.get('access').isOwner(member.get('id'))) {\n            if (!member.get('pendingEmail') && member.get('certifiedEmail')) {\n              adminMembers.push(member);\n            }\n          }\n        });\n      });\n\n      this.set('adminMembers', adminMembers);\n    },\n\n\n    hideTransferFooter: Ember.computed('adminMembers', function () {\n      return this.get('adminMembers.length') < 1;\n    }),\n\n    transferOwnership: function transferOwnership() {\n      var _this2 = this;\n\n      var newOwnerId = this.get('selectedTransferMemberId');\n\n      this.get('store').find('organization', this.get('auth.organization.id')).then(function (org) {\n        org.set('ownedBy', newOwnerId);\n        org.save().then(function () {\n          _this2.setProperties({\n            showConfirmTransferDialog: false,\n            showTransferDialog: false\n          });\n        });\n      });\n    },\n\n\n    actions: {\n      openEditDialog: function openEditDialog() {\n        this.set('showEditDialog', true);\n      },\n      cancelEditDetails: function cancelEditDetails() {\n        this.get('member').rollbackAttributes();\n        this.set('showEditDialog', false);\n      },\n      openPassDialog: function openPassDialog() {\n        this.set('showPassDialog', true);\n      },\n      cancelResetPass: function cancelResetPass() {\n        this.get('member').rollbackAttributes();\n        this.set('showPassDialog', false);\n      },\n      openPinDialog: function openPinDialog() {\n        this.set('showPinDialog', true);\n      },\n      cancelResetPin: function cancelResetPin() {\n        this.get('member').rollbackAttributes();\n        this.set('showPinDialog', false);\n      },\n      openPhotoDialog: function openPhotoDialog() {\n        this.set('showPhotoDialog', true);\n      },\n      closePhotoDialog: function closePhotoDialog() {\n        this.set('showPhotoDialog', false);\n      },\n      changeTimeFormat: function changeTimeFormat(item) {\n        _utils.Time.setHoursFormat(item.get('key'));\n      },\n      navigateToSubscription: function navigateToSubscription() {\n        return this.get('router').transitionTo('company-settings', { queryParams: { bc_tab: 'subscription' } });\n      },\n      openTransferDialog: function openTransferDialog() {\n        this.set('showTransferDialog', true);\n      },\n      closeTransferDialog: function closeTransferDialog() {\n        this.set('showTransferDialog', false);\n      },\n      saveTransferOwner: function saveTransferOwner(dialog) {\n        this.transferOwnership();\n      },\n      openConfirmTransferDialog: function openConfirmTransferDialog() {\n        this.set('showConfirmTransferDialog', true);\n      },\n      closeConfirmTransferDialog: function closeConfirmTransferDialog() {\n        this.set('showConfirmTransferDialog', false);\n      },\n      setSelectedTransferMember: function setSelectedTransferMember(value) {\n        this.set('selectedTransferMemberId', value);\n      }\n    }\n  });\n});","define('busy-app/components/employees/import-employees', ['exports', 'busy-app/utils/employee-csv-import', '@busy-web/utils'], function (exports, _employeeCsvImport, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: [\"c-employees-import-employees\"],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\tmodel: null,\n\t\timportMembers: null,\n\n\t\tshowImportError: false,\n\t\tshowMapping: false,\n\t\tshowPreview: false,\n\t\tshowPostReview: false,\n\n\t\timportProgress: (0, _utils.loc)('Saving'),\n\n\t\timportErrorMessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\t// prime the call to subscriptionMembersLeft.\n\t\t\tthis.get('subscription.membersAvailable');\n\t\t\tthis.setupButtons();\n\t\t},\n\t\tsetupButtons: function setupButtons() {\n\t\t\tthis.set('buttonInfo1', [{ action: this.get('actions.closeImportAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo2', [{ action: this.get('actions.openPreviewAction'), color: 'blue', text: (0, _utils.loc)('Next'), target: this }, { action: this.get('actions.closeMappingAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo3', [{ action: this.get('actions.openPostReviewAction'), color: 'blue', text: (0, _utils.loc)('Next'), target: this }, { action: this.get('actions.closePreviewAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo4', [{ action: this.get('actions.saveAction'), color: 'blue', text: (0, _utils.loc)('Save'), target: this }, { action: this.get('actions.closePostReviewAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfoError', [{ action: this.get('actions.closeErrorAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t},\n\t\tsendCsvEmail: function sendCsvEmail() {\n\t\t\tvar _this = this;\n\n\t\t\tvar members = this.get('importMembers.model');\n\t\t\tvar memberList = [];\n\n\t\t\tmembers.forEach(function (member) {\n\t\t\t\tvar memberObj = Ember.Object.create({\n\t\t\t\t\tfirst_name: member.get('firstName'),\n\t\t\t\t\tlast_name: member.get('lastName'),\n\t\t\t\t\tusername: member.get('username'),\n\t\t\t\t\tpassword: member.get('password'),\n\t\t\t\t\temail: member.get('email')\n\t\t\t\t});\n\t\t\t\tmemberList.pushObject(memberObj);\n\t\t\t});\n\n\t\t\tthis.get('store').rpcRequest('account', 'company-csv-list', { member_list: memberList }).then(function () {\n\t\t\t\t_this.get('subscription').reloadSubscriptionSize();\n\t\t\t});\n\t\t},\n\t\tstripeUsersLeft: function stripeUsersLeft() {\n\t\t\treturn this.get('subscription.membersAvailable');\n\t\t},\n\t\tcloseImport: function closeImport() {\n\t\t\tthis.set('showImportError', false);\n\t\t\tthis.set('showMapping', false);\n\t\t\tthis.set('showPreview', false);\n\t\t\tthis.set('showPostReview', false);\n\t\t},\n\t\tshowError: function showError(err) {\n\t\t\tthis.set('importErrorMessage', err);\n\t\t\tthis.set('showImportError', true);\n\t\t},\n\t\tsetPosition: function setPosition(position, item) {\n\t\t\titem.set('positionId', position.get('id'));\n\t\t\titem.set('position', position.get('_model'));\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\tthis.get('analytics').openIntercom();\n\t\t\t},\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tthis.closeImport();\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tcloseErrorAction: function closeErrorAction() {\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t\tthis.set('showPostReview', false);\n\t\t\t\tthis.set('showImportError', false);\n\t\t\t},\n\t\t\topenMappingAction: function openMappingAction() {\n\t\t\t\tthis.set('showMapping', true);\n\t\t\t},\n\t\t\tcloseMappingAction: function closeMappingAction() {\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t},\n\t\t\topenPreviewAction: function openPreviewAction() {\n\t\t\t\tthis.get('importMembers').triggerParse();\n\t\t\t\tthis.set('showPreview', true);\n\t\t\t},\n\t\t\tclosePreviewAction: function closePreviewAction() {\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t},\n\t\t\topenPostReviewAction: function openPostReviewAction() {\n\t\t\t\tthis.set('showPostReview', true);\n\t\t\t},\n\t\t\tclosePostReviewAction: function closePostReviewAction() {\n\t\t\t\tthis.set('showPostReview', false);\n\t\t\t},\n\t\t\tuploadAction: function uploadAction(data) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tdata = data[0];\n\t\t\t\tvar owner = Ember.getOwner(this);\n\t\t\t\tvar csv = _employeeCsvImport.default.create(owner.ownerInjection());\n\n\t\t\t\tcsv.on('onFinishFileParse', function (headers, data) {\n\t\t\t\t\tif (data.length <= _this2.stripeUsersLeft()) {\n\t\t\t\t\t\t_this2.set('showMapping', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this2.showError((0, _utils.loc)('This file has more employees than your subscription allows.'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tcsv.on('progress', function (left, total) {\n\t\t\t\t\tif (total > 5) {\n\t\t\t\t\t\t_this2.set('importProgress', (0, _utils.loc)('Importing employees %@%', [Math.ceil((total - left) / total * 100)]));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tcsv.on('complete', function () {\n\t\t\t\t\t_this2.sendAction('onComplete', _this2.get('model'));\n\t\t\t\t});\n\n\t\t\t\tcsv.on('error', function (err) {\n\t\t\t\t\t_this2.showError(err);\n\t\t\t\t});\n\n\t\t\t\tcsv.run(data);\n\t\t\t\tthis.set('importMembers', csv);\n\t\t\t},\n\t\t\tsetPermisionFor: function setPermisionFor(member, position) {\n\t\t\t\tthis.setPosition(position, member);\n\t\t\t},\n\t\t\tselectListItem: function selectListItem(item) {\n\t\t\t\tthis.get('importMembers').setHeaderByListType(item);\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\treturn this.get('importMembers').saveModel().then(function () {\n\t\t\t\t\t_this3.set('model', _this3.get('importMembers.model'));\n\t\t\t\t\t_this3.sendCsvEmail();\n\t\t\t\t\treturn (0, _utils.loc)(\"Saved employees successfully!\");\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this3.closeImport();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/overtime-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-employees-employee-dialog-current-overtime'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\tshowCustom: false,\n\t\tmember: null,\n\n\t\tmindate: null,\n\t\tmaxdate: null,\n\t\tstartDateTime: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.set('overtimeChoice', [Ember.Object.create({ key: 'same-as-org', value: (0, _utils.loc)('Follow Company Settings'), _selected: true }), Ember.Object.create({ key: 'standard', value: (0, _utils.loc)('Standard') }), Ember.Object.create({ key: 'california', value: (0, _utils.loc)('California') }), Ember.Object.create({ key: 'custom', value: (0, _utils.loc)('Custom') })]);\n\n\t\t\tthis.set('overtimeIncreasesSaturday', this.getOverTimeIncreases());\n\t\t\tthis.set('overtimeIncreasesSunday', this.getOverTimeIncreases());\n\n\t\t\tthis.set('booleanList', [Ember.Object.create({ key: true, value: 'Yes', _selected: true }), Ember.Object.create({ key: false, value: 'No' })]);\n\n\t\t\tthis.set('customOvertime', Ember.Object.create({\n\t\t\t\tweeklyOvertime: true,\n\t\t\t\tdailyOvertime: true,\n\t\t\t\tdailyOvertimeTwo: true,\n\t\t\t\tseventhDayOvertime: true,\n\t\t\t\tseventhDayOvertimeTwo: true,\n\t\t\t\tsaturdayPayRate: true,\n\t\t\t\tsundayPayRate: true\n\t\t\t}));\n\n\t\t\tthis.set('mindate', _utils.Time.date().add(1, 'days').startOf('day').unix());\n\t\t\tthis.set('maxdate', _utils.Time.date().startOf('day').add(6, 'months').unix());\n\n\t\t\tvar date = _utils.Time.date().add(1, 'days').startOf('day').unix();\n\t\t\tthis.set('startDateTime', date);\n\n\t\t\tvar overtime = this.get('store').createRecord('member-overtime-period', {\n\t\t\t\tchangeDate: date,\n\t\t\t\tmemberId: this.get('member.id'),\n\t\t\t\tadhereToOrg: true\n\t\t\t});\n\n\t\t\tthis.set('overtimeRules', overtime);\n\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\t_utils.Assert.isObject(this.get('member'));\n\t\t\t\tthis.get('member.memberLock');\n\t\t\t}\n\t\t},\n\t\tgetOverTimeIncreases: function getOverTimeIncreases() {\n\t\t\treturn [Ember.Object.create({ key: 1.5, value: '1.5' }), Ember.Object.create({ key: 2, value: '2.0' })];\n\t\t},\n\t\tdisableOptions: function disableOptions(customOptions, overtime) {\n\t\t\tvar overtimeRules = this.get('store').createRecord('member-overtime-period', {\n\t\t\t\tchangeDate: overtime.get('changeDate'),\n\t\t\t\tmemberId: overtime.get('memberId'),\n\t\t\t\tadhereToOrg: overtime.get('adhereToOrg'),\n\t\t\t\tweeklyOvertime: overtime.get('weeklyOvertime'),\n\t\t\t\tdailyOvertime: overtime.get('dailyOvertime'),\n\t\t\t\tdailyDoubletime: overtime.get('dailyDoubletime'),\n\t\t\t\tseventhDayOvertime: overtime.get('seventhDayOvertime'),\n\t\t\t\tseventhDayDoubletime: overtime.get('seventhDayDoubletime'),\n\t\t\t\tsaturdayMultiplier: overtime.get('saturdayMultiplier'),\n\t\t\t\tsundayMultiplier: overtime.get('sundayMultiplier')\n\t\t\t});\n\n\t\t\tif (!customOptions.get('weeklyOvertime')) {\n\t\t\t\tovertimeRules.set('weeklyOvertime', null);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('dailyOvertime')) {\n\t\t\t\tovertimeRules.set('dailyOvertime', null);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('dailyOvertimeTwo')) {\n\t\t\t\tovertimeRules.set('dailyDoubletime', null);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('seventhDayOvertime')) {\n\t\t\t\tovertimeRules.set('seventhDayOvertime', false);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('seventhDayOvertimeTwo')) {\n\t\t\t\tovertimeRules.set('seventhDayDoubletime', null);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('saturdayPayRate')) {\n\t\t\t\tovertimeRules.set('saturdayMultiplier', null);\n\t\t\t}\n\n\t\t\tif (!customOptions.get('sundayPayRate')) {\n\t\t\t\tovertimeRules.set('sundayMultiplier', null);\n\t\t\t}\n\t\t\treturn overtimeRules;\n\t\t},\n\n\n\t\t/**\n   * If `feature.locks` is enabled and the member has a lock date set\n   *\n   * @property hasLockDate\n   * @type {Boolean}\n   * @default false\n   * @static\n   *\n   */\n\t\thasLockDate: Ember.computed('member.memberLock.effectiveDate', function () {\n\t\t\tvar lockDate = this.get('member.memberLock.effectiveDate');\n\t\t\treturn this.get('features.locks') && !Ember.isNone(lockDate);\n\t\t}),\n\n\t\t/**\n   * Is the currently selected `startTime` before the lock date\n   *\n   * @property isSelectedDateLocked\n   * @type {Boolean}\n   * @static\n   *\n   */\n\t\tisSelectedDateLocked: Ember.computed('features.locks', 'hasLockDate', 'member.memberLock.effectiveDate', 'startDateTime', function () {\n\t\t\treturn this.get('features.locks') && this.get('hasLockDate') && this.get('member').isDateLocked(this.get('startDateTime'));\n\t\t}),\n\n\t\tactions: {\n\t\t\tselectAction: function selectAction(action) {\n\t\t\t\tif (action.get('key') === 'custom') {\n\t\t\t\t\tthis.set('showCustom', true);\n\t\t\t\t\tthis.set('showSelectDate', true);\n\n\t\t\t\t\tthis.set('overtimeRules.adhereToOrg', false);\n\t\t\t\t\tthis.set('overtimeRules.weeklyOvertime', 40);\n\t\t\t\t\tthis.set('overtimeRules.dailyOvertime', 8);\n\t\t\t\t\tthis.set('overtimeRules.dailyDoubletime', 12);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayOvertime', true);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayDoubletime', 10);\n\t\t\t\t\tthis.set('overtimeRules.saturdayMultiplier', 1.5);\n\t\t\t\t\tthis.set('overtimeRules.sundayMultiplier', 1.5);\n\t\t\t\t} else if (action.get('key') === 'standard') {\n\t\t\t\t\tthis.set('showCustom', false);\n\t\t\t\t\tthis.set('showSelectDate', true);\n\n\t\t\t\t\tthis.set('overtimeRules.adhereToOrg', false);\n\t\t\t\t\tthis.set('overtimeRules.weeklyOvertime', 40);\n\t\t\t\t\tthis.set('overtimeRules.dailyOvertime', null);\n\t\t\t\t\tthis.set('overtimeRules.dailyDoubletime', null);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayOvertime', false);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayDoubletime', null);\n\t\t\t\t\tthis.set('overtimeRules.saturdayMultiplier', null);\n\t\t\t\t\tthis.set('overtimeRules.sundayMultiplier', null);\n\t\t\t\t} else if (action.get('key') === 'california') {\n\t\t\t\t\tthis.set('showCustom', false);\n\t\t\t\t\tthis.set('showSelectDate', true);\n\n\t\t\t\t\tthis.set('overtimeRules.adhereToOrg', false);\n\t\t\t\t\tthis.set('overtimeRules.weeklyOvertime', 40);\n\t\t\t\t\tthis.set('overtimeRules.dailyOvertime', 8);\n\t\t\t\t\tthis.set('overtimeRules.dailyDoubletime', 12);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayOvertime', true);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayDoubletime', 8);\n\t\t\t\t\tthis.set('overtimeRules.saturdayMultiplier', null);\n\t\t\t\t\tthis.set('overtimeRules.sundayMultiplier', null);\n\t\t\t\t} else if (action.get('key') === 'same-as-org') {\n\t\t\t\t\tthis.set('showCustom', false);\n\t\t\t\t\tthis.set('showSelectDate', false);\n\n\t\t\t\t\tthis.set('overtimeRules.adhereToOrg', true);\n\t\t\t\t\tthis.set('overtimeRules.weeklyOvertime', null);\n\t\t\t\t\tthis.set('overtimeRules.dailyOvertime', null);\n\t\t\t\t\tthis.set('overtimeRules.dailyDoubletime', null);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayOvertime', null);\n\t\t\t\t\tthis.set('overtimeRules.seventhDayDoubletime', null);\n\t\t\t\t\tthis.set('overtimeRules.saturdayMultiplier', null);\n\t\t\t\t\tthis.set('overtimeRules.sundayMultiplier', null);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsaveOvertime: function saveOvertime() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar overtime = this.get('overtimeRules');\n\t\t\t\tovertime.set('changeDate', _utils.Time.date(this.get('startDateTime')).startOf('day').unix());\n\n\t\t\t\tif (this.get('isSelectedDateLocked')) {\n\t\t\t\t\tthis.get('analytics').addEvent(84);\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Cannot set an effective date older than the lock date\"));\n\t\t\t\t}\n\n\t\t\t\tif (this.get('showCustom')) {\n\t\t\t\t\tvar options = this.get('customOvertime');\n\t\t\t\t\tovertime = this.disableOptions(options, overtime);\n\t\t\t\t}\n\n\t\t\t\treturn overtime.save().then(function () {\n\t\t\t\t\t_this.get('member._overtimePeriods.content').update();\n\t\t\t\t\treturn true;\n\t\t\t\t}).catch(function (result) {\n\t\t\t\t\tresult = Ember.Object.create(result);\n\t\t\t\t\tvar err = result.get('errors.0');\n\n\t\t\t\t\tif (err === 801) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"You can't save an overtime period for more than 90 days ago.\"));\n\t\t\t\t\t} else if (err === 902) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Daily Doubletime must be greater than daily overtime!\"));\n\t\t\t\t\t} else if (err === 903) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Seventh Day Doubletime must be less than daily doubletime!\"));\n\t\t\t\t\t} else if (err === 904) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"The provided Saturday Multiplier is not a valid option\"));\n\t\t\t\t\t} else if (err === 905) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"The provided Sunday Multiplier is not a valid option\"));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Something went wrong, please try again later.\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tsundayMultiplier: function sundayMultiplier(item) {\n\t\t\t\tthis.set('overtimeRules.sundayMultiplier', item.key);\n\t\t\t},\n\t\t\tsaturdayMultiplier: function saturdayMultiplier(item) {\n\t\t\t\tthis.set('overtimeRules.saturdayMultiplier', item.key);\n\t\t\t},\n\t\t\tseventhDayOvertime: function seventhDayOvertime(item) {\n\t\t\t\tthis.set('overtimeRules.seventhDayOvertime', item.key);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/overtime-preview-dialog', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tmodel: null,\n\t\teffectiveDate: null,\n\n\t\tactions: {\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/reset-pass-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-employees-employee-dialog-reset-pass'],\n\n    session: Ember.inject.service('session'),\n    auth: Ember.inject.service('auth'),\n    dataStore: Ember.inject.service('data-store'),\n\n    confirmPass: null,\n    member: null,\n    passMismatch: false,\n\n    passwordRequirement: Ember.computed('member.password', function () {\n      if (this.get('member.password.length') < 8) {\n        return 'Password must be at least 8 characters';\n      }\n      return;\n    }),\n\n    confirmPassword: function confirmPassword(password) {\n      var confirm = this.get('confirmPass');\n      if (password === confirm) {\n        return true;\n      }\n      return false;\n    },\n    authenticateSession: function authenticateSession(username, password) {\n      return this.get('session').authenticate('authenticator:basic', username, password);\n    },\n\n\n    actions: {\n      close: function close() {\n        this.sendAction('onClose');\n      },\n      save: function save() {\n        var _this = this;\n\n        var password = this.get('member.password');\n        if (password.length >= 8) {\n          if (this.confirmPassword(password)) {\n            var member = this.get('member');\n            member.set('password', password);\n            return member.save().then(function () {\n              if (_this.get('auth.member.id') === _this.get('member.id')) {\n                return _this.authenticateSession(_this.get('member.username'), _this.get('member.password'));\n              }\n            });\n          } else {\n            return Ember.RSVP.reject((0, _utils.loc)('Passwords do not match'));\n          }\n        } else {\n          return Ember.RSVP.reject((0, _utils.loc)('Password must be at least 8 Characters'));\n        }\n      }\n    }\n  });\n});","define('busy-app/components/employees/reset-pin-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-employees-employee-dialog-reset-pin'],\n\n\t\tsession: Ember.inject.service('session'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tdataStore: Ember.inject.service('data-store'),\n\n\t\tnewPin: null,\n\t\tconfirmPin: null,\n\t\tmember: null,\n\n\t\tconfirmPinNumber: function confirmPinNumber(pin) {\n\t\t\tvar confirm = this.get('confirmPin');\n\t\t\tif (pin === confirm) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tsave: function save() {\n\t\t\t\tvar pin = this.get('newPin');\n\t\t\t\tif (pin) {\n\t\t\t\t\tif (/^[0-9]{4}$/.test(pin)) {\n\t\t\t\t\t\tif (this.confirmPinNumber(pin)) {\n\t\t\t\t\t\t\tvar member = this.get('member');\n\t\t\t\t\t\t\tmember.set('pinCode', pin);\n\t\t\t\t\t\t\treturn member.save();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('PINs do not match'));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('newPin', null);\n\t\t\t\t\t\tthis.set('confirmPin', null);\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('PIN must be 4 numbers'));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar _member = this.get('member');\n\t\t\t\t\t_member.set('pinCode', '');\n\t\t\t\t\treturn _member.save();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/signature-dialog', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/employees/wage-dialog', ['exports', 'moment', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _moment, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tvar kMinDate = (0, _moment.default)('2016-01-01', 'YYYY-MM-DD').unix();\n\n\t/**\n  * `Components/Employees/WageDialog`\n  *\n  * @class WageDialog\n  * @namespace Components.Employees\n  * @extends Component\n  * @uses Services.PayPeriod\n  * @uses Services.Store\n  * @uses Utils.Assert\n  * @uses Utils.Loc\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-employees-employee-dialog-current-wage'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tpayPeriodUtils: Ember.inject.service('pay-period'),\n\t\tstore: Ember.inject.service('store'),\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\tmember: null,\n\t\twage: null,\n\t\twageHistory: null,\n\n\t\tshowDeleteConfirmationDialog: false,\n\t\tshowOverwriteConfirmationDialog: false,\n\n\t\tisEditMode: true,\n\t\tcurrentPayPeriod: null,\n\t\tnextPayPeriod: null,\n\t\tpreviousPayPeriod: null,\n\n\t\tdatePickerMode: 'Pay Period',\n\t\tdatePickerModePayPeriod: Ember.computed.equal('datePickerMode', 'Pay Period'),\n\t\tdatePickerModeCustom: Ember.computed.equal('datePickerMode', 'Custom'),\n\n\t\tcanDelete: Ember.computed('isEditMode', 'wage.isDefault', 'isSelectedDateLocked', function () {\n\t\t\tvar isEditMode = Ember.get(this, 'isEditMode');\n\t\t\tvar isDefaultWage = Ember.get(this, 'wage.isDefault');\n\t\t\tvar isSelectedDateLocked = Ember.get(this, 'isSelectedDateLocked');\n\t\t\tvar canDelete = isEditMode && !isDefaultWage && !isSelectedDateLocked;\n\n\t\t\treturn canDelete;\n\t\t}),\n\n\t\tcanSave: Ember.computed('features.wageEdit', 'isEditMode', function () {\n\t\t\tvar isEditMode = Ember.get(this, 'isEditMode');\n\t\t\tvar wageEdit = Ember.get(this, 'features.wageEdit');\n\n\t\t\tif (!isEditMode) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn wageEdit;\n\t\t\t}\n\t\t}),\n\n\t\tisEditDisabled: Ember.computed.not('canSave'),\n\n\t\thasLockDate: Ember.computed.bool('member.memberLock.effectiveDate'),\n\t\toldestAllowedDate: Ember.computed('hasLockDate', 'member.memberLock.effectiveDate', function () {\n\t\t\tvar oldestAlloweDate = kMinDate;\n\n\t\t\tif (Ember.get(this, 'hasLockDate')) {\n\t\t\t\tvar lockDate = Ember.get(this, 'member.memberLock.effectiveDate');\n\t\t\t\toldestAlloweDate = Math.max(oldestAlloweDate, lockDate);\n\t\t\t}\n\n\t\t\treturn oldestAlloweDate;\n\t\t}),\n\t\tnewestAllowedDate: Ember.computed.alias('nextPayPeriod.end'),\n\n\t\theaderTitle: Ember.computed('isEditMode', function () {\n\t\t\treturn Ember.get(this, 'isEditMode') ? 'Edit Wage' : 'Change Wage';\n\t\t}),\n\n\t\t/**\n   * Is the currently selected `startTime` before the lock date\n   *\n   * @property isSelectedDateLocked\n   * @type {Boolean}\n   * @static\n   */\n\t\tisSelectedDateLocked: Ember.computed('member.memberLock.effectiveDate', 'wage.changeDate', function () {\n\t\t\tvar wageDate = Ember.get(this, 'wage.changeDate');\n\t\t\tvar lockDate = Ember.get(this, 'member.memberLock.effectiveDate');\n\n\t\t\treturn wageDate < lockDate;\n\t\t}),\n\n\t\twageHistoryConflict: Ember.computed('wageHistory.[]', 'wage.{id,changeDate}', function () {\n\t\t\tvar wageHistory = Ember.get(this, 'wageHistory');\n\t\t\tvar wage = Ember.get(this, 'wage');\n\n\t\t\tif (Ember.isNone(wageHistory) || Ember.isNone(wage)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar wageId = Ember.get(wage, 'id');\n\t\t\tvar wageDate = Ember.get(wage, 'changeDate');\n\n\t\t\tvar wageHistoryConflict = wageHistory.find(function (model) {\n\t\t\t\treturn Ember.get(model, 'changeDate') === wageDate && Ember.get(model, 'id') !== wageId;\n\t\t\t});\n\n\t\t\treturn wageHistoryConflict;\n\t\t}),\n\n\t\tisPayPeriodSelected: Ember.computed('payPeriodOptions', 'wage.changeDate', function () {\n\t\t\tvar wageDate = Ember.get(this, 'wage.changeDate');\n\t\t\tvar payPeriodOptions = Ember.get(this, 'payPeriodOptions');\n\n\t\t\tif (Ember.isNone(payPeriodOptions) || Ember.isNone(wageDate)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar isPayPeriodSelected = payPeriodOptions.some(function (option) {\n\t\t\t\treturn wageDate === Ember.get(option, 'key');\n\t\t\t});\n\n\t\t\treturn isPayPeriodSelected;\n\t\t}),\n\n\t\tcurrentWageType: Ember.computed('wage.wageRate', function () {\n\t\t\tvar wageRate = Ember.get(this, 'wage.wageRate');\n\t\t\tvar options = { 10: 'Hourly', 30: 'Weekly', 40: 'Monthly', 50: 'Yearly' };\n\n\t\t\treturn options[wageRate];\n\t\t}),\n\n\t\twageTypeMenu: Ember.computed('wage.wageRate', function () {\n\t\t\tvar wageRate = Ember.get(this, 'wage.wageRate');\n\t\t\tvar options = [[10, 'Hourly'], [30, 'Weekly'], [40, 'Monthly'], [50, 'Yearly']];\n\n\t\t\tvar menu = options.map(function (_ref) {\n\t\t\t\tvar _ref2 = _slicedToArray(_ref, 2),\n\t\t\t\t    key = _ref2[0],\n\t\t\t\t    label = _ref2[1];\n\n\t\t\t\treturn Ember.Object.create({ key: key, value: (0, _utils.loc)(label), _selected: wageRate === key });\n\t\t\t});\n\n\t\t\treturn menu;\n\t\t}),\n\n\t\tdatePickerModeMenu: Ember.computed('datePickerMode', function () {\n\t\t\tvar datePickerMode = Ember.get(this, 'datePickerMode');\n\t\t\tvar options = ['Pay Period', 'Custom'];\n\n\t\t\tvar menu = options.map(function (key) {\n\t\t\t\treturn Ember.Object.create({ key: key, value: (0, _utils.loc)(key), _selected: datePickerMode === key });\n\t\t\t});\n\n\t\t\treturn menu;\n\t\t}),\n\n\t\tpayPeriodOptions: Ember.computed('auth.organizationPayPeriod.[]', 'wage.changeDate', 'oldestAllowedDate', 'wageHistory', function () {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'auth.organizationPayPeriod'))) {\n\t\t\t\tvar wage = Ember.get(this, 'wage');\n\t\t\t\tvar wageHistory = Ember.get(this, 'wageHistory');\n\t\t\t\tvar payPeriodOptions = this.getPayPeriodOptions(wage, wageHistory);\n\n\t\t\t\treturn payPeriodOptions;\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}),\n\n\t\tcurrentEffectivePayPeriod: Ember.computed('wage.changeDate', function () {\n\t\t\tvar changeDate = Ember.get(this, 'wage.changeDate');\n\t\t\tvar currentPayPeriod = Ember.get(this, 'payPeriodUtils').getPayPeriod(changeDate);\n\n\t\t\treturn currentPayPeriod;\n\t\t}),\n\n\t\tpreviousEffectivePayPeriod: Ember.computed('currentEffectivePayPeriod', function () {\n\t\t\tvar currentPayPeriod = Ember.get(this, 'currentEffectivePayPeriod');\n\t\t\tvar previousPayPeriod = Ember.get(this, 'payPeriodUtils').getPreviousPayPeriod(currentPayPeriod);\n\n\t\t\tvar start = Ember.get(previousPayPeriod, 'start');\n\t\t\tvar min = Ember.get(this, 'oldestAllowedDate');\n\n\t\t\treturn start < min ? null : previousPayPeriod;\n\t\t}),\n\n\t\tnextEffectivePayPeriod: Ember.computed('currentEffectivePayPeriod', function () {\n\t\t\tvar currentPayPeriod = Ember.get(this, 'currentEffectivePayPeriod');\n\t\t\tvar nextPayPeriod = Ember.get(this, 'payPeriodUtils').getNextPayPeriod(currentPayPeriod);\n\n\t\t\tvar start = Ember.get(nextPayPeriod, 'start');\n\t\t\tvar max = Ember.get(this, 'newestAllowedDate');\n\n\t\t\treturn start > max ? null : nextPayPeriod;\n\t\t}),\n\n\t\thasPreviousEffectivePayPeriod: Ember.computed.bool('previousEffectivePayPeriod'),\n\t\thasNextEffectivePayPeriod: Ember.computed.bool('nextEffectivePayPeriod'),\n\n\t\tinit: function () {\n\t\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\t\tvar ppUtil,\n\t\t\t\t    currentPayPeriod,\n\t\t\t\t    nextPayPeriod,\n\t\t\t\t    previousPayPeriod,\n\t\t\t\t    defaultWage,\n\t\t\t\t    wageHistory,\n\t\t\t\t    datePickerMode,\n\t\t\t\t    _args = arguments;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tthis._super.apply(this, _args);\n\n\t\t\t\t\t\t\t\tppUtil = Ember.get(this, 'payPeriodUtils');\n\t\t\t\t\t\t\t\tcurrentPayPeriod = ppUtil.getPayPeriod();\n\t\t\t\t\t\t\t\tnextPayPeriod = ppUtil.getNextPayPeriod();\n\t\t\t\t\t\t\t\tpreviousPayPeriod = ppUtil.getPreviousPayPeriod();\n\n\n\t\t\t\t\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\t\t\t\t\tisEditMode: true,\n\t\t\t\t\t\t\t\t\tcurrentPayPeriod: currentPayPeriod,\n\t\t\t\t\t\t\t\t\tnextPayPeriod: nextPayPeriod,\n\t\t\t\t\t\t\t\t\tpreviousPayPeriod: previousPayPeriod\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t// create a new wage history model\n\n\t\t\t\t\t\t\t\tif (!Ember.isNone(Ember.get(this, 'wage'))) {\n\t\t\t\t\t\t\t\t\t_context.next = 12;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tEmber.set(this, 'isEditMode', false);\n\t\t\t\t\t\t\t\t_context.next = 10;\n\t\t\t\t\t\t\t\treturn this.createDefaultWageHistory(currentPayPeriod);\n\n\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\t\tdefaultWage = _context.sent;\n\n\n\t\t\t\t\t\t\t\tEmber.set(this, 'wage', defaultWage);\n\n\t\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\t\tif (!Ember.isNone(Ember.get(this, 'wageHistory'))) {\n\t\t\t\t\t\t\t\t\t_context.next = 17;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_context.next = 15;\n\t\t\t\t\t\t\t\treturn Ember.get(this, 'store').findAll('wage-history', {\n\t\t\t\t\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t\t\t\t\t_desc: ['change_date', 'created_on'],\n\t\t\t\t\t\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcase 15:\n\t\t\t\t\t\t\t\twageHistory = _context.sent;\n\n\n\t\t\t\t\t\t\t\tEmber.setProperties(this, { wageHistory: wageHistory });\n\n\t\t\t\t\t\t\tcase 17:\n\t\t\t\t\t\t\t\tdatePickerMode = Ember.get(this, 'isPayPeriodSelected') ? 'Pay Period' : 'Custom';\n\n\t\t\t\t\t\t\t\tEmber.setProperties(this, { datePickerMode: datePickerMode });\n\n\t\t\t\t\t\t\tcase 19:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction init() {\n\t\t\t\treturn _ref3.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn init;\n\t\t}(),\n\t\tgetPayPeriodOptions: function getPayPeriodOptions(wage) {\n\t\t\tvar payPeriods = this.getAllowedPayPeriods();\n\n\t\t\tvar options = [];\n\n\t\t\tif (!Ember.isNone(wage)) {\n\t\t\t\toptions = payPeriods.map(function (item) {\n\t\t\t\t\tvar label = Ember.get(item, 'startDateString');\n\t\t\t\t\tvar _selected = Ember.get(item, 'start') === Ember.get(wage, 'changeDate');\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey: Ember.get(item, 'start'),\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t\t_selected: _selected\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn options;\n\t\t},\n\t\tgetAllowedPayPeriods: function getAllowedPayPeriods() {\n\t\t\tvar start = Ember.get(this, 'newestAllowedDate');\n\t\t\tvar end = Ember.get(this, 'oldestAllowedDate');\n\n\t\t\treturn Ember.get(this, 'payPeriodUtils').getPayPeriodDateRange(start, end, true);\n\t\t},\n\t\tcreateDefaultWageHistory: function () {\n\t\t\tvar _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(currentPayPeriod) {\n\t\t\t\tvar member, currentWageHistory, _EmberGetProperties, wage, overburden, wageRate, workWeek, memberId, changeDate, wageHistoryProps, wageHistory;\n\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tmember = Ember.get(this, 'member');\n\t\t\t\t\t\t\t\t_context2.next = 3;\n\t\t\t\t\t\t\t\treturn Ember.get(member, 'currentWageHistory');\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tcurrentWageHistory = _context2.sent;\n\t\t\t\t\t\t\t\t_EmberGetProperties = Ember.getProperties(currentWageHistory, ['wage', 'overburden', 'wageRate', 'workWeek']), wage = _EmberGetProperties.wage, overburden = _EmberGetProperties.overburden, wageRate = _EmberGetProperties.wageRate, workWeek = _EmberGetProperties.workWeek;\n\t\t\t\t\t\t\t\tmemberId = Ember.get(member, 'id');\n\t\t\t\t\t\t\t\tchangeDate = Ember.get(currentPayPeriod, 'start');\n\t\t\t\t\t\t\t\twageHistoryProps = {\n\t\t\t\t\t\t\t\t\tchangeDate: changeDate,\n\t\t\t\t\t\t\t\t\tmember: member,\n\t\t\t\t\t\t\t\t\tmemberId: memberId,\n\t\t\t\t\t\t\t\t\toverburden: overburden,\n\t\t\t\t\t\t\t\t\twage: wage,\n\t\t\t\t\t\t\t\t\twageRate: Ember.isNone(wageRate) ? 10 : wageRate,\n\t\t\t\t\t\t\t\t\tworkWeek: Ember.isNone(workWeek) ? 40 : workWeek\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twageHistory = Ember.get(this, 'store').createRecord('wage-history', wageHistoryProps);\n\t\t\t\t\t\t\t\treturn _context2.abrupt('return', wageHistory);\n\n\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee2, this);\n\t\t\t}));\n\n\t\t\tfunction createDefaultWageHistory(_x) {\n\t\t\t\treturn _ref4.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn createDefaultWageHistory;\n\t\t}(),\n\t\tsaveWage: function () {\n\t\t\tvar _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n\t\t\t\tvar wage, wageAmount, overburden, wageHistoryConflict, updatedWage;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tif (!Ember.get(this, 'isSelectedDateLocked')) {\n\t\t\t\t\t\t\t\t\t_context3.next = 3;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tEmber.get(this, 'analytics').addEvent(84);\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.reject((0, _utils.loc)('Cannot set an effective date older than the lock date')));\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\twage = Ember.get(this, 'wage');\n\n\t\t\t\t\t\t\t\tif (!(Ember.get(wage, 'wageRate') === 10)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 8;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tEmber.set(wage, 'workWeek', null);\n\t\t\t\t\t\t\t\t_context3.next = 10;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tif (!(Ember.get(wage, 'workWeek') < 1)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 10;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.reject((0, _utils.loc)(\"Expected Hours Per Week can't be zero\")));\n\n\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\t\twageAmount = !Ember.isEmpty(Ember.get(wage, 'wage')) ? Ember.get(wage, 'wage') : 0;\n\n\t\t\t\t\t\t\t\tif (!(wageAmount < 0)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 15;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.reject((0, _utils.loc)('Pay Rate must be a positive number')));\n\n\t\t\t\t\t\t\tcase 15:\n\t\t\t\t\t\t\t\tif (/^([0-9]*|[0-9]+\\.[0-9]{0,2})$/.test(wageAmount)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 17;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.reject((0, _utils.loc)('Pay Rate is an invalid amount')));\n\n\t\t\t\t\t\t\tcase 17:\n\t\t\t\t\t\t\t\toverburden = !Ember.isEmpty(Ember.get(wage, 'overburden')) ? Ember.get(wage, 'overburden') : 0;\n\n\t\t\t\t\t\t\t\tif (/^[-]?[0-9.]*$/.test(overburden)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 20;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.reject((0, _utils.loc)('Overburden is an invalid amount')));\n\n\t\t\t\t\t\t\tcase 20:\n\n\t\t\t\t\t\t\t\tEmber.setProperties(wage, {\n\t\t\t\t\t\t\t\t\toverburden: overburden,\n\t\t\t\t\t\t\t\t\twageAmount: wageAmount\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t// if there is a wage-history already set on the chosen date, delete it before continuing\n\t\t\t\t\t\t\t\twageHistoryConflict = Ember.get(this, 'wageHistoryConflict');\n\n\t\t\t\t\t\t\t\tif (Ember.isNone(wageHistoryConflict)) {\n\t\t\t\t\t\t\t\t\t_context3.next = 26;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_logger.default.info('saveWage -> delete conflict');\n\t\t\t\t\t\t\t\t_context3.next = 26;\n\t\t\t\t\t\t\t\treturn wageHistoryConflict.destroyRecord();\n\n\t\t\t\t\t\t\tcase 26:\n\t\t\t\t\t\t\t\t_context3.next = 28;\n\t\t\t\t\t\t\t\treturn wage.save();\n\n\t\t\t\t\t\t\tcase 28:\n\t\t\t\t\t\t\t\tupdatedWage = _context3.sent;\n\n\t\t\t\t\t\t\t\tEmber.set(this, 'wage', updatedWage);\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', wage);\n\n\t\t\t\t\t\t\tcase 31:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee3, this);\n\t\t\t}));\n\n\t\t\tfunction saveWage() {\n\t\t\t\treturn _ref5.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn saveWage;\n\t\t}(),\n\t\tconfirmWageOverwrite: function confirmWageOverwrite() {\n\t\t\tvar _this = this;\n\n\t\t\t_logger.default.info('confirmWageOverwrite');\n\t\t\treturn new Ember.RSVP.Promise(function (resolveSaveOverwrite, rejectSaveOverwrite) {\n\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\tshowOverwriteConfirmationDialog: true,\n\t\t\t\t\tresolveSaveOverwrite: resolveSaveOverwrite,\n\t\t\t\t\trejectSaveOverwrite: rejectSaveOverwrite\n\t\t\t\t});\n\t\t\t}).finally(function () {\n\t\t\t\t_logger.default.info('confirmWageOverwrite -> completed');\n\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\tshowOverwriteConfirmationDialog: false,\n\t\t\t\t\tresolveSaveOverwrite: Ember.RSVP.resolve(),\n\t\t\t\t\trejectSaveOverwrite: Ember.RSVP.resolve()\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tconfirmWageDeletion: function confirmWageDeletion() {\n\t\t\tvar _this2 = this;\n\n\t\t\t_logger.default.info('confirmWageDeletion');\n\t\t\treturn new Ember.RSVP.Promise(function (resolveDeleteConfirm, rejectDeleteConfirm) {\n\t\t\t\tEmber.setProperties(_this2, {\n\t\t\t\t\tshowDeleteConfirmationDialog: true,\n\t\t\t\t\tresolveDeleteConfirm: resolveDeleteConfirm,\n\t\t\t\t\trejectDeleteConfirm: rejectDeleteConfirm\n\t\t\t\t});\n\t\t\t}).finally(function () {\n\t\t\t\t_logger.default.info('confirmWageDeletion -> completed');\n\t\t\t\tEmber.setProperties(_this2, {\n\t\t\t\t\tshowDeleteConfirmationDialog: false,\n\t\t\t\t\tresolveDeleteConfirm: Ember.RSVP.resolve(),\n\t\t\t\t\trejectDeleteConfirm: Ember.RSVP.resolve()\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tEmber.get(this, 'wage').rollbackAttributes();\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tselectDatePickerMode: function selectDatePickerMode(item) {\n\t\t\t\t_logger.default.info('action -> selectDatePickerMode', item.key);\n\n\t\t\t\t// when the date picker mode changes, clamp it to a pay period start date\n\t\t\t\tvar payPeriod = Ember.get(this, 'payPeriodUtils').getPayPeriod(Ember.get(this, 'wage.changeDate'));\n\t\t\t\tvar boundaryDate = Ember.get(payPeriod, 'start');\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\tdatePickerMode: item.key,\n\t\t\t\t\t'wage.changeDate': boundaryDate\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectWageRate: function selectWageRate(item) {\n\t\t\t\tEmber.set(this, 'wage.wageRate', item.key);\n\t\t\t},\n\t\t\tselectPayPeriod: function selectPayPeriod(item) {\n\t\t\t\t_logger.default.info('action -> selectPayPeriod', item);\n\t\t\t\tEmber.set(this, 'wage.changeDate', Ember.get(item, 'key'));\n\t\t\t},\n\t\t\tselectCustomDate: function selectCustomDate(item) {\n\t\t\t\t_logger.default.info('action -> selectCustomDate', item);\n\t\t\t\tEmber.set(this, 'wage.changeDate', Ember.get(item, 'unix'));\n\t\t\t},\n\t\t\tcycleToPreviousPayPeriod: function cycleToPreviousPayPeriod() {\n\t\t\t\tvar previousPayPeriod = Ember.get(this, 'previousEffectivePayPeriod');\n\n\t\t\t\tif (!Ember.isNone(previousPayPeriod)) {\n\t\t\t\t\tEmber.set(this, 'wage.changeDate', Ember.get(previousPayPeriod, 'start'));\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.warn(this, 'No previousPayPeriod available');\n\t\t\t\t}\n\t\t\t},\n\t\t\tcycleToNextPayPeriod: function cycleToNextPayPeriod() {\n\t\t\t\tvar nextPayPeriod = Ember.get(this, 'nextEffectivePayPeriod');\n\n\t\t\t\tif (!Ember.isNone(nextPayPeriod)) {\n\t\t\t\t\tEmber.set(this, 'wage.changeDate', Ember.get(nextPayPeriod, 'start'));\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.warn(this, 'No nextPayPeriod available');\n\t\t\t\t}\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tif (Ember.get(this, 'wageHistoryConflict')) {\n\t\t\t\t\treturn this.confirmWageOverwrite();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.saveWage();\n\t\t\t\t}\n\t\t\t},\n\t\t\tconfirmOverwriteResolved: function confirmOverwriteResolved() {\n\t\t\t\t_logger.default.info('action -> confirmOverwriteResolved');\n\t\t\t\tEmber.get(this, 'resolveSaveOverwrite')();\n\t\t\t\treturn this.saveWage();\n\t\t\t},\n\t\t\tconfirmOverwriteRejected: function confirmOverwriteRejected() {\n\t\t\t\t_logger.default.info('action -> confirmOverwriteRejected');\n\t\t\t\treturn Ember.get(this, 'rejectSaveOverwrite')((0, _utils.loc)('Save cancelled'));\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\treturn this.confirmWageDeletion();\n\t\t\t},\n\t\t\tconfirmDeleteResolved: function confirmDeleteResolved() {\n\t\t\t\t_logger.default.info('action -> confirmDeleteResolved');\n\t\t\t\tEmber.get(this, 'resolveDeleteConfirm')();\n\t\t\t\treturn Ember.get(this, 'wage').destroyRecord();\n\t\t\t},\n\t\t\tconfirmDeleteRejected: function confirmDeleteRejected() {\n\t\t\t\t_logger.default.info('action -> confirmDeleteRejected');\n\t\t\t\treturn Ember.get(this, 'rejectDeleteConfirm')((0, _utils.loc)('Delete cancelled'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/wage-history', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _emberData, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tclassNames: ['v-employees-employee-wage-history'],\n\n\t\tmember: null,\n\t\tovertimePreviewModel: null,\n\t\tpreviewEffectiveDate: null,\n\n\t\twageHistory: Ember.computed('member.id', function () {\n\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\tpromise: this.get('store').findAll('wage-history', {\n\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t_desc: ['change_date', 'created_on'],\n\t\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t\t})\n\t\t\t});\n\t\t}),\n\n\t\tovertimePeriods: Ember.computed('member.id', function () {\n\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\tpromise: this.get('store').findAll('member-overtime-period', {\n\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t_desc: ['change_date', 'created_on'],\n\t\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t\t})\n\t\t\t});\n\t\t}),\n\n\t\tcurrentTab: 'wages',\n\n\t\ttabOptions: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ key: 'wages', label: (0, _utils.loc)('Wages') }), Ember.Object.create({ key: 'overtime', label: (0, _utils.loc)('Overtime') })];\n\t\t}),\n\n\t\tshowWage: Ember.computed('currentTab', function () {\n\t\t\tif (this.get('currentTab') === 'wages') {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}),\n\n\t\tselectMenu: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ key: 'delete', value: 'Delete' })];\n\t\t}),\n\n\t\tdialogButtonOptions: Ember.computed(function () {\n\t\t\tvar _this = this;\n\n\t\t\treturn [{\n\t\t\t\tname: 'add_circle',\n\t\t\t\ttitle: 'Change Wage',\n\t\t\t\taction: function action() {\n\t\t\t\t\treturn _this.send('showWageDialog');\n\t\t\t\t}\n\t\t\t}];\n\t\t}),\n\n\t\tdeleteWageHistory: function deleteWageHistory(item) {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn item.destroyRecord().then(function () {\n\t\t\t\t_this2.get('wageHistory.content').update();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tselectedRowItem: function selectedRowItem(action, member, wage) {\n\t\t\t\tif (action.get('key') === 'delete') {\n\t\t\t\t\tthis.set('deleteWageModel', wage);\n\t\t\t\t\tthis.set('showDeleteDialog', true);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error('An unrecognized action was called in the view/employees/employee/wageHistory actionView');\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelDelete: function cancelDelete() {\n\t\t\t\tthis.set('showDeleteDialog', false);\n\t\t\t\tthis.get('deleteWageModel').rollbackAttributes();\n\t\t\t\tthis.set('deleteWageModel', null);\n\t\t\t},\n\t\t\tcloseDelete: function closeDelete() {\n\t\t\t\tthis.set('showDeleteDialog', false);\n\t\t\t\tthis.set('deleteWageModel', null);\n\t\t\t},\n\t\t\tdeleteWageChange: function deleteWageChange() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tif (this.get('deleteWageModel.isLocked')) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Cannot delete a wage with an effective date older than the member lock date'));\n\t\t\t\t}\n\n\t\t\t\treturn this.deleteWageHistory(this.get('deleteWageModel')).then(function () {\n\t\t\t\t\treturn (0, _utils.loc)('Deleted successfuly');\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t_logger.default.error('delete error', error);\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('The wage change failed to delete. Please try again later.'));\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this3.send('closeDelete');\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseWageHistory: function closeWageHistory() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tselectTab: function selectTab(item) {\n\t\t\t\tthis.set('currentTab', item.get('key'));\n\t\t\t},\n\t\t\tshowOvertimePreviewDialog: function showOvertimePreviewDialog(item) {\n\t\t\t\tthis.set('previewEffectiveDate', item.get('effectiveDate'));\n\t\t\t\tthis.set('overtimePreviewModel', item);\n\t\t\t\tthis.set('overtimePreviewDialog', true);\n\t\t\t},\n\t\t\thideOvertimePreviewDialog: function hideOvertimePreviewDialog() {\n\t\t\t\tthis.set('previewEffectiveDate', null);\n\t\t\t\tthis.set('overtimePreviewModel', null);\n\t\t\t\tthis.set('overtimePreviewDialog', false);\n\t\t\t},\n\t\t\tshowWageDialog: function showWageDialog(wageHistoryId) {\n\t\t\t\tif (!Ember.isNone(wageHistoryId)) {\n\t\t\t\t\tthis.set('wageHistoryId', wageHistoryId);\n\t\t\t\t}\n\n\t\t\t\tthis.set('showWageHistory', true);\n\t\t\t},\n\t\t\tcloseWageDialog: function closeWageDialog() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tEmber.RSVP.resolve(this.get('wageHistory.content').update()).then(function () {\n\t\t\t\t\t_this4.set('showWageHistory', false);\n\t\t\t\t\t_this4.set('wageHistoryId', null);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/employees/wage-info', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-employees-employee-wage'],\n\n    store: Ember.inject.service('store'),\n\n    showCurrentWageDialog: false,\n    showCurentOvertimeDialog: false,\n    showWageHistory: false,\n    showScheduledDetailsDialog: false,\n\n    newWage: null,\n    member: null,\n    isArchived: false,\n\n    reloadCurrentWage: function reloadCurrentWage() {\n      // triggers a reload of the actual query to the api\n      // calling this.get('member.currentWageHistory.content').reload() would\n      // only reload the current model and not find any new models.\n      this.get('member').belongsTo('currentWageHistory').reload();\n    },\n    deleteOvertime: function deleteOvertime(period) {\n      return period.destroyRecord();\n    },\n\n\n    actions: {\n      openCurrentWageDialog: function openCurrentWageDialog() {\n        this.set('showCurrentWageDialog', true);\n      },\n      closeCurrentWageDialog: function closeCurrentWageDialog() {\n        this.reloadCurrentWage();\n        this.set('showCurrentWageDialog', false);\n      },\n      toggleCurrentOvertimeDialog: function toggleCurrentOvertimeDialog() {\n        this.set('showCurentOvertimeDialog', !this.get('showCurentOvertimeDialog'));\n      },\n      toggleWageHistory: function toggleWageHistory() {\n        var showWageHistory = !this.get('showWageHistory');\n        if (!showWageHistory) {\n          this.reloadCurrentWage();\n        }\n        this.set('showWageHistory', showWageHistory);\n      },\n      deleteOvertimeChange: function deleteOvertimeChange(member) {\n        // scheduledOvertimePeriod is a DS.PromiseObject so use `content`\n        // to access the model.\n        return this.deleteOvertime(member.get('scheduledOvertimePeriod'));\n      },\n      showOvertimePreviewDialog: function showOvertimePreviewDialog() {\n        var model = this.get('member.currentOvertimeRules');\n        this.set('overtimePreviewModel', model);\n        this.set('overtimePreviewDialog', true);\n      },\n      hideOvertimePreviewDialog: function hideOvertimePreviewDialog() {\n        this.set('overtimePreviewModel', null);\n        this.set('overtimePreviewDialog', false);\n      },\n      viewScheduledOvertimeChange: function viewScheduledOvertimeChange() {\n        this.set('showScheduledDetailsDialog', true);\n      },\n      closeScheduledOvertimeChange: function closeScheduledOvertimeChange() {\n        this.set('showScheduledDetailsDialog', false);\n      }\n    }\n  });\n});","define('busy-app/components/equipment/splash-screen', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tisSaving: false,\n\t\tequipmentUrl: null,\n\n\t\tactions: {\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tonEnable: function onEnable() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar org = Ember.isNone(this.get('auth.organization.content')) ? this.get('auth.organization') : this.get('auth.organization.content');\n\n\t\t\t\t// popup blocker workaround:\n\t\t\t\t//   open the window here, before the async action, then navigate or close the window depending on the result of saving to the org\n\t\t\t\t//   set busy background color to fake a loading screen while the save is in progress\n\t\t\t\tvar equipmentWindow = window.open();\n\t\t\t\tequipmentWindow.document.write('<html style=\"width: 100%; height: 100%; background-color: #2D3E50\"></html>');\n\n\t\t\t\torg.set('trackEquipment', true);\n\n\t\t\t\tthis.set('isSaving', true);\n\t\t\t\treturn org.save().then(function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t// navigate the popped window to the correct url\n\t\t\t\t\t\tequipmentWindow.location = _this.get('equipmentUrl');\n\t\t\t\t\t\tequipmentWindow.focus();\n\n\t\t\t\t\t\t_this.set('isSaving', false);\n\t\t\t\t\t\t_this.send('onClose');\n\t\t\t\t\t}\n\t\t\t\t}).catch(function () {\n\t\t\t\t\t// close the popped window\n\t\t\t\t\tequipmentWindow.close();\n\t\t\t\t});\n\t\t\t},\n\t\t\tonLearnMore: function onLearnMore() {\n\t\t\t\twindow.open('http://support.busybusy.com/faq/what-is-the-busybusy-equipment-app');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/file-drop-box', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-file-drop-box'],\n\n\t\tmultiple: false,\n\n\t\ttitle: (0, _utils.loc)('Drag files or click here to upload files'),\n\n\t\tclick: function click(evt) {\n\t\t\tevt.stopPropagation();\n\t\t\treturn true;\n\t\t},\n\t\tchange: function change(evt) {\n\t\t\tthis.handleFile(evt);\n\t\t},\n\t\tdrop: function drop(evt) {\n\t\t\tevt.stopPropagation();\n\t\t\tevt.preventDefault();\n\t\t\tthis.handleFile(evt);\n\t\t},\n\t\thandleFile: function handleFile(evt) {\n\t\t\tvar files = null;\n\t\t\tif (!Ember.isNone(evt.target) && evt.target.files.length > 0) {\n\t\t\t\tfiles = evt.target.files;\n\t\t\t\tthis.sendAction('onChange', files);\n\t\t\t} else if (!Ember.isNone(evt.dataTransfer) && evt.dataTransfer.files.length > 0) {\n\t\t\t\tfiles = evt.dataTransfer.files;\n\t\t\t\tthis.sendAction('onChange', files);\n\t\t\t} else if (!Ember.isNone(evt.originalEvent) && !Ember.isNone(evt.originalEvent.srcElement) && evt.originalEvent.srcElement.files.length > 0) {\n\t\t\t\tfiles = evt.originalEvent.srcElement.files;\n\t\t\t\tthis.sendAction('onChange', files);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/file-input', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\n\t\t/**\n   * Component class override for class names on the container element\n   *\n   * @public\n   * @property classNames\n   * @type {array}\n   */\n\t\tclassNames: ['c-file-input', 'd-button', 'blue'],\n\n\t\t/**\n   * Component class override sets the container tag to an `a` tag\n   *\n   * @private\n   * @property tagName\n   * @type {string}\n   */\n\t\ttagName: 'a',\n\n\t\t/**\n   * The title for the upload button\n   *\n   * @public\n   * @property [title='Upload File']\n   * @type {string}\n   */\n\t\ttitle: (0, _utils.loc)('Upload File'),\n\n\t\t/**\n   * Set to true to allow multiple file uploads\n   *\n   * @public\n   * @property [multiple=false]\n   * @type {boolean}\n   */\n\t\tmultiple: false,\n\n\t\trestrictedTypes: '',\n\n\t\t/**\n   * Component Class event callback for onClick\n   *\n   * @private\n   * @method click\n   * @param evt {object} jquery event object\n   * @return {boolean} true to allow propagation\n   */\n\t\tclick: function click(evt) {\n\t\t\tevt.stopPropagation();\n\t\t\treturn true;\n\t\t},\n\n\n\t\t/**\n   * Component Class event callback for onChange\n   *\n   * @private\n   * @method change\n   * @param evt {object} jquery event object\n   */\n\t\tchange: function change(evt) {\n\t\t\tvar files = null;\n\n\t\t\t// most browsers support evt.target\n\t\t\t// but not IE!!\n\t\t\tif (!Ember.isNone(evt.target)) {\n\t\t\t\tfiles = evt.target.files;\n\t\t\t} else {\n\t\t\t\t// ie support for file uploads.\n\t\t\t\tfiles = evt.originalEvent.srcElement.files;\n\t\t\t}\n\t\t\tthis.sendAction('onChange', files);\n\t\t}\n\t});\n});","define('busy-app/components/g-map-addons/pin', ['exports', 'in-repo-pin-addon/components/g-map-addons/pin'], function (exports, _pin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _pin.default;\n    }\n  });\n});","define('busy-app/components/g-map', ['exports', 'ember-google-maps/components/g-map'], function (exports, _gMap) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _gMap.default;\n    }\n  });\n});","define('busy-app/components/g-map/autocomplete', ['exports', 'ember-google-maps/components/g-map/autocomplete'], function (exports, _autocomplete) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _autocomplete.default;\n    }\n  });\n});","define('busy-app/components/g-map/canvas', ['exports', 'ember-google-maps/components/g-map/canvas'], function (exports, _canvas) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _canvas.default;\n    }\n  });\n});","define('busy-app/components/g-map/circle', ['exports', 'ember-google-maps/components/g-map/circle'], function (exports, _circle) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _circle.default;\n    }\n  });\n});","define('busy-app/components/g-map/control', ['exports', 'ember-google-maps/components/g-map/control'], function (exports, _control) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _control.default;\n    }\n  });\n});","define('busy-app/components/g-map/directions', ['exports', 'ember-google-maps/components/g-map/directions'], function (exports, _directions) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _directions.default;\n    }\n  });\n});","define('busy-app/components/g-map/info-window', ['exports', 'ember-google-maps/components/g-map/info-window'], function (exports, _infoWindow) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _infoWindow.default;\n    }\n  });\n});","define('busy-app/components/g-map/map-component', ['exports', 'ember-google-maps/components/g-map/map-component'], function (exports, _mapComponent) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _mapComponent.default;\n    }\n  });\n});","define('busy-app/components/g-map/marker', ['exports', 'ember-google-maps/components/g-map/marker'], function (exports, _marker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _marker.default;\n    }\n  });\n});","define('busy-app/components/g-map/overlay', ['exports', 'ember-google-maps/components/g-map/overlay'], function (exports, _overlay) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _overlay.default;\n    }\n  });\n});","define('busy-app/components/g-map/polyline', ['exports', 'ember-google-maps/components/g-map/polyline'], function (exports, _polyline) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _polyline.default;\n    }\n  });\n});","define('busy-app/components/g-map/route', ['exports', 'ember-google-maps/components/g-map/route'], function (exports, _route) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _route.default;\n    }\n  });\n});","define('busy-app/components/g-map/waypoint', ['exports', 'ember-google-maps/components/g-map/waypoint'], function (exports, _waypoint) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _waypoint.default;\n    }\n  });\n});","define(\"busy-app/components/illiquid-model\", [\"exports\", \"liquid-fire/components/illiquid-model\"], function (exports, _illiquidModel) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _illiquidModel.default;\n    }\n  });\n});","define('busy-app/components/image-placeholder', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-image-placeholder'],\n\n\t\t/******** public props ********/\n\n\t\t/**\n   * sets the altText on hover and\n   * is used to create the initials placeholder\n   * image\n   *\n   * @property altText\n   * @type {string}\n   */\n\t\taltText: '',\n\n\t\t/**\n   * image url to use for the image\n   *\n   * @property image\n   * @type {string}\n   */\n\t\timage: '',\n\n\t\t/**\n   * image url to use if image is not available\n   *\n   * @property backupImage\n   * @type {string}\n   */\n\t\tbackupImage: '',\n\n\t\tisSixtyFour: false,\n\n\t\t/******** private props *********/\n\t\t__hasImage: false,\n\t\t__hasInitials: false,\n\t\t__initials: '',\n\t\t__backgroundStyle: '',\n\n\t\t/**\n   * updates props hook\n   *\n   * @method didReceiveAttrs\n   */\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\tthis.__buildImage();\n\t\t\tthis.setupElements();\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.setupElements();\n\t\t},\n\t\tsetupElements: function setupElements() {\n\t\t\tif (this.$() && this.$().length) {\n\t\t\t\tif (Ember.get(this, '__hasInitials') && !Ember.get(this, '__hasImage')) {\n\t\t\t\t\tvar el = this.$().find('.image > div');\n\t\t\t\t\tfitText(el);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * sets up the required private variables to show the image\n   *\n   * @private\n   * @method __buildImage\n   * @return {void}\n   */\n\t\t__buildImage: function __buildImage() {\n\t\t\tvar hasImage = false;\n\t\t\tvar hasInitials = false;\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'altText'))) {\n\t\t\t\tvar initials = generateInitials(Ember.get(this, 'altText'));\n\t\t\t\tif (!Ember.isEmpty(initials)) {\n\t\t\t\t\tEmber.set(this, '__initials', initials);\n\t\t\t\t\thasInitials = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar image = Ember.get(this, 'image');\n\t\t\tif (!Ember.isEmpty(image)) {\n\t\t\t\thasImage = true;\n\t\t\t\tEmber.set(this, '__backgroundStyle', imageStyle(image));\n\t\t\t} else {\n\t\t\t\timage = Ember.get(this, 'backupImage');\n\t\t\t\tif (!Ember.isEmpty(image)) {\n\t\t\t\t\thasImage = true;\n\t\t\t\t\tEmber.set(this, '__backgroundStyle', imageStyle(image));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tEmber.set(this, '__hasImage', hasImage);\n\t\t\tEmber.set(this, '__hasInitials', hasInitials);\n\t\t}\n\t});\n\n\n\t/**\n  * Fits the text size to the element and centers the text vertically\n  *\n  * @method fitText\n  * @param element {Element} DOM tree node\n  * @param propagate {boolean} allows fitText to traverse up to the parent if needed\n  * @return {void}\n  */\n\tvar fitText = function fitText(element) {\n\t\tvar propagate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\tif (element && element.length) {\n\t\t\t// get element height\n\t\t\tvar height = element.height();\n\n\t\t\t// if element height is greater than 200px\n\t\t\t// assume the element height is not correct\n\t\t\t// and dont set any attrs\n\t\t\tif (height < 200) {\n\t\t\t\t// set the font size to 40% of the height\n\t\t\t\tvar fontSize = Math.floor(height * 0.4);\n\n\t\t\t\t// update the style for the element\n\t\t\t\telement.css({\n\t\t\t\t\t'line-height': height + 1 + 'px',\n\t\t\t\t\t'font-size': fontSize + 'px'\n\t\t\t\t});\n\t\t\t} else if (propagate) {\n\t\t\t\t// if height was not found try the parent element\n\t\t\t\t// but only propagate up one element to find a proper\n\t\t\t\t// height\n\t\t\t\tfitText(element.parent(), false);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n  * Takes a string and returns the first letter of\n  * each word in the string\n  *\n  * @method generateInitials\n  * @param name {string}\n  * @return {string}\n  */\n\tvar generateInitials = function generateInitials(name) {\n\t\tif (Ember.isEmpty(name)) {\n\t\t\treturn name;\n\t\t}\n\n\t\tname = name.replace(/^[^a-zA-Z]*$/g, '');\n\n\t\tvar np = name.split(' ');\n\t\treturn np.map(function (n, i) {\n\t\t\treturn i === 0 || i === 1 ? n.slice(0, 1).toUpperCase() : '';\n\t\t}).join('');\n\t};\n\n\t/**\n  * creates the style text string for the background image\n  *\n  * @method imageStyle\n  * @param imageUrl {string} url for the image\n  * @return {string} html safe string\n  */\n\tvar imageStyle = function imageStyle(imageUrl) {\n\t\treturn (\n\t\t\t// return the safestring css background image.\n\t\t\tEmber.String.htmlSafe('background-image:url(' + imageUrl + ');background-repeat:no-repeat;background-size:cover;background-position:center;')\n\t\t);\n\t};\n});","define('busy-app/components/jq-date-picker', ['exports', 'ember-jquery-date-range-picker/components/jq-date-picker'], function (exports, _jqDatePicker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _jqDatePicker.default;\n    }\n  });\n});","define('busy-app/components/lib/bind-context', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tmodel: null,\n\n\t\tactions: {\n\t\t\tbindAction: function bindAction(arg1, arg2, arg3) {\n\t\t\t\tthis.sendAction('onBind', this.get('model'), arg1, arg2, arg3);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/lib/display-value', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tmodel: null,\n\n\t\tkey: null,\n\n\t\tvalue: Ember.computed('model.id', 'key', function () {\n\t\t\t(true && !(!Ember.isNone(this.get('model')) && _typeof(this.get('model')) === 'object') && Ember.assert(\"You must provide a model of type object to display-value\", !Ember.isNone(this.get('model')) && _typeof(this.get('model')) === 'object'));\n\t\t\t(true && !(!Ember.isNone(this.get('key')) && typeof this.get('key') === 'string') && Ember.assert(\"You must provide a key of type String to display-value\", !Ember.isNone(this.get('key')) && typeof this.get('key') === 'string'));\n\n\n\t\t\treturn Ember.get(this.get('model'), this.get('key'));\n\t\t}),\n\n\t\tclick: function click() {\n\t\t\tthis.sendAction('onClick');\n\t\t}\n\t});\n});","define('busy-app/components/lib/drag-drop-box', ['exports', 'busy-app/mixins/droppable', 'busy-app/mixins/draggable'], function (exports, _droppable, _draggable) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend(_droppable.default, _draggable.default, {\n\t\tclassNames: ['c-lib-drag-drop-box'],\n\n\t\tmodel: null,\n\n\t\tdragStartEvent: function dragStartEvent() {\n\t\t\tthis.sendAction('onDrag', this.get('model'));\n\t\t},\n\t\tdragEndEvent: function dragEndEvent() {\n\t\t\tthis.sendAction('onDragEnd', this.get('model'));\n\t\t},\n\t\tdragEnterEvent: function dragEnterEvent() {\n\t\t\tthis.sendAction('onDragOver', this.get('model'));\n\t\t},\n\t\tdropEvent: function dropEvent() {\n\t\t\tthis.sendAction('onDrop', this.get('model'));\n\t\t},\n\t\tclick: function click() {\n\t\t\tthis.sendAction('onClick', this.get('model'));\n\t\t}\n\t});\n});","define(\"busy-app/components/liquid-bind\", [\"exports\", \"liquid-fire/components/liquid-bind\"], function (exports, _liquidBind) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidBind.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-child\", [\"exports\", \"liquid-fire/components/liquid-child\"], function (exports, _liquidChild) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidChild.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-container\", [\"exports\", \"liquid-fire/components/liquid-container\"], function (exports, _liquidContainer) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidContainer.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-if\", [\"exports\", \"liquid-fire/components/liquid-if\"], function (exports, _liquidIf) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidIf.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-measured\", [\"exports\", \"liquid-fire/components/liquid-measured\"], function (exports, _liquidMeasured) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidMeasured.default;\n    }\n  });\n  Object.defineProperty(exports, \"measure\", {\n    enumerable: true,\n    get: function () {\n      return _liquidMeasured.measure;\n    }\n  });\n});","define(\"busy-app/components/liquid-outlet\", [\"exports\", \"liquid-fire/components/liquid-outlet\"], function (exports, _liquidOutlet) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidOutlet.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-spacer\", [\"exports\", \"liquid-fire/components/liquid-spacer\"], function (exports, _liquidSpacer) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidSpacer.default;\n    }\n  });\n});","define('busy-app/components/liquid-sync', ['exports', 'liquid-fire/components/liquid-sync'], function (exports, _liquidSync) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _liquidSync.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-unless\", [\"exports\", \"liquid-fire/components/liquid-unless\"], function (exports, _liquidUnless) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidUnless.default;\n    }\n  });\n});","define(\"busy-app/components/liquid-versions\", [\"exports\", \"liquid-fire/components/liquid-versions\"], function (exports, _liquidVersions) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidVersions.default;\n    }\n  });\n});","define('busy-app/components/max-images-box', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar MIN_CHILDREN = 3; /**\n                        * @module Components\n                        *\n                        */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-max-images-box'],\n\n\t\teventEmitter: Ember.inject.service('event-emitter'),\n\n\t\tmodel: null,\n\n\t\timagePath: '',\n\t\taltTextPath: '',\n\n\t\t__imageMeta: null,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tEmber.get(this, 'eventEmitter').on('dom', 'resize', function () {\n\t\t\t\tif (!Ember.get(_this, 'isDestroyed')) {\n\t\t\t\t\tif (_this.hasChangedWidth()) {\n\t\t\t\t\t\tsetMaxImages(_this.$(), Ember.get(_this, '__imageMeta'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\t//this.setupImages();\n\t\t},\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\t\t\t//this.setupImages();\n\t\t},\n\t\tdidRender: function didRender() {\n\t\t\tthis._super();\n\t\t\tthis.setupImages();\n\t\t},\n\t\tsetupImages: function setupImages() {\n\t\t\tif (Ember.get(this, 'model.length')) {\n\t\t\t\tvar meta = getImageMeta(this.$());\n\t\t\t\tEmber.set(this, '__imageMeta', meta);\n\n\t\t\t\tsetMaxImages(this.$(), Ember.get(this, '__imageMeta'));\n\t\t\t}\n\t\t},\n\t\thasChangedWidth: function hasChangedWidth() {\n\t\t\tif (this.$().length) {\n\t\t\t\tvar lastWidth = Ember.get(this, '__containerWidth');\n\t\t\t\tvar width = this.$().width();\n\t\t\t\tif (lastWidth !== width) {\n\t\t\t\t\tEmber.set(this, '__containerWidth', width);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n\n\n\tvar setMaxImages = function setMaxImages(element, imageMeta) {\n\t\tif (!Ember.isNone(imageMeta) && imageMeta.length > 0) {\n\t\t\tvar maxChildren = MIN_CHILDREN;\n\t\t\tif (!Ember.isNone(element)) {\n\t\t\t\tvar width = element.width();\n\n\t\t\t\t// take the width of the container and subtract the negativeBounds\n\t\t\t\t// then divide that by the image adjustedWidth to get the total number\n\t\t\t\t// of images that will fit within the container. Subtract 1 from the total\n\t\t\t\t// to allow space for the hidden-total images element\n\t\t\t\tmaxChildren = Math.floor((width - imageMeta.negativeBounds) / imageMeta.adjustedWidth) - 1;\n\t\t\t}\n\t\t\tif (isNaN(maxChildren)) {\n\t\t\t\tmaxChildren = MIN_CHILDREN;\n\t\t\t}\n\n\t\t\tvar images = element.children('.image');\n\t\t\timages.each(function (index, child) {\n\t\t\t\tif (index < maxChildren) {\n\t\t\t\t\tEmber.$(child).removeClass('hide');\n\t\t\t\t} else {\n\t\t\t\t\tEmber.$(child).addClass('hide');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar hiddenElement = element.children('.hidden-total').first();\n\t\t\thiddenElement.children().first().html('+' + (imageMeta.length - maxChildren));\n\n\t\t\tif (imageMeta.length <= maxChildren) {\n\t\t\t\thiddenElement.addClass('hide');\n\t\t\t} else {\n\t\t\t\thiddenElement.removeClass('hide');\n\t\t\t}\n\n\t\t\tfitText(hiddenElement);\n\t\t}\n\t};\n\n\tvar getImageMeta = function getImageMeta(element) {\n\t\t// width is the raw width of the image\n\t\tvar width = 0;\n\n\t\t// how many images are in the caontainer\n\t\tvar length = 0;\n\n\t\t// adjusted width is the width plus margin left and right\n\t\tvar adjustedWidth = 0;\n\n\t\t// negative bounds is any width that is not on all images\n\t\t// and will effect the images container width.\n\t\t// in this case if the first image has left margin and the\n\t\t// rest of the images have right margin\n\t\tvar negativeBounds = 0;\n\n\t\tif (element && element.length) {\n\t\t\tvar images = element.children('.image');\n\t\t\tlength = images.length;\n\n\t\t\tif (length > 0) {\n\t\t\t\tvar first = images.first();\n\t\t\t\tvar middle = first.next();\n\n\t\t\t\twidth = images.first().width();\n\n\t\t\t\t// margin is calculated of the second element (middle) if\n\t\t\t\t// there is more than 1 image\n\t\t\t\tvar marginLeft = 0,\n\t\t\t\t    marginRight = 0;\n\t\t\t\tif (middle && middle.length) {\n\t\t\t\t\tmarginLeft = parseInt(middle.css('margin-left'), 10) + parseInt(middle.css('padding-left'), 10);\n\t\t\t\t\tmarginRight = parseInt(middle.css('margin-right'), 10) + parseInt(middle.css('padding-right'), 10);\n\t\t\t\t} else {\n\t\t\t\t\tmarginLeft = parseInt(first.css('margin-left'), 10) + parseInt(first.css('padding-left'), 10);\n\t\t\t\t\tmarginRight = parseInt(first.css('margin-right'), 10) + parseInt(first.css('padding-right'), 10);\n\t\t\t\t}\n\n\t\t\t\t// padding left and right are use to calculate the negativeBounds\n\t\t\t\tvar paddingLeft = 0,\n\t\t\t\t    paddingRight = 0;\n\n\t\t\t\t// if margin left is 0 than check the first image to\n\t\t\t\t// see if it has margin left and use that\n\t\t\t\t// as the left bound of negativeBounds\n\t\t\t\tif (!marginLeft) {\n\t\t\t\t\tpaddingLeft = parseInt(first.css('margin-left'), 10) + parseInt(middle.css('padding-left'), 10);\n\t\t\t\t}\n\n\t\t\t\t// if margin right is 0 than check the last image to\n\t\t\t\t// see if it has margin right and use that\n\t\t\t\t// as the right bound of negativeBounds\n\t\t\t\tif (!marginRight) {\n\t\t\t\t\tvar last = length > 2 ? images.last() : middle;\n\t\t\t\t\tif (last && last.length) {\n\t\t\t\t\t\tpaddingRight = parseInt(last.css('margin-right'), 10) + parseInt(middle.css('padding-right'), 10);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set adjustedWidth and negativeBounds\n\t\t\t\tadjustedWidth = width + (marginLeft || 0) + (marginRight || 0);\n\t\t\t\tnegativeBounds = (paddingLeft || 0) + (paddingRight || 0);\n\t\t\t}\n\t\t}\n\n\t\t// return object meta data\n\t\treturn { length: length, width: width, adjustedWidth: adjustedWidth, negativeBounds: negativeBounds };\n\t};\n\n\t/**\n  * Fits the text size to the element and centers the text vertically\n  *\n  * @method fitText\n  * @param element {Element} DOM tree node\n  * @param propagate {boolean} allows fitText to traverse up to the parent if needed\n  * @return {void}\n  */\n\tvar fitText = function fitText(element) {\n\t\tvar propagate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\tif (element && element.length) {\n\t\t\t// get element height\n\t\t\tvar height = element.height();\n\n\t\t\t// if element height is greater than 200px\n\t\t\t// assume the element height is not correct\n\t\t\t// and dont set any attrs\n\t\t\tif (height < 200) {\n\t\t\t\t// set the font size to 40% of the height\n\t\t\t\tvar fontSize = Math.floor(height * 0.4);\n\n\t\t\t\t// update the style for the element\n\t\t\t\telement.css({\n\t\t\t\t\t'line-height': height + 1 + 'px',\n\t\t\t\t\t'font-size': fontSize + 'px'\n\t\t\t\t});\n\t\t\t} else if (propagate) {\n\t\t\t\t// if height was not found try the parent element\n\t\t\t\t// but only propagate up one element to find a proper\n\t\t\t\t// height\n\t\t\t\tfitText(element.parent(), false);\n\t\t\t}\n\t\t}\n\t};\n});","define('busy-app/components/md-button', ['exports', '@busy-web/components/components/md-button'], function (exports, _mdButton) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _mdButton.default;\n    }\n  });\n});","define('busy-app/components/menu-button', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-menu-button'],\n\t\tclassNameBindings: ['animateState:animate', 'startState:active', 'finishState:inactive'],\n\n\t\topenState: false,\n\t\tstartState: false,\n\t\tfinishState: false,\n\t\tanimateState: false,\n\n\t\tclick: function click(e) {\n\t\t\te.stopPropagation();\n\t\t\tif (!this.get('animateState') || this.get('animateState') && this.get('startState') && !this.get('finishState')) {\n\t\t\t\tthis.set('openState', !this.get('openState'));\n\t\t\t\t//this.animate();\n\t\t\t\tthis.notifyToggle();\n\t\t\t}\n\t\t},\n\t\tanimate: function animate() {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.get('startState')) {\n\t\t\t\tthis.set('finishState', true);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t_this.set('animateState', false);\n\t\t\t\t\t_this.set('startState', false);\n\t\t\t\t\t_this.set('finishState', false);\n\t\t\t\t}, 400);\n\t\t\t} else {\n\t\t\t\tthis.set('animateState', true);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t_this.set('startState', true);\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t},\n\t\tnotifyToggle: function notifyToggle() {\n\t\t\tvar body = Ember.$('body');\n\t\t\tif (!body.hasClass('left-nav-open')) {\n\t\t\t\tbody.addClass('left-nav-open');\n\t\t\t} else {\n\t\t\t\tbody.removeClass('left-nav-open');\n\t\t\t}\n\n\t\t\t//let container = window.BusyApp._application.get('container');\n\t\t\t//let open = !container.get('isMenuOpen');\n\t\t\t//container.set('isMenuOpen', open);\n\t\t\t//this.set('startState', open);\n\t\t}\n\t});\n});","define('busy-app/components/mod-util/aggregate-cost', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/mod-util/aggregate-hours', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\n\t\tmodel: null,\n\n\t\tregular: false,\n\t\tovertime: false,\n\t\tdoubletime: false,\n\t\ttotal: false,\n\n\t\tpadHours: true,\n\t\ttype: null\n\t});\n});","define('busy-app/components/mod-util/bound-model-range', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-bound-model-range'],\n\n\t\tstart: null,\n\t\tend: null,\n\t\tcomparator: null,\n\t\tmodel: null,\n\n\t\tboundModel: Ember.computed('start', 'end', 'model', function () {\n\t\t\tvar start = Ember.get(this, 'start');\n\t\t\tvar end = Ember.get(this, 'end');\n\t\t\tvar model = Ember.get(this, 'model');\n\t\t\tif (!Ember.isNone(model)) {\n\t\t\t\tvar comparator = Ember.get(this, 'comparator');\n\n\t\t\t\t(true && !(typeof comparator === 'function') && Ember.assert('comparator must be set to a function (model, startBound, endBound) => boolean', typeof comparator === 'function'));\n\n\n\t\t\t\treturn comparator(model, start, end);\n\t\t\t}\n\t\t\treturn model;\n\t\t})\n\t});\n});","define('busy-app/components/mod-util/each-day', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\n\t\tmodel: null,\n\n\t\tstart: null,\n\t\tend: null,\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\t// create content and set default empty array.\n\t\t\tvar content = [];\n\n\t\t\t// get models\n\t\t\tvar models = Ember.get(this, 'model');\n\n\t\t\tif (!Ember.isNone(models)) {\n\t\t\t\t// enforce the model is an array of models\n\t\t\t\t(true && !(Array.isArray(models) || Array.isArray(Ember.get(models, 'content'))) && Ember.assert('<component:each-day> `model` must be an array of model objects.', Array.isArray(models) || Array.isArray(Ember.get(models, 'content'))));\n\n\t\t\t\t// converts non regular objects to regular objects\n\n\t\t\t\tmodels = convertObjects(models);\n\n\t\t\t\t// only generate the day range objects\n\t\t\t\t// when the model entries in the array.\n\t\t\t\tif (Ember.get(models, 'length') > 0) {\n\n\t\t\t\t\t// get the rangeStart and rangeEnd if they were provided to the component.\n\t\t\t\t\tvar _getModelRange = getModelRange(models, Ember.get(this, 'start'), Ember.get(this, 'end')),\n\t\t\t\t\t    rangeStart = _getModelRange.rangeStart,\n\t\t\t\t\t    rangeEnd = _getModelRange.rangeEnd;\n\n\t\t\t\t\t// generate the date range by day and include all models that fit within\n\t\t\t\t\t// the day generated.\n\n\n\t\t\t\t\tcontent = generateRange(models, rangeStart, rangeEnd);\n\t\t\t\t}\n\t\t\t}\n\t\t\tEmber.set(this, 'content', content);\n\t\t}\n\t});\n\n\n\tvar getDayTime = function getDayTime(time) {\n\t\treturn _utils.Time.date(time).startOf('day').unix();\n\t};\n\n\tvar generateRange = function generateRange(models, rangeStart, rangeEnd) {\n\t\tvar rangeModels = [];\n\n\t\t// helper methods\n\t\tvar getNextDayTime = function getNextDayTime(time) {\n\t\t\treturn _utils.Time.date(time).startOf('day').add(1, 'days').unix();\n\t\t};\n\n\t\t// set currentDay to the start of the range\n\t\tvar currentDay = getDayTime(rangeStart);\n\n\t\t// generate days for each day in the range\n\n\t\tvar _loop = function _loop() {\n\t\t\tvar startTime = currentDay;\n\t\t\tvar endTime = _utils.Time.date(startTime).endOf('day').unix();\n\t\t\tif (endTime > rangeEnd) {\n\t\t\t\tendTime = rangeEnd;\n\t\t\t}\n\n\t\t\t// in range helper\n\t\t\tvar isInRange = function isInRange(time) {\n\t\t\t\treturn time >= startTime && time <= endTime;\n\t\t\t};\n\t\t\tvar spansRange = function spansRange(start, end) {\n\t\t\t\treturn start < startTime && end > endTime;\n\t\t\t};\n\n\t\t\t// filter all models with a start or end time\n\t\t\t// for the current day\n\t\t\tvar filter = models.filter(function (item) {\n\t\t\t\treturn isInRange(getStart(item)) || isInRange(getEnd(item)) || spansRange(getStart(item), getEnd(item));\n\t\t\t}).map(function (item) {\n\t\t\t\treturn createDayObject(item, startTime, endTime);\n\t\t\t});\n\n\t\t\tif (filter.length) {\n\t\t\t\t// push the models into the range list\n\t\t\t\trangeModels.push({ startTime: startTime, endTime: endTime, model: filter });\n\t\t\t}\n\n\t\t\t// set currentDay ahead 1 day\n\t\t\tcurrentDay = getNextDayTime(currentDay);\n\t\t};\n\n\t\twhile (rangeEnd > currentDay) {\n\t\t\t_loop();\n\t\t}\n\t\treturn rangeModels;\n\t};\n\n\tvar createDayObject = function createDayObject(model, min, max) {\n\t\tvar getStartTime = function getStartTime(start) {\n\t\t\treturn start < min ? [min, true] : [start, false];\n\t\t};\n\t\tvar getEndTime = function getEndTime(end) {\n\t\t\treturn end > max ? [max, true] : [end, false];\n\t\t};\n\n\t\tvar startTime = getStart(model);\n\t\tvar endTime = getEnd(model);\n\n\t\tvar isTimeOff = Ember.get(model, 'isTimeOff');\n\n\t\tif (isTimeOff) {\n\t\t\tisTimeOff = true;\n\t\t\tvar span = Ember.get(model, 'seconds');\n\t\t\tif (span > 0) {\n\t\t\t\tendTime = _utils.Time.date(startTime).add(span, 'seconds').unix();\n\t\t\t}\n\t\t}\n\n\t\tvar _getStartTime = getStartTime(startTime),\n\t\t    _getStartTime2 = _slicedToArray(_getStartTime, 2),\n\t\t    start = _getStartTime2[0],\n\t\t    isStartOutside = _getStartTime2[1];\n\n\t\tvar _getEndTime = getEndTime(endTime),\n\t\t    _getEndTime2 = _slicedToArray(_getEndTime, 2),\n\t\t    end = _getEndTime2[0],\n\t\t    isEndOutside = _getEndTime2[1];\n\n\t\tvar json = model;\n\t\tif (model._internalModel) {\n\t\t\tjson = model.toJSON({ includeId: true });\n\t\t\tmodel.eachRelationship(function (key) {\n\t\t\t\tjson[key] = Ember.get(model, key);\n\t\t\t});\n\n\t\t\tif (!Ember.isEmpty(Ember.get(model, 'segments'))) {\n\t\t\t\tjson.segments = (Ember.get(model, 'segments') || []).filter(function (seg) {\n\t\t\t\t\treturn Ember.get(seg, 'startTime') >= start && Ember.get(seg, 'endTime') <= end + 1;\n\t\t\t\t});\n\t\t\t} else if (isTimeOff) {\n\t\t\t\tjson.segments = [{ seconds: [{ regularSeconds: json.seconds, overtimeSeconds: 0, doubletimeSeconds: 0 }] }];\n\t\t\t}\n\t\t}\n\n\t\tvar copy = Object.assign({}, json, {\n\t\t\tstartTime: start,\n\t\t\tendTime: end,\n\t\t\tisStartOutside: isStartOutside,\n\t\t\tisEndOutside: isEndOutside,\n\t\t\tisTimeOff: isTimeOff\n\t\t});\n\n\t\tcopy.__originalModel = model;\n\t\treturn copy;\n\t};\n\n\tvar getModelRange = function getModelRange(models, rangeStart, rangeEnd) {\n\t\tif (Ember.isNone(rangeStart) || Ember.isNone(rangeEnd)) {\n\t\t\t// sort days helper\n\t\t\tvar sortTimes = function sortTimes(a, b) {\n\t\t\t\treturn a < b ? -1 : a > b ? 1 : 0;\n\t\t\t};\n\n\t\t\t// get list of all days in models array\n\t\t\tvar days = models.map(function (m) {\n\t\t\t\treturn getDayTime(getStart(m));\n\t\t\t}).uniq().sort(sortTimes);\n\n\t\t\t// use the provided range start time or use the generated time\n\t\t\tif (Ember.isNone(rangeStart)) {\n\t\t\t\trangeStart = days[0];\n\t\t\t}\n\n\t\t\t// use the provided range end time or use the generated time\n\t\t\tif (Ember.isNone(rangeEnd)) {\n\t\t\t\trangeEnd = _utils.Time.date(days[days.length - 1]).endOf('day').unix();\n\t\t\t}\n\t\t}\n\t\treturn { rangeStart: rangeStart, rangeEnd: rangeEnd };\n\t};\n\n\tvar getStart = function getStart(model) {\n\t\tif (!Ember.isNone(Ember.get(model, 'startTime'))) {\n\t\t\treturn Ember.get(model, 'startTime');\n\t\t} else if (!Ember.isNone(Ember.get(model, 'startDate'))) {\n\t\t\treturn Ember.get(model, 'startDate');\n\t\t} else if (!Ember.isNone(Ember.get(model, 'dateStamp'))) {\n\t\t\treturn Ember.get(model, 'dateStamp');\n\t\t}\n\t};\n\n\tvar getEnd = function getEnd(model) {\n\t\tif (!Ember.isNone(Ember.get(model, 'endTime'))) {\n\t\t\treturn Ember.get(model, 'endTime');\n\t\t} else if (!Ember.isNone(Ember.get(model, 'endDate'))) {\n\t\t\treturn Ember.get(model, 'endDate');\n\t\t} else if (!Ember.isNone(Ember.get(model, 'dateStamp'))) {\n\t\t\treturn Ember.get(model, 'dateStamp') + Ember.get(model, 'seconds');\n\t\t}\n\t};\n\n\t// const validKeys = ['startTime', 'endTime', 'startDate', 'endDate'];\n\t// const getModelKeys = (model, startKey, endKey) => {\n\t//   if (model && model.toJSON) {\n\t//     model = model.toJSON({ includeId: true });\n\t//   }\n\n\t//   if (isEmpty(startKey)) {\n\t//     const opts = Object.keys(model).filter(key => /^start/.test(key));\n\t//     startKey = validKeys.find(vk => opts.indexOf(vk) !== -1);\n\t//   }\n\n\t//   if (isEmpty(endKey)) {\n\t//     const opts = Object.keys(model).filter(key => /^end/.test(key));\n\t//     endKey = validKeys.find(vk => opts.indexOf(vk) !== -1);\n\t//   }\n\n\t//   if (isEmpty(startKey) && isEmpty(endKey) && !isNone(model.dateStamp)) {\n\t//     startKey = 'startTime';\n\t//     endKey = 'endTime';\n\t//   }\n\n\t//   return { startKey, endKey };\n\t// };\n\n\tvar convertObjects = function convertObjects(models) {\n\t\tvar modelArray = models.toArray();\n\t\treturn modelArray.map(function (model) {\n\t\t\tif (model && model._internalModel) {\n\t\t\t\treturn model._internalModel.getRecord();\n\t\t\t}\n\t\t\treturn model;\n\t\t});\n\t};\n});","define('busy-app/components/mod-util/each-type', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\n\t\ttype: null,\n\t\ttypeKey: null,\n\n\t\tmodel: null,\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\t// create content and set default empty array.\n\t\t\tvar content = [];\n\n\t\t\t// get models\n\t\t\tvar models = Ember.get(this, 'model');\n\n\t\t\tif (!Ember.isNone(models)) {\n\t\t\t\t// enforce the model is an array of models\n\t\t\t\t(true && !(Array.isArray(models) || Array.isArray(Ember.get(models, 'content'))) && Ember.assert('<component:each-type> `model` must be an array of model objects.', Array.isArray(models) || Array.isArray(Ember.get(models, 'content'))));\n\n\t\t\t\t// only generate the day range objects\n\t\t\t\t// when the model entries in the array.\n\n\t\t\t\tif (Ember.get(models, 'length') > 0) {\n\t\t\t\t\tvar type = Ember.get(this, 'type');\n\n\t\t\t\t\t(true && !(!Ember.isEmpty(type)) && Ember.assert('<component:each-type> `type` must be a string that is a property of models.', !Ember.isEmpty(type)));\n\n\n\t\t\t\t\tvar typeKey = Ember.get(this, 'typeKey');\n\t\t\t\t\tif (Ember.isEmpty(typeKey)) {\n\t\t\t\t\t\ttypeKey = type + 'Id';\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = models.map(function (item) {\n\t\t\t\t\t\treturn Ember.get(item, typeKey);\n\t\t\t\t\t}).uniq().map(function (id) {\n\t\t\t\t\t\tvar _ref;\n\n\t\t\t\t\t\tvar typeModel = void 0;\n\t\t\t\t\t\tif (Ember.isNone(id)) {\n\t\t\t\t\t\t\ttypeModel = {\n\t\t\t\t\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\t\t\t\tequipmentName: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\t\t\t\tcostCode: (0, _utils.loc)('Unassigned')\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttypeModel = Ember.get(models.find(function (m) {\n\t\t\t\t\t\t\t\treturn Ember.get(m, typeKey) === id;\n\t\t\t\t\t\t\t}) || {}, type);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar filter = models.filter(function (m) {\n\t\t\t\t\t\t\treturn Ember.get(m, typeKey) === id;\n\t\t\t\t\t\t}).map(function (m) {\n\t\t\t\t\t\t\treturn createTypeObject(m);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn _ref = { type: type }, _defineProperty(_ref, typeKey, id), _defineProperty(_ref, type, typeModel), _defineProperty(_ref, 'model', filter), _ref;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tEmber.set(this, 'content', content);\n\t\t}\n\t});\n\n\n\tvar createTypeObject = function createTypeObject(model) {\n\t\tvar isTimeOff = Ember.get(model, 'isTimeOff');\n\t\tif (isTimeOff) {\n\t\t\tvar endTime = Ember.get(model, 'seconds') > 0 ? _utils.Time.date(Ember.get(model, 'dateStamp')).add(Ember.get(model, 'seconds'), 'seconds').unix() : Ember.get(model, 'dateStamp');\n\n\t\t\tEmber.set(model, 'startTime', Ember.get(model, 'dateStamp'));\n\t\t\tEmber.set(model, 'endTime', endTime);\n\n\t\t\tEmber.set(model, 'segments', [{ seconds: [{ regularSeconds: Ember.get(model, 'seconds'), overtimeSeconds: 0, doubletimeSeconds: 0 }] }]);\n\t\t}\n\t\treturn model;\n\t};\n});","define('busy-app/components/mod-util/time-entry/end-for-day', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/mod-util/time-entry/start-for-day', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/mod-util/time-entry/total-break-for-day', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/mod-util/time-entry/total-time-for-day', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/modal-dialog-overlay', ['exports', 'ember-modal-dialog/components/modal-dialog-overlay'], function (exports, _modalDialogOverlay) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _modalDialogOverlay.default;\n    }\n  });\n});","define('busy-app/components/modal-dialog', ['exports', 'ember-modal-dialog/components/modal-dialog'], function (exports, _modalDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _modalDialog.default;\n    }\n  });\n});","define('busy-app/components/model-title/cost-code', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\t\tstate: Ember.inject.service(),\n\n\t\t/**\n   * id is the only property that\n   * should be passed in. All other\n   * properties are set by the component.\n   *\n   * this is a id for the cost-code model\n   *\n   * @property id\n   * @type {string} model UUID\n   */\n\t\tid: null,\n\n\t\t/*** props made available in yield hash ***/\n\n\t\ttitle: '',\n\t\tsubTitle: '',\n\t\tcondensedTitle: '',\n\t\tisUnassigned: false,\n\t\thasInfo: false,\n\t\tcostCode: null,\n\n\t\t/*** end props ***/\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\tthis.getCostCode();\n\t\t\tthis.setTitle();\n\t\t},\n\t\tgetCostCode: function getCostCode() {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'id'))) {\n\t\t\t\tvar costCode = loadCostCode(Ember.get(this, 'state'), Ember.get(this, 'id'));\n\t\t\t\tEmber.set(this, 'costCode', costCode);\n\t\t\t\tEmber.set(this, 'hasInfo', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'costCode', false);\n\t\t\t\tEmber.set(this, 'hasInfo', false);\n\t\t\t}\n\t\t},\n\t\tsetTitle: function setTitle() {\n\t\t\tvar costCode = Ember.get(this, 'costCode');\n\n\t\t\tvar isUnassigned = true;\n\t\t\tvar title = (0, _utils.loc)('Unassigned');\n\t\t\tvar subTitle = '';\n\t\t\tvar condensedTitle = (0, _utils.loc)('Unassigned');\n\n\t\t\tif (!Ember.isNone(costCode)) {\n\t\t\t\ttitle = Ember.get(costCode, 'costCode');\n\t\t\t\tsubTitle = Ember.get(costCode, 'title');\n\t\t\t\tcondensedTitle = title + ' <i>' + subTitle + '</i>';\n\t\t\t\tisUnassigned = false;\n\t\t\t}\n\n\t\t\tthis.setProperties({ title: title, subTitle: subTitle, condensedTitle: condensedTitle, isUnassigned: isUnassigned });\n\t\t}\n\t});\n\n\n\tfunction loadCostCode(state, id) {\n\t\treturn state.getState('cost-code', id);\n\t}\n});","define('busy-app/components/model-title/equipment', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\t\tstate: Ember.inject.service(),\n\n\t\t/**\n   * id is the only property that\n   * should be passed in. All other\n   * properties are set by the component.\n   *\n   * this is a id for the equipment model\n   *\n   * @property id\n   * @type {string} model UUID\n   */\n\t\tid: null,\n\n\t\t/*** props made available in yield hash ***/\n\n\t\ttitle: '',\n\t\tsubTitle: '',\n\t\tcondensedTitle: '',\n\t\tisUnassigned: false,\n\t\thasInfo: false,\n\t\timageUrl: null,\n\t\tequipment: null,\n\n\t\t/*** end props ***/\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\tthis.getEquipment();\n\t\t\tthis.setTitle();\n\t\t},\n\t\tgetEquipment: function getEquipment() {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'id'))) {\n\t\t\t\tvar equipment = loadEquipment(Ember.get(this, 'state'), Ember.get(this, 'id'));\n\t\t\t\tEmber.set(this, 'equipment', equipment);\n\t\t\t\tEmber.set(this, 'imageUrl', getImage(equipment));\n\t\t\t\tEmber.set(this, 'hasInfo', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'equipment', null);\n\t\t\t\tEmber.set(this, 'imageUrl', null);\n\t\t\t\tEmber.set(this, 'hasInfo', false);\n\t\t\t}\n\t\t},\n\t\tsetTitle: function setTitle() {\n\t\t\tvar equipment = Ember.get(this, 'equipment');\n\n\t\t\tvar title = (0, _utils.loc)('Unassigned');\n\t\t\tvar subTitle = '';\n\t\t\tvar condensedTitle = (0, _utils.loc)('Unassigned');\n\t\t\tvar isUnassigned = true;\n\n\t\t\tif (!Ember.isNone(equipment)) {\n\t\t\t\tvar equipmentMake = fixUnknownStrings(Ember.get(equipment, 'equipmentModel.equipmentMake.title'));\n\t\t\t\tvar equipmentModel = fixUnknownStrings(Ember.get(equipment, 'equipmentModel.title'));\n\n\t\t\t\ttitle = fixUnknownStrings(Ember.get(equipment, 'equipmentName'));\n\t\t\t\tsubTitle = (equipmentMake + ' ' + equipmentModel).trim();\n\t\t\t\tcondensedTitle = title + ' ' + subTitle;\n\n\t\t\t\tisUnassigned = false;\n\t\t\t}\n\n\t\t\tthis.setProperties({ title: title, subTitle: subTitle, condensedTitle: condensedTitle, isUnassigned: isUnassigned });\n\t\t}\n\t});\n\n\n\tvar fixUnknownStrings = function fixUnknownStrings(str) {\n\t\treturn !str || str.toLowerCase() === 'unknown' ? '' : str;\n\t};\n\n\tfunction loadEquipment(state, id) {\n\t\tvar equipment = state.getState('equipment', id);\n\n\t\tif (!Ember.isNone(equipment) && !Ember.isEmpty(equipment.equipmentModelId)) {\n\t\t\tvar equipmentModel = state.getState('equipment-model', equipment.equipmentModelId);\n\n\t\t\tif (!Ember.isNone(equipmentModel)) {\n\t\t\t\tif (!Ember.isEmpty(equipmentModel.equipmentMakeId)) {\n\t\t\t\t\tequipmentModel.equipmentMake = state.getState('equipment-make', equipmentModel.equipmentMakeId);\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(equipmentModel.equipmentCategoryId)) {\n\t\t\t\t\tequipmentModel.equipmentCategory = state.getState('equipment-category', equipmentModel.equipmentCategoryId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tequipment.equipmentModel = equipmentModel;\n\t\t}\n\t\treturn equipment;\n\t}\n\n\tvar getImage = function getImage(equipment) {\n\t\tif (!Ember.isNone(equipment)) {\n\t\t\tif (Ember.isNone(Ember.get(equipment, 'imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.equipmentMake.imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.equipmentCategory.imageThumbUrl'))) {\n\t\t\t\treturn '/images/80x80.png';\n\t\t\t} else if (Ember.isNone(Ember.get(equipment, 'imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.equipmentCategory.imageThumbUrl'))) {\n\t\t\t\treturn Ember.get(equipment, 'equipmentModel.equipmentMake.imageThumbUrl');\n\t\t\t} else if (Ember.isNone(Ember.get(equipment, 'imageThumbUrl')) && Ember.isNone(Ember.get(equipment, 'equipmentModel.imageThumbUrl'))) {\n\t\t\t\treturn Ember.get(equipment, 'equipmentModel.equipmentCategory.imageThumbUrl');\n\t\t\t} else if (Ember.isNone(Ember.get(equipment, 'imageThumbUrl'))) {\n\t\t\t\treturn Ember.get(equipment, 'equipmentModel.imageThumbUrl');\n\t\t\t} else {\n\t\t\t\treturn Ember.get(equipment, 'imageThumbUrl');\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n});","define('busy-app/components/model-title/member', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\t\tstate: Ember.inject.service(),\n\n\t\t/**\n   * id is the only property that\n   * should be passed in. All other\n   * properties are set by the component.\n   *\n   * this is a id for the member model\n   *\n   * @property id\n   * @type {string} model UUID\n   */\n\t\tid: null,\n\n\t\t/*** props made available in yield hash ***/\n\n\t\ttitle: '',\n\t\tsubTitle: '',\n\t\tcondensedTitle: '',\n\t\thasInfo: false,\n\t\tmember: null,\n\n\t\t/*** end props ***/\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\tthis.getMember();\n\t\t\tthis.setTitle();\n\t\t},\n\t\tgetMember: function getMember() {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'id'))) {\n\t\t\t\tvar member = loadMember(Ember.get(this, 'state'), Ember.get(this, 'id'));\n\t\t\t\tEmber.set(this, 'member', member);\n\t\t\t\tEmber.set(this, 'hasInfo', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'member', null);\n\t\t\t\tEmber.set(this, 'hasInfo', false);\n\t\t\t}\n\t\t},\n\t\tsetTitle: function setTitle() {\n\t\t\tvar member = Ember.get(this, 'member');\n\t\t\tif (!Ember.isNone(member)) {\n\t\t\t\tvar title = Ember.get(member, 'firstName') + ' ' + Ember.get(member, 'lastName');\n\t\t\t\tvar subTitle = Ember.get(member, 'memberNumber');\n\t\t\t\tvar condensedTitle = title + ' <i>' + subTitle + '</i>';\n\n\t\t\t\tthis.setProperties({ title: title, subTitle: subTitle, condensedTitle: condensedTitle });\n\t\t\t}\n\t\t}\n\t});\n\n\n\tfunction loadMember(state, id) {\n\t\treturn state.getState('member', id);\n\t}\n});","define('busy-app/components/model-title/project', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\t\tstate: Ember.inject.service(),\n\n\t\t/**\n   * id is the only property that\n   * should be passed in. All other\n   * properties are set by the component.\n   *\n   * this is a id for the project model\n   *\n   * @property id\n   * @type {string} model UUID\n   */\n\t\tid: null,\n\n\t\t/*** props made available in yield hash ***/\n\n\t\ttitle: '',\n\t\tsubTitle: '',\n\t\tcondensedTitle: '',\n\t\tisUnassigned: false,\n\t\thasInfo: false,\n\t\tproject: null,\n\n\t\t/*** end props ***/\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tthis._super();\n\n\t\t\t// load project data from ember data cache\n\t\t\tthis.getProjects();\n\n\t\t\t// set project titles\n\t\t\tthis.setTitle();\n\t\t},\n\t\tgetProjects: function getProjects() {\n\t\t\tvar state = Ember.get(this, 'state');\n\t\t\tvar id = Ember.get(this, 'id');\n\t\t\tif (!Ember.isEmpty(id)) {\n\t\t\t\tEmber.set(this, 'project', loadProjectFromLocalStore(state, id));\n\t\t\t\tEmber.set(this, 'hasInfo', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'project', null);\n\t\t\t\tEmber.set(this, 'hasInfo', false);\n\t\t\t}\n\t\t},\n\t\tsetTitle: function setTitle() {\n\t\t\tvar project = Ember.get(this, 'project');\n\n\t\t\tvar title = '';\n\t\t\tvar subTitle = Ember.get(this, 'project.projectInfo.number') || '';\n\t\t\tvar condensedTitle = '';\n\t\t\tvar isUnassigned = false;\n\n\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\tvar titleParts = getTitle(project);\n\t\t\t\ttitle = titleParts.join(' / ');\n\t\t\t\tcondensedTitle = project.title;\n\t\t\t\tif (titleParts.length > 1) {\n\t\t\t\t\tcondensedTitle = condensedTitle + '&nbsp;&nbsp;<i>(' + titleParts[0] + ')</i>';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(title)) {\n\t\t\t\ttitle = (0, _utils.loc)(\"Unassigned\");\n\t\t\t\tcondensedTitle = title;\n\t\t\t\tisUnassigned = true;\n\t\t\t}\n\n\t\t\tthis.setProperties({ title: title, subTitle: subTitle, condensedTitle: condensedTitle, isUnassigned: isUnassigned });\n\t\t}\n\t});\n\n\n\tvar getTitle = function getTitle(project) {\n\t\tvar title = [Ember.get(project, 'title')];\n\t\tif (!Ember.isNone(Ember.get(project, 'parentProject'))) {\n\t\t\ttitle = [].concat(getTitle(Ember.get(project, 'parentProject')), title);\n\t\t}\n\t\treturn title;\n\t};\n\n\t/**\n  * Loads a project from the state service\n  * which is also only loading data from the local\n  * ember data store.\n  *\n  * @method loadProjectFromLocalStore\n  * @param state {StateService}\n  * @param id {string} project id uuid\n  * @return {Project | null}\n  */\n\tfunction loadProjectFromLocalStore(state, id) {\n\t\tvar project = state.getState('project', id);\n\t\tif (!Ember.isNone(project)) {\n\t\t\tloadParent(state, project);\n\t\t\tloadProjectInfo(state, project);\n\t\t}\n\t\treturn project;\n\t}\n\n\tfunction loadParent(state, model) {\n\t\tvar parent = void 0;\n\t\tif (model && model.parentProjectId && model.parentProjectId !== model.id) {\n\t\t\tparent = state.getState('project', model.parentProjectId);\n\t\t\tif (!Ember.isNone(parent)) {\n\t\t\t\tloadParent(state, parent);\n\t\t\t}\n\t\t}\n\t\tmodel.parentProject = parent;\n\t}\n\n\tfunction loadProjectInfo(state, model) {\n\t\tvar projectInfo = state.getStateBy('project-info', 'projectId', model.id);\n\t\tmodel.projectInfo = projectInfo;\n\t}\n});","define('busy-app/components/notes/note-cards', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tinterop: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\n\t\tclassNames: ['c-note-cards'],\n\n\t\tshowUploadDialog: false,\n\t\tshowNewUploadDialog: false,\n\t\tshowCommentDialog: false,\n\t\tshowDeleteDialog: false,\n\t\tshowDeleteCollectionDialog: false,\n\t\tshowProjectDialog: false,\n\n\t\tmediaCollections: null,\n\n\t\tcommentCollection: null,\n\t\tcomment: '',\n\n\t\tdeleteCollection: null,\n\t\tdeleteEntry: null,\n\n\t\tproject: null,\n\t\tprojectCollection: null,\n\n\t\tautoload: true,\n\t\tshowTab: false,\n\n\t\treactAppUrl: Ember.computed('project.id', function () {\n\t\t\tvar projectId = Ember.get(this, 'project.id');\n\t\t\tvar urlParams = { projectId: projectId };\n\t\t\tvar reactAppUrl = Ember.get(this, 'interop').getReactAppUrl('photos', urlParams);\n\n\t\t\treturn reactAppUrl;\n\t\t}),\n\n\t\treactAppWindowName: Ember.computed('reactAppUrl', function () {\n\t\t\tvar reactAppUrl = Ember.get(this, 'reactAppUrl');\n\t\t\tvar reactAppWindowName = Ember.get(this, 'interop').getWindowName(reactAppUrl);\n\n\t\t\treturn reactAppWindowName;\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.get('auth.organization');\n\t\t\tthis.get('auth.member');\n\n\t\t\t// don't autoload photos, open the react app in a new window\n\t\t\tif (Ember.get(this, 'features.photosReact')) {\n\t\t\t\treturn this.send('openPhotosAndNotes');\n\t\t\t}\n\n\t\t\tif (this.get('autoload')) {\n\t\t\t\tthis.loadWatcher();\n\t\t\t}\n\t\t},\n\t\tgetMedia: function getMedia() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._getMedia().then(function (mediaCollections) {\n\t\t\t\tif (!_this.get('isDestroyed') && !Ember.isNone(mediaCollections)) {\n\t\t\t\t\t_this.set('mediaCollections', mediaCollections);\n\t\t\t\t\t_this.getMediaEntries(mediaCollections);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t_getMedia: function _getMedia() {\n\t\t\tif (!Ember.isNone(this.get('project.id'))) {\n\t\t\t\treturn this.get('store').filter('project').findWithAllChildren('media-collection', this.get('project.id'), { _desc: ['submitted_on'], deleted_on: null });\n\t\t\t} else if (!Ember.isNone(this.get('auth.organization.id'))) {\n\t\t\t\treturn this.get('store').query('media-collection', { organization_id: this.get('auth.organization.id'), _desc: ['submitted_on'], deleted_on: null });\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\t\t},\n\n\n\t\tloadWatcher: Ember.observer('auth.organization.id', 'project.id', 'autoload', function () {\n\t\t\tif (this.get('autoload')) {\n\t\t\t\tthis.getMedia();\n\t\t\t}\n\t\t}),\n\n\t\tisArchived: Ember.computed('project.archivedOn', function () {\n\t\t\tif (!Ember.isNone(this.get('project.archivedOn'))) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}),\n\n\t\tgetMediaEntries: function getMediaEntries(collections) {\n\t\t\tvar _this2 = this;\n\n\t\t\tcollections.forEach(function (collection) {\n\t\t\t\tvar query = {\n\t\t\t\t\tmedia_collection_id: collection.get('id'),\n\t\t\t\t\t_desc: ['created_on']\n\t\t\t\t};\n\n\t\t\t\t_this2.get('store').query('media-entry', query).then(function (entries) {\n\t\t\t\t\tcollection.set('mediaEntries', entries);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tcreateNewMediaCollection: function createNewMediaCollection(file) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar mediaCollection = this.get('store').createRecord('media-collection', {\n\t\t\t\torganizationId: this.get('auth.organization.id'),\n\t\t\t\tcreatedBy: this.get('auth.member.id'),\n\t\t\t\tassignedTo: this.get('auth.member.id')\n\t\t\t});\n\n\t\t\tif (!Ember.isNone(this.get('project.id'))) {\n\t\t\t\tmediaCollection.set('projectId', this.get('project.id'));\n\t\t\t}\n\n\t\t\treturn mediaCollection.save().then(function (collection) {\n\t\t\t\tcollection.set('mediaEntries', Ember.A());\n\n\t\t\t\t_this3.createNewPhoto(collection, file);\n\n\t\t\t\t_this3.get('mediaCollections').pushObject(collection._internalModel);\n\n\t\t\t\treturn collection;\n\t\t\t});\n\t\t},\n\t\tcreateNewComment: function createNewComment(collection, comment) {\n\t\t\tvar mediaEntry = this.get('store').createRecord('media-entry', {\n\t\t\t\tmediaCollectionId: collection.get('id'),\n\t\t\t\tcaptureDate: _utils.Time.timestamp(),\n\t\t\t\tcreatedBy: this.get('auth.member.id'),\n\t\t\t\tcomment: comment,\n\t\t\t\tentryType: 10\n\t\t\t});\n\n\t\t\treturn mediaEntry.save().then(function (entry) {\n\t\t\t\tcollection.get('mediaEntries').pushObject(entry);\n\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t},\n\t\tcreateNewPhoto: function createNewPhoto(collection, file) {\n\t\t\tvar mediaEntry = this.get('store').createRecord('media-entry', {\n\t\t\t\tmediaCollectionId: collection.get('id'),\n\t\t\t\tcreatedBy: this.get('auth.member.id'),\n\t\t\t\tcaptureDate: _utils.Time.timestamp(),\n\t\t\t\tfile: file,\n\t\t\t\tentryType: 20\n\t\t\t});\n\n\t\t\treturn mediaEntry.save().then(function (entry) {\n\t\t\t\tcollection.get('mediaEntries').unshiftObject(entry);\n\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t},\n\t\topenReactApp: function openReactApp(path, customParameters, event) {\n\t\t\treturn Ember.get(this, 'interop').openReactApp(path, customParameters, event);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tloadData: function loadData() {\n\t\t\t\tthis.loadWatcher();\n\t\t\t},\n\t\t\topenAddDialog: function openAddDialog() {\n\t\t\t\tthis.set('noteCard', this.get('store').createRecord('media-collection', {\n\t\t\t\t\torganizationId: this.get('auth.organization.id'),\n\t\t\t\t\tcreatedBy: this.get('auth.member.id'),\n\t\t\t\t\tassignedTo: this.get('auth.member.id'),\n\t\t\t\t\tprojectId: this.get('project.id'),\n\t\t\t\t\tmediaEntries: []\n\t\t\t\t}));\n\n\t\t\t\tthis.set('showAddDialog', true);\n\t\t\t},\n\t\t\tcloseAddDialog: function closeAddDialog() {\n\t\t\t\tthis.set('showAddDialog', false);\n\t\t\t\tthis.set('noteCard', null);\n\t\t\t},\n\t\t\timageChangeAddDialog: function imageChangeAddDialog(file, fileUrl) {\n\t\t\t\tvar collection = this.get('noteCard');\n\t\t\t\tvar mediaEntry = this.get('store').createRecord('media-entry', {\n\t\t\t\t\tcreatedBy: collection.get('createdBy'),\n\t\t\t\t\tcaptureDate: _utils.Time.timestamp(),\n\t\t\t\t\tfile: file,\n\t\t\t\t\tfileThumbUrl: fileUrl,\n\t\t\t\t\tentryType: 20\n\t\t\t\t});\n\n\t\t\t\tcollection.get('mediaEntries').pushObject(mediaEntry);\n\t\t\t},\n\t\t\tsaveAddDialog: function saveAddDialog() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar collection = this.get('noteCard');\n\n\t\t\t\treturn collection.save().then(function (mc) {\n\t\t\t\t\tvar savedEntries = [];\n\n\t\t\t\t\tcollection.get('mediaEntries').forEach(function (entry) {\n\t\t\t\t\t\tentry.set('mediaCollectionId', mc.get('id'));\n\t\t\t\t\t\tsavedEntries.push(entry.save());\n\t\t\t\t\t});\n\n\t\t\t\t\treturn Ember.RSVP.all(savedEntries).then(function (entries) {\n\t\t\t\t\t\tmc.set('mediaEntries', entries);\n\t\t\t\t\t\t_this4.get('mediaCollections').update();\n\n\t\t\t\t\t\treturn entries;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\taddNoteProject: function addNoteProject(item) {\n\t\t\t\tthis.set('noteCard.projectId', item.get('id'));\n\t\t\t},\n\t\t\topenNote: function openNote(item) {\n\t\t\t\tvar route = Ember.getOwner(this).lookup('route:application');\n\t\t\t\troute.transitionTo('note.detail', item.get('id'));\n\t\t\t},\n\t\t\topenPhotosAndNotes: function openPhotosAndNotes(event) {\n\t\t\t\treturn Ember.get(this, 'interop').openReactApp('photos', { projectId: Ember.get(this, 'project.id') }, event);\n\t\t\t},\n\n\n\t\t\t/** start add comment functions **/\n\t\t\topenCommentDialog: function openCommentDialog(collection) {\n\t\t\t\tcollection.set('isMenuOpen', false);\n\n\t\t\t\tthis.set('comment', '');\n\t\t\t\tthis.set('commentCollection', collection);\n\n\t\t\t\tthis.set('showCommentDialog', true);\n\t\t\t},\n\t\t\tsaveComment: function saveComment() {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\treturn this.createNewComment(this.get('commentCollection'), this.get('comment')).then(function (comment) {\n\t\t\t\t\t_this5.set('commentCollection', null);\n\t\t\t\t\t_this5.set('comment', '');\n\n\t\t\t\t\treturn comment;\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseCommentDialog: function closeCommentDialog() {\n\t\t\t\tthis.set('comment', '');\n\t\t\t\tthis.set('commentCollection', null);\n\n\t\t\t\tthis.set('showCommentDialog', false);\n\t\t\t},\n\n\t\t\t/** end add comment functions **/\n\n\t\t\t/** start delete collection entry functions **/\n\t\t\topenDeleteDialog: function openDeleteDialog(collection, entry) {\n\t\t\t\tthis.set('deleteCollection', collection);\n\t\t\t\tthis.set('deleteEntry', entry);\n\t\t\t\tthis.set('showDeleteDialog', true);\n\t\t\t},\n\t\t\tdeleteEntry: function deleteEntry() {\n\t\t\t\tvar entry = this.get('deleteEntry');\n\t\t\t\tvar collection = this.get('deleteCollection');\n\n\t\t\t\tentry.deleteRecord().then(function () {\n\t\t\t\t\tcollection.get('mediaEntries').removeObject(entry);\n\t\t\t\t});\n\n\t\t\t\tthis.set('deleteCollection', null);\n\t\t\t\tthis.set('deleteEntry', null);\n\t\t\t\tthis.set('showDeleteDialog', false);\n\t\t\t},\n\t\t\tcloseDeleteDialog: function closeDeleteDialog() {\n\t\t\t\tthis.set('deleteCollection', null);\n\t\t\t\tthis.set('deleteEntry', null);\n\t\t\t\tthis.set('showDeleteDialog', false);\n\t\t\t},\n\n\n\t\t\t/** end delete collection entry functions **/\n\n\t\t\t/** start delete collection functions **/\n\t\t\topenDeleteCollectionDialog: function openDeleteCollectionDialog(collection) {\n\t\t\t\tcollection.set('isMenuOpen', false);\n\n\t\t\t\tthis.set('deleteCollection', collection);\n\t\t\t\tthis.set('showDeleteCollectionDialog', true);\n\t\t\t},\n\t\t\tdeleteCollection: function deleteCollection() {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tvar collection = this.get('deleteCollection');\n\n\t\t\t\tcollection.destroyRecord().then(function () {\n\t\t\t\t\t_this6.get('mediaCollections').removeObject(collection);\n\t\t\t\t});\n\n\t\t\t\tthis.set('deleteCollection', null);\n\t\t\t\tthis.set('showDeleteCollectionDialog', false);\n\t\t\t},\n\t\t\tcloseDeleteCollectionDialog: function closeDeleteCollectionDialog() {\n\t\t\t\tthis.set('deleteCollection', null);\n\n\t\t\t\tthis.set('showDeleteCollectionDialog', false);\n\t\t\t},\n\n\t\t\t/** end delete collection functions **/\n\n\t\t\t/** start change project functions **/\n\t\t\topenProjectDialog: function openProjectDialog(collection) {\n\t\t\t\tcollection.set('isMenuOpen', false);\n\n\t\t\t\tthis.set('projectCollection', collection);\n\t\t\t\tthis.set('showProjectDialog', true);\n\t\t\t},\n\t\t\tprojectSelected: function projectSelected(item) {\n\t\t\t\tthis.set('projectCollection.projectId', item.get('id'));\n\t\t\t},\n\t\t\tsaveProject: function saveProject() {\n\t\t\t\tvar collection = this.get('mediaCollections').findBy('id', this.get('projectCollection.id'));\n\n\t\t\t\tif (!Ember.isNone(collection) && collection.get('hasDirtyAttributes')) {\n\t\t\t\t\treturn collection.save();\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseProjectDialog: function closeProjectDialog() {\n\t\t\t\tvar collection = this.get('mediaCollections').findBy('id', this.get('projectCollection.id'));\n\t\t\t\tcollection.rollbackAttributes();\n\n\t\t\t\tthis.set('projectCollection', null);\n\t\t\t\tthis.set('showProjectDialog', false);\n\t\t\t},\n\n\t\t\t/** end change project functions **/\n\n\t\t\t/**\n    * add image function for adding images\n    * with a new collection\n    *\n    */\n\t\t\timageChange: function imageChange(file) {\n\t\t\t\treturn this.createNewMediaCollection(file);\n\t\t\t},\n\n\n\t\t\t/**\n    * opens the collection actions menu\n    *\n    */\n\t\t\topenOptionsMenu: function openOptionsMenu(collection) {\n\t\t\t\tcollection.set('isMenuOpen', !collection.get('isMenuOpen'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/paper-datetime-picker', ['exports', '@busy-web/ember-date-time/components/ember-date-time-picker'], function (exports, _emberDateTimePicker) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t(function () {\n\t\tEmber.deprecate('{{paper-datetime-picker}} has been changed to {{ember-date-time-picker}}. Please migrate to use this.', false, { id: '@busy-web-ember-date-time-paper-datetime-picker', until: 'v2.4.0' });\n\t})();\n\n\texports.default = _emberDateTimePicker.default;\n});","define('busy-app/components/private/date-input', ['exports', '@busy-web/ember-date-time/components/private/date-input'], function (exports, _dateInput) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _dateInput.default;\n    }\n  });\n});","define('busy-app/components/private/date-picker', ['exports', '@busy-web/ember-date-time/components/private/date-picker'], function (exports, _datePicker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _datePicker.default;\n    }\n  });\n});","define('busy-app/components/private/date-time-menu', ['exports', '@busy-web/ember-date-time/components/private/date-time-menu'], function (exports, _dateTimeMenu) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _dateTimeMenu.default;\n    }\n  });\n});","define('busy-app/components/private/time-picker', ['exports', '@busy-web/ember-date-time/components/private/time-picker'], function (exports, _timePicker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _timePicker.default;\n    }\n  });\n});","define('busy-app/components/projects/cost-codes-manager', ['exports', '@busy-web/utils', 'busy-app/utils/collection', 'busy-app/utils/logger'], function (exports, _utils, _collection, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\t// component definition\n\t\tclassNames: ['c--projects--cost-codes-manager'],\n\n\t\t// services\n\t\tstore: Ember.inject.service(),\n\t\tstate: Ember.inject.service(),\n\t\tauth: Ember.inject.service(),\n\n\t\t// arguments\n\t\tonClose: null,\n\t\tonCancel: null,\n\t\tonSave: null,\n\t\tcancelText: (0, _utils.loc)('Cancel'),\n\t\tsaveText: (0, _utils.loc)('Save'),\n\t\tprojectId: null, // not required\n\t\tprojectCostCodeLinks: null,\n\n\t\t// collections\n\t\tcostCodes: null, // heavy use of passing values around by reference and relying on side effects\n\t\tcostCodeGroups: null, // heavy use of passing values around by reference and relying on side effects\n\n\t\t// state\n\t\tisLoading: false,\n\n\t\tisAllSelected: Ember.computed('costCodes.@each._selected', function () {\n\t\t\t// Logger.info(this, 'COMPUTE', 'isAllSelected');\n\n\t\t\tif (Ember.isNone(Ember.get(this, 'costCodes'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'costCodes').isEvery('_selected');\n\t\t}),\n\n\t\tisPartialSelected: Ember.computed('isAllSelected', 'costCodes.@each._selected', function () {\n\t\t\t// Logger.info(this, 'COMPUTED', 'isPartialSelected', getProperties(this, ['isAllSelected', 'costCodes']));\n\n\t\t\tif (Ember.get(this, 'isAllSelected') || Ember.isNone(Ember.get(this, 'costCodes')) || !Ember.get(this, 'costCodes.isLoaded')) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'costCodes').isAny('_selected') && Ember.get(this, 'costCodes').isAny('_selected', false);\n\t\t\t}\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\t// Logger.info(this, 'init');\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.loadData();\n\t\t\t_utils.Assert.isArray(Ember.get(this, 'projectCostCodeLinks'));\n\t\t\t_utils.Assert.test('onClose action must be provided', typeof Ember.get(this, 'onClose') === 'function');\n\t\t\t_utils.Assert.test('onCancel action must be provided', typeof Ember.get(this, 'onCancel') === 'function');\n\t\t\t_utils.Assert.test('onSave action must be provided and must return a promise', typeof Ember.get(this, 'onSave') === 'function');\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar _this = this;\n\n\t\t\tEmber.set(this, 'isLoading', true);\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\tcostCodes: null,\n\t\t\t\tcostCodeGroups: null\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tcostCodes: this.loadCostCodes(),\n\t\t\t\tcostCodeGroups: this.loadCostCodeGroups()\n\t\t\t}).then(function (data) {\n\t\t\t\treturn _this.initData(data);\n\t\t\t}).finally(function () {\n\t\t\t\treturn Ember.set(_this, 'isLoading', false);\n\t\t\t});\n\t\t},\n\t\tloadCostCodes: function loadCostCodes() {\n\t\t\tvar query = {\n\t\t\t\tarchived_on: null,\n\t\t\t\t_asc: ['costCode']\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'state').findAll('costCode', query).then(function (results) {\n\t\t\t\treturn (0, _collection.localeSortBy)(results, 'costCode');\n\t\t\t});\n\t\t},\n\t\tloadCostCodeGroups: function loadCostCodeGroups() {\n\t\t\tvar query = {\n\t\t\t\tarchived_on: null,\n\t\t\t\t_asc: ['groupName']\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'state').findAll('costCodeGroup', query).then(function (results) {\n\t\t\t\treturn (0, _collection.localeSortBy)(results, 'groupName');\n\t\t\t});\n\t\t},\n\t\tinitData: function initData(_ref) {\n\t\t\tvar costCodes = _ref.costCodes,\n\t\t\t    costCodeGroups = _ref.costCodeGroups;\n\n\t\t\t// Logger.info(this, 'initData', { costCodes, costCodeGroups });\n\n\t\t\treturn Ember.setProperties(this, {\n\t\t\t\tcostCodes: this.initCostCodes(costCodes),\n\t\t\t\tcostCodeGroups: this.initCostCodeGroups(costCodeGroups, costCodes)\n\t\t\t});\n\t\t},\n\t\tinitCostCodes: function initCostCodes(costCodes) {\n\t\t\tvar links = Ember.get(this, 'projectCostCodeLinks');\n\n\t\t\t// Logger.info(this, 'initCostCodes', { costCodes, links });\n\n\t\t\tif (Ember.isNone(costCodes) || Ember.isEmpty(links)) {\n\t\t\t\treturn costCodes;\n\t\t\t}\n\n\t\t\tcostCodes.forEach(function (costCode) {\n\t\t\t\tvar link = links.findBy('costCodeId', Ember.get(costCode, 'id'));\n\t\t\t\tvar _selected = !Ember.isNone(link) && Ember.get(link, 'deletedOn') === null;\n\n\t\t\t\tEmber.setProperties(costCode, { _selected: _selected });\n\t\t\t});\n\n\t\t\treturn costCodes;\n\t\t},\n\t\tinitCostCodeGroups: function initCostCodeGroups(costCodeGroups, costCodes) {\n\t\t\t// Logger.info(this, 'buildCostCodeGroups', { costCodeGroups, costCodes });\n\n\t\t\tif (Ember.isNone(costCodeGroups)) {\n\t\t\t\treturn costCodeGroups;\n\t\t\t}\n\n\t\t\tvar costCodesByGroup = (0, _collection.groupBy)(costCodes, 'costCodeGroupId');\n\n\t\t\tif (costCodesByGroup.hasOwnProperty(null) && costCodesByGroup[null].length) {\n\t\t\t\tvar id = _utils.UUID.generate();\n\t\t\t\tvar unGroup = Ember.get(this, 'store').createRecord('cost-code-group', { id: id, groupName: (0, _utils.loc)('Ungrouped') });\n\n\t\t\t\tcostCodeGroups.pushObject(unGroup);\n\n\t\t\t\tcostCodesByGroup[id] = costCodesByGroup[null];\n\t\t\t\tdelete costCodesByGroup[null];\n\t\t\t}\n\n\t\t\tcostCodeGroups.forEach(function (group) {\n\t\t\t\tvar groupCostCodes = Ember.get(costCodesByGroup, Ember.get(group, 'id'));\n\n\t\t\t\tif (!Ember.isNone(groupCostCodes)) {\n\t\t\t\t\tgroupCostCodes = (0, _collection.localeSortBy)(groupCostCodes, 'costCode');\n\t\t\t\t}\n\n\t\t\t\tEmber.setProperties(group, {\n\t\t\t\t\t_costCodes: groupCostCodes,\n\t\t\t\t\t_selected: Ember.computed('_costCodes.@each._selected', function () {\n\t\t\t\t\t\tvar costCodes = Ember.get(this, '_costCodes');\n\t\t\t\t\t\treturn Ember.isNone(costCodes) ? false : Ember.get(this, '_costCodes').every(function (cc) {\n\t\t\t\t\t\t\treturn Ember.get(cc, '_selected');\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\n\t\t\t\t\t_selectedPartial: Ember.computed('_selected', '_costCodes.@each._selected', function () {\n\t\t\t\t\t\tvar costCodes = Ember.get(this, '_costCodes');\n\n\t\t\t\t\t\tif (Ember.get(this, '_selected') || Ember.isNone(costCodes)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn costCodes.isAny('_selected') && costCodes.isAny('_selected', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn costCodeGroups;\n\t\t},\n\n\n\t\t/*\n   * Action helpers\n   */\n\n\t\tcreateCostCodeLink: function createCostCodeLink(costCode) {\n\t\t\tvar createdOn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.Time.timestamp();\n\n\t\t\t// Logger.info(this, 'createCostCodeLink', get(costCode, 'costCode'));\n\n\t\t\tvar costCodeId = Ember.get(costCode, 'id');\n\t\t\tvar projectId = Ember.get(this, 'projectId');\n\n\t\t\tvar link = Ember.get(this, 'projectCostCodeLinks').findBy('costCodeId', costCodeId);\n\n\t\t\tif (Ember.isNone(link)) {\n\t\t\t\t// Logger.info(this, 'createCostCodeLink', get(costCode, 'costCode'), 'create');\n\n\t\t\t\tlink = Ember.get(this, 'store').createRecord('project-cost-code-link', {\n\t\t\t\t\t// id: UUID.generate(),\n\t\t\t\t\tcostCodeId: costCodeId,\n\t\t\t\t\tprojectId: projectId,\n\t\t\t\t\tcreatedOn: createdOn,\n\t\t\t\t\tdeletedOn: null\n\t\t\t\t});\n\n\t\t\t\t// console.log('link', link);\n\t\t\t\t// debugger;\n\n\t\t\t\tEmber.set(this, 'projectCostCodeLinks', Ember.get(this, 'projectCostCodeLinks').concat(link));\n\t\t\t} else {\n\t\t\t\t// Logger.info(this, 'createCostCodeLink', get(costCode, 'costCode'), 'undelete');\n\n\t\t\t\tEmber.setProperties(link, { deletedOn: null });\n\t\t\t}\n\n\t\t\tEmber.setProperties(costCode, { _selected: true });\n\n\t\t\treturn link;\n\t\t},\n\t\tdeleteCostCodeLink: function deleteCostCodeLink(costCode) {\n\t\t\tvar deletedOn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.Time.timestamp();\n\n\t\t\tvar costCodeId = Ember.get(costCode, 'id');\n\t\t\t// Logger.info(this, 'deleteCostCodeLink', get(costCode, 'costCode'));\n\n\t\t\tvar link = Ember.get(this, 'projectCostCodeLinks').findBy('costCodeId', costCodeId);\n\n\t\t\t// if it has an id, it's from the API, so set the deletedOn to make it patch as a deleted record\n\t\t\t// \totherwise, it hasn't been persisted the database, so just destroy it\n\t\t\tif (Ember.get(link, 'id')) {\n\t\t\t\tEmber.setProperties(link, { deletedOn: deletedOn });\n\t\t\t} else {\n\t\t\t\t// Logger.info(this, 'destroyCostCode', get(costCode, 'costCode'));\n\t\t\t\tEmber.set(this, 'projectCostCodeLinks', Ember.get(this, 'projectCostCodeLinks').without(link));\n\t\t\t}\n\n\t\t\tEmber.setProperties(costCode, { _selected: false });\n\n\t\t\treturn link;\n\t\t},\n\t\ttoggleAll: function toggleAll(selectAll) {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Logger.info(this, 'toggleAll', selectAll);\n\t\t\tvar costCodes = Ember.get(this, 'costCodes');\n\t\t\tvar now = _utils.Time.timestamp();\n\n\t\t\tif (selectAll) {\n\t\t\t\tcostCodes.forEach(function (costCode) {\n\t\t\t\t\treturn _this2.createCostCodeLink(costCode, now);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcostCodes.forEach(function (costCode) {\n\t\t\t\t\treturn _this2.deleteCostCodeLink(costCode, now);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Logger.info(this, 'toggleAll', 'complete');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcreateCostCodeLink: function createCostCodeLink(costCode, createdOn) {\n\t\t\t\t// Logger.info(this, 'createCostCodeLink', costCode, createdOn);\n\n\t\t\t\treturn this.createCostCodeLink(costCode, createdOn);\n\t\t\t},\n\t\t\tdeleteCostCodeLink: function deleteCostCodeLink(costCode, deletedOn) {\n\t\t\t\t// Logger.info(this, 'deleteCostCodeLink', costCode, deletedOn);\n\n\t\t\t\treturn this.deleteCostCodeLink(costCode, deletedOn);\n\t\t\t},\n\t\t\ttoggleAll: function toggleAll() {\n\t\t\t\t// Logger.info(this, 'toggleAll');\n\n\t\t\t\tvar selectAll = !Ember.get(this, 'isAllSelected');\n\n\t\t\t\treturn this.toggleAll(selectAll);\n\t\t\t},\n\t\t\tcancel: function cancel() {\n\t\t\t\t_logger.default.info(this, 'cancel');\n\n\t\t\t\treturn this.sendAction('onCancel');\n\t\t\t},\n\t\t\tclose: function close() {\n\t\t\t\t_logger.default.info(this, 'close');\n\n\t\t\t\treturn this.sendAction('onClose');\n\t\t\t},\n\t\t\tsave: function save() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['onSave', 'projectCostCodeLinks', 'store']),\n\t\t\t\t    onSave = _EmberGetProperties.onSave,\n\t\t\t\t    projectCostCodeLinks = _EmberGetProperties.projectCostCodeLinks;\n\n\t\t\t\t_logger.default.info(this, 'save', projectCostCodeLinks);\n\n\t\t\t\treturn onSave(projectCostCodeLinks).catch(function (err) {\n\t\t\t\t\t// Logger.error(this, 'actions:save', err);\n\n\t\t\t\t\treturn Ember.RSVP.reject('Something went wrong (' + err.message + ')'); // FIXME\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn _this3.send('close');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/cost-codes-manager/cost-code', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tcostCode: null,\n\t\tcreateCostCodeLink: null,\n\t\tdeleteCostCodeLink: null,\n\n\t\ttoggleCostCodeSelection: function toggleCostCodeSelection(costCode) {\n\t\t\t// Logger.info(this, 'toggleCostCodeSelection', get(costCode, 'costCode'), !get(costCode, '_selected'));\n\n\t\t\tvar includeCostCode = !Ember.get(costCode, '_selected');\n\t\t\tvar now = _utils.Time.timestamp();\n\n\t\t\tvar costCodeAction = includeCostCode ? Ember.get(this, 'createCostCodeLink') : Ember.get(this, 'deleteCostCodeLink');\n\n\t\t\treturn costCodeAction(costCode, now);\n\t\t},\n\n\n\t\tactions: {\n\t\t\ttoggleCostCodeSelection: function toggleCostCodeSelection(costCode) {\n\t\t\t\t// Logger.info(this, 'toggleCostCodeSelection', get(costCode, 'id'), get(costCode, '_selected'));\n\n\t\t\t\tthis.toggleCostCodeSelection(costCode);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/cost-codes-manager/group', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\n\t\t// arguments\n\t\tcostCodeGroup: null,\n\t\tcreateCostCodeLink: null,\n\t\tdeleteCostCodeLink: null,\n\n\t\t// properties\n\t\t_expanded: false,\n\n\t\ttoggleGroupSelection: function toggleGroupSelection(group) {\n\t\t\tvar _this = this;\n\n\t\t\t// Logger.info(this, 'toggleGroupSelection', get(group, 'groupName'), !get(group, '_selected'));\n\n\t\t\tvar includeCostCode = !Ember.get(group, '_selected');\n\t\t\tvar now = _utils.Time.timestamp();\n\n\t\t\tEmber.get(group, '_costCodes').forEach(function (costCode) {\n\t\t\t\tif (includeCostCode) {\n\t\t\t\t\tEmber.get(_this, 'createCostCodeLink')(costCode, now);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.get(_this, 'deleteCostCodeLink')(costCode, now);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn group;\n\t\t},\n\n\n\t\tactions: {\n\t\t\ttoggleGroupSelection: function toggleGroupSelection(group) {\n\t\t\t\t// Logger.info(this, 'toggleGroupSelection', get(group, 'id'), get(group, '_selected'), { arguments: [...arguments] });\n\n\t\t\t\treturn this.toggleGroupSelection(group);\n\t\t\t},\n\t\t\ttoggleGroupDetails: function toggleGroupDetails() {\n\t\t\t\t// Logger.info(this, 'toggleGroupDetails', get(this, 'costCodeGroup.groupName'), get(this, '_expanded'));\n\n\t\t\t\treturn this.toggleProperty('_expanded');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/cost-codes-select', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c--cost-code-select', 'bc-validate'],\n\t\tclassNameBindings: ['showUnableToClockInWarning:invalid'],\n\n\t\t// services\n\t\tstore: Ember.inject.service(),\n\t\tstate: Ember.inject.service(),\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\n\t\tprojectCostCodeLinks: null,\n\t\tisSubproject: false,\n\t\tprojectId: null,\n\t\tcancelText: null,\n\t\tsaveText: null,\n\t\tonCancelCostCodeChanges: null,\n\t\tonSaveManagerChanges: null,\n\n\t\tshowCostCodesManager: false,\n\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tactiveProjectCostCodeLinks: Ember.computed.filterBy('projectCostCodeLinks', 'deletedOn', null),\n\t\tshowLinkedCostCodesCount: Ember.computed.and('isLinkedCostCodesEnabled', 'activeProjectCostCodeLinks.length'),\n\n\t\tshowCostCodesAreRecommended: Ember.computed('auth.organization.costCodes.{isFulfilled,length}', function () {\n\t\t\treturn !Ember.isNone('auth.organization.costCodes') && this.get('auth.organization.costCodes.isFulfilled') && this.get('auth.organization.costCodes.length') === 0;\n\t\t}),\n\n\t\tshowUnableToClockInWarning: Ember.computed('auth.organization.requireCostCode', 'activeProjectCostCodeLinks.length', function () {\n\t\t\treturn this.get('auth.organization.requireCostCode') && this.get('activeProjectCostCodeLinks.length') === 0;\n\t\t}),\n\n\t\tactions: {\n\t\t\tonOpenCostCodesManager: function onOpenCostCodesManager() {\n\t\t\t\t_logger.default.info(this, 'openCostCodesManager');\n\n\t\t\t\treturn Ember.setProperties(this, { showCostCodesManager: true });\n\t\t\t},\n\t\t\tonCloseCostCodesManager: function onCloseCostCodesManager() {\n\t\t\t\t_logger.default.info(this, 'onCloseCostCodesManager');\n\n\t\t\t\treturn Ember.setProperties(this, { showCostCodesManager: false });\n\t\t\t},\n\t\t\tonCancelCostCodeChanges: function onCancelCostCodeChanges() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\t_logger.default.info(this, 'onCancelCostCodeChanges');\n\n\t\t\t\treturn Ember.get(this, 'onCancelCostCodeChanges')().then(function () {\n\t\t\t\t\treturn _this.send('onCloseCostCodesManager');\n\t\t\t\t});\n\t\t\t},\n\t\t\tonSaveManagerChanges: function onSaveManagerChanges(projectCostCodeLinks) {\n\t\t\t\t_logger.default.info(this, 'onSaveManagerChanges', { projectCostCodeLinks: projectCostCodeLinks });\n\n\t\t\t\treturn Ember.get(this, 'onSaveManagerChanges')(projectCostCodeLinks);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/cost-codes', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/collection'], function (exports, _utils, _logger, _collection) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\t// component definition\n\t\tclassNames: ['c--projects--cost-codes'],\n\t\ttagName: 'section',\n\n\t\t// services\n\t\tauth: Ember.inject.service(),\n\t\tstate: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\n\t\t// arguments\n\t\tproject: null,\n\t\tshowCostCodesManager: false,\n\t\tlinkedCostCodes: null,\n\n\t\t// component state\n\t\tcostCodeGroupFilter: null,\n\n\t\t// collections\n\t\tprojectCostCodeLinks: null,\n\t\tcostCodeGroups: null,\n\t\tcostCodes: null,\n\n\t\tcanManageProjects: Ember.computed('auth.authMemberPosition.manageProjects', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageProjects');\n\t\t}),\n\n\t\t// costCodesFiltered: computed.alias('costCodes'),\n\t\tcostCodesFiltered: Ember.computed('costCodes.@each.{costCodeGroupId}', 'costCodeGroupFilter', function () {\n\t\t\treturn this.filterCostCodes(Ember.get(this, 'costCodes'), Ember.get(this, 'costCodeGroupFilter'));\n\t\t}),\n\n\t\t// collections sort config\n\t\tcostCodesSorter: Object.freeze(['costCode', 'id']), // eslint-disable-line ember/avoid-leaking-state-in-ember-objects\n\t\tcostCodeGroupsSorter: Object.freeze(['groupName', 'id']), // eslint-disable-line ember/avoid-leaking-state-in-ember-objects\n\n\t\t// collections - sorted, for output\n\t\tcostCodesSorted: Ember.computed.sort('costCodesFiltered', 'costCodesSorter'),\n\t\tcostCodeGroupsSorted: Ember.computed.sort('costCodeGroups', 'costCodeGroupsSorter'),\n\n\t\tnoEntries: Ember.computed('isLoaded', 'projectCostCodeLinks.length', function () {\n\t\t\treturn Ember.get(this, 'isLoaded') && Ember.get(this, 'projectCostCodeLinks.length') === 0;\n\t\t}),\n\n\t\tcostCodeGroupFilterOptions: Ember.computed('costCodeGroupFilter', 'costCodeGroupsSorted.@each.{isFulfilled,id,groupName}', function () {\n\t\t\treturn this.getCostCodeGroupFilterOptions(Ember.get(this, 'costCodeGroupsSorted'), Ember.get(this, 'costCodeGroupFilter'));\n\t\t}),\n\n\t\tcostCodeGroupsHash: Ember.computed('costCodeGroups.[]', function () {\n\t\t\treturn (0, _collection.keyBy)(Ember.get(this, 'costCodeGroups'), 'id');\n\t\t}),\n\n\t\tcurrentGroupFilter: Ember.computed('costCodeGroupFilterOptions.@each._selected', function () {\n\t\t\treturn Ember.get(this, 'costCodeGroupFilterOptions').findBy('_selected');\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tif (!window.runningTests) {\n\t\t\t\tthis.loadData();\n\t\t\t}\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar _this = this;\n\n\t\t\t// Logger.info(this, 'loadData');\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\tcostCodes: null,\n\t\t\t\tcostCodeGroups: null,\n\t\t\t\tprojectCostCodeLinks: null,\n\n\t\t\t\tisLoaded: false,\n\t\t\t\tisLoading: true\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tprojectCostCodeLinks: this.loadProjectCostCodeLinks(),\n\t\t\t\tcostCodeGroups: this.loadCostCodeGroups()\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar projectCostCodeLinks = _ref.projectCostCodeLinks,\n\t\t\t\t    costCodeGroups = _ref.costCodeGroups;\n\n\t\t\t\treturn _this.loadCostCodes(projectCostCodeLinks).then(function (costCodes) {\n\t\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\t\tcostCodes: costCodes,\n\t\t\t\t\t\tcostCodeGroups: costCodeGroups,\n\t\t\t\t\t\tprojectCostCodeLinks: projectCostCodeLinks,\n\n\t\t\t\t\t\tisLoaded: true,\n\t\t\t\t\t\tisLoading: false\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcostCodes: costCodes,\n\t\t\t\t\t\tcostCodeGroups: costCodeGroups,\n\t\t\t\t\t\tprojectCostCodeLinks: projectCostCodeLinks\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadProjectCostCodeLinks: function loadProjectCostCodeLinks() {\n\t\t\treturn Ember.get(this, 'store').findAll('project-cost-code-link', { project_id: Ember.get(this, 'project.id') });\n\t\t},\n\t\tloadCostCodeGroups: function loadCostCodeGroups() {\n\t\t\treturn Ember.get(this, 'state').findAll('cost-code-group');\n\t\t},\n\t\tloadCostCodes: function loadCostCodes(projectCostCodeLinks) {\n\t\t\tif (Ember.isNone(projectCostCodeLinks)) {\n\t\t\t\treturn Ember.RSVP.resolve(projectCostCodeLinks);\n\t\t\t}\n\n\t\t\tvar ids = projectCostCodeLinks.mapBy('costCodeId');\n\t\t\t// Logger.info(this, 'loadCostCodes', ids);\n\n\t\t\treturn Ember.get(this, 'state').findRecords('cost-code', ids);\n\t\t},\n\t\tgetCostCodeGroupFilterOptions: function getCostCodeGroupFilterOptions(costCodeGroups, costCodeGroupFilter) {\n\t\t\tvar options = [Ember.Object.create({ key: null, value: (0, _utils.loc)('All'), _selected: costCodeGroupFilter === null }), Ember.Object.create({ key: 'ungrouped', value: (0, _utils.loc)('Ungrouped'), _selected: costCodeGroupFilter === 'ungrouped' })];\n\n\t\t\tEmber.get(this, 'costCodeGroupsSorted').forEach(function (group) {\n\t\t\t\treturn options.push(Ember.Object.create({ key: Ember.get(group, 'id'), value: Ember.get(group, 'groupName'), _selected: costCodeGroupFilter === Ember.get(group, 'id') }));\n\t\t\t});\n\n\t\t\treturn options;\n\t\t},\n\t\tfilterCostCodes: function filterCostCodes(costCodes, costCodeGroupFilter) {\n\t\t\t// Logger.info(this, 'filterCostCodes', costCodes, costCodeGroupFilter);\n\n\t\t\tif (Ember.isNone(costCodes)) {\n\t\t\t\treturn costCodes;\n\t\t\t}\n\n\t\t\tcostCodes = costCodes.filterBy('archivedOn', null);\n\n\t\t\tif (!Ember.isNone(costCodeGroupFilter)) {\n\t\t\t\tvar filterBy = costCodeGroupFilter === 'ungrouped' ? null : costCodeGroupFilter;\n\t\t\t\tcostCodes = costCodes.filterBy('costCodeGroupId', filterBy);\n\t\t\t}\n\n\t\t\t// Logger.info(this, 'filterCostCodes', costCodes);\n\t\t\t// Logger.info(this, 'filterCostCodes', costCodes.mapBy('id'));\n\n\n\t\t\treturn costCodes;\n\t\t},\n\t\trollbackManagerChanges: function rollbackManagerChanges() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Logger.info(this, 'rollbackManagerChanges', get(this, 'costCodeManagerProjectLinks'));\n\n\t\t\tEmber.get(this, 'costCodeManagerProjectLinks').forEach(function (model) {\n\t\t\t\tmodel.rollbackAttributes();\n\t\t\t});\n\n\t\t\t// return this.loadData().then(() => {});\n\t\t\treturn Ember.get(this, 'project.projectCostCodeLinks').reload().then(function () {\n\n\t\t\t\treturn Ember.setProperties(_this2, {\n\t\t\t\t\tcostCodeManagerProjectLinks: [],\n\t\t\t\t\tshowCostCodesManager: false\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsaveManagerChanges: function saveManagerChanges(incomingProjectCostCodeLinks) {\n\t\t\tvar _this3 = this;\n\n\t\t\t// Logger.info(this, 'saveManagerChanges');\n\t\t\tvar changedModels = incomingProjectCostCodeLinks.filterBy('hasDirtyAttributes');\n\n\t\t\tif (Ember.isNone(changedModels)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.all(changedModels.map(function (model) {\n\t\t\t\treturn model.save();\n\t\t\t})).then(function () {\n\t\t\t\treturn _this3.loadData();\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this3, 'saveManagerChanges', err);\n\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tonSelectGroupFilter: function onSelectGroupFilter(item) {\n\t\t\t\t// Logger.info(this, 'onSelectGroupFilter');\n\t\t\t\tEmber.setProperties(this, { costCodeGroupFilter: Ember.get(item, 'key') });\n\t\t\t},\n\t\t\tonClearGroupFilter: function onClearGroupFilter() {\n\t\t\t\tthis.send('onSelectGroupFilter', { key: null });\n\t\t\t},\n\t\t\tmanageCostCodes: function manageCostCodes() {\n\t\t\t\t// Logger.info(this, 'manageCostCodes');\n\n\t\t\t\tif (Ember.get(this, 'canManageProjects')) {\n\t\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\t\tcostCodeManagerProjectLinks: [].concat(_toConsumableArray(Ember.get(this, 'projectCostCodeLinks').toArray())),\n\t\t\t\t\t\tshowCostCodesManager: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tonRollBackManagerChanges: function onRollBackManagerChanges() {\n\t\t\t\t// Logger.info(this, 'onRollBackManagerChanges');\n\n\t\t\t\treturn this.rollbackManagerChanges();\n\t\t\t},\n\t\t\tonSaveManagerChanges: function onSaveManagerChanges(projectCostCodeLinks) {\n\t\t\t\t// Logger.info(this, 'onSaveManagerChanges');\n\n\t\t\t\treturn this.saveManagerChanges(projectCostCodeLinks);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/import-projects', ['exports', 'busy-app/utils/project-csv-import', '@busy-web/utils'], function (exports, _projectCsvImport, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: [\"c-projects-import-projects\"],\n\n\t\tmodel: null,\n\t\timportMembers: null,\n\n\t\tshowImportError: false,\n\t\tshowFormat: false,\n\t\tshowPreview: false,\n\n\t\timportProgress: (0, _utils.loc)('Saving'),\n\t\timportErrorMessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setupButtons();\n\t\t},\n\t\tsetupButtons: function setupButtons() {\n\t\t\tthis.set('buttonInfo1', [{ action: this.get('actions.closeImportAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo2', [{ action: this.get('actions.saveAction'), color: 'blue', text: (0, _utils.loc)('Save'), target: this }, { action: this.get('actions.closePreviewAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfo3', [{ action: this.get('actions.closeFormatAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t\tthis.set('buttonInfoError', [{ action: this.get('actions.closeErrorAction'), color: 'grey', text: (0, _utils.loc)('Back'), target: this }]);\n\t\t},\n\t\tcloseImport: function closeImport() {\n\t\t\tthis.set('showImportError', false);\n\t\t\tthis.set('showPreview', false);\n\t\t},\n\t\tshowError: function showError(err) {\n\t\t\tthis.set('importErrorMessage', err);\n\t\t\tthis.set('showImportError', true);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tthis.closeImport();\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tcloseErrorAction: function closeErrorAction() {\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t\tthis.set('showImportError', false);\n\t\t\t},\n\t\t\tclosePreviewAction: function closePreviewAction() {\n\t\t\t\tthis.set('showPreview', false);\n\t\t\t},\n\t\t\topenFormatAction: function openFormatAction() {\n\t\t\t\tthis.set('showFormat', true);\n\t\t\t},\n\t\t\tcloseFormatAction: function closeFormatAction() {\n\t\t\t\tthis.set('showFormat', false);\n\t\t\t},\n\t\t\tuploadAction: function uploadAction(data) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tdata = data[0];\n\t\t\t\tvar owner = Ember.getOwner(this);\n\t\t\t\tvar projectImport = _projectCsvImport.default.create(owner.ownerInjection());\n\n\t\t\t\tprojectImport.on('onFinishFileParse', function () {\n\t\t\t\t\t_this.set('showPreview', true);\n\t\t\t\t});\n\n\t\t\t\tprojectImport.on('progress', function (left, total) {\n\t\t\t\t\tif (total > 20) {\n\t\t\t\t\t\t_this.set('importProgress', (0, _utils.loc)('Importing projects') + \" \" + Math.ceil((total - left) / total * 100) + '%');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tprojectImport.on('complete', function () {\n\t\t\t\t\t_this.sendAction('onComplete', _this.get('model'));\n\t\t\t\t});\n\n\t\t\t\tprojectImport.on('error', function (err) {\n\t\t\t\t\t_this.showError(err);\n\t\t\t\t});\n\n\t\t\t\tprojectImport.run(data);\n\t\t\t\tthis.set('projectsArray', projectImport);\n\t\t\t},\n\t\t\tsaveAction: function saveAction() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar projects = this.get('projectsArray');\n\t\t\t\treturn projects.saveModel().then(function (res) {\n\t\t\t\t\t_this2.set('model', projects.get('projects'));\n\t\t\t\t\treturn (0, _utils.loc)(\"Saved \") + res.length + \" \" + (0, _utils.loc)(\"projects successfully!\");\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this2.closeImport();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/labor-budget', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-projects-labor-budget'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t// passed in model\n\t\tmodel: null,\n\n\t\tlaborCost: Ember.computed('model.project.budgetCostModel.cost', function () {\n\t\t\t// make a copy, don't pass through a reference\n\t\t\treturn parseFloat(Ember.get(this, 'model.project.budgetCostModel.cost')) + 0;\n\t\t}),\n\n\t\tlaborHours: Ember.computed('model.project.budgetHoursModel.hours', function () {\n\t\t\t// make a copy, don't pass through a reference\n\t\t\treturn parseFloat(Ember.get(this, 'model.project.budgetHoursModel.hours')) + 0;\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t// the page should only update on blur, not onChange,\n\t\t\t//   so, attach some oneWay properties we can use to prevent 2 way binding\n\t\t\tEmber.get(this, 'model.subprojects').forEach(function (p) {\n\t\t\t\tEmber.set(p, 'budgetCostModelCostValue', Ember.computed.oneWay('budgetCostModel.cost'));\n\t\t\t\tEmber.set(p, 'budgetHoursModelHoursValue', Ember.computed.oneWay('budgetHoursModel.hours'));\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsaveHours: function saveHours(newValue, item) {\n\t\t\t\tnewValue = parseFloat(newValue) + 0;\n\t\t\t\tEmber.set(item, 'budgetHoursModel.hours', newValue);\n\t\t\t\tvar value = item.get('budgetHoursModel.hours');\n\t\t\t\tvar seconds = parseInt(parseFloat(value) * 3600);\n\t\t\t\tvar mSeconds = item.get('budgetHoursModel.seconds');\n\t\t\t\tif (!isNaN(seconds) && !Ember.isNone(seconds) && seconds !== mSeconds) {\n\t\t\t\t\tvar budgetSeconds = this.get('store').createRecord('project-hours-budget', {\n\t\t\t\t\t\tprojectId: item.id,\n\t\t\t\t\t\tbudgetSeconds: seconds\n\t\t\t\t\t});\n\n\t\t\t\t\tif (budgetSeconds.get('seconds') >= 0) {\n\t\t\t\t\t\tbudgetSeconds.save().then(function () {\n\t\t\t\t\t\t\tvar budget = item.get('projectHoursBudget.content');\n\t\t\t\t\t\t\tbudget.update();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsaveCost: function saveCost(newValue, item) {\n\t\t\t\tnewValue = parseFloat(newValue) + 0;\n\t\t\t\tEmber.set(item, 'budgetCostModel.cost', newValue);\n\t\t\t\tvar costBudget = this.get('store').createRecord('project-cost-budget', {\n\t\t\t\t\tprojectId: item.id,\n\t\t\t\t\tcostBudget: parseFloat(item.get('budgetCostModel.cost'))\n\t\t\t\t});\n\n\t\t\t\tif (costBudget.get('cost') >= 0 && (!Ember.isNone(item.get('budgetCostModel')) || item.get('budgetCostModel.cost') !== costBudget.get('cost'))) {\n\t\t\t\t\tcostBudget.save().then(function () {\n\t\t\t\t\t\tvar budget = item.get('projectCostBudget.content');\n\t\t\t\t\t\tbudget.update();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tloadProject: function loadProject(item) {\n\t\t\t\t(true && !(!Ember.isNone(item) && !Ember.isNone(item.get('id'))) && Ember.assert('action requires a project with a valid id <projects.labor-budget:loadProject>', !Ember.isNone(item) && !Ember.isNone(item.get('id'))));\n\n\t\t\t\t// add 2 paths to the history then call back once to transition to the first push state\n\n\t\t\t\twindow.history.pushState(undefined, undefined, '/project/' + item.get('id') + '#tab-labor-budget');\n\t\t\t\twindow.history.pushState(undefined, undefined, '/project/' + item.get('id'));\n\t\t\t\twindow.history.back();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/project-info', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Components\n  *\n  */\n\tvar kDefaultLocation = {\n\t\tlatitude: 37.10102990074617,\n\t\tlongitude: -113.53877082086876,\n\t\tlocationRadius: 50\n\t};\n\n\t/**\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstore: Ember.inject.service('store'),\n\t\tstate: Ember.inject.service('state'),\n\n\t\tclassNames: ['v-project-details'],\n\n\t\tproject: null,\n\t\tprojectInfo: null,\n\t\tprojectCostCodeLinks: null,\n\t\tuseGeolocation: null,\n\n\t\tshowEditDialog: false,\n\t\tshowAdvancedOptions: false,\n\t\tmapInit: Date.now(),\n\n\t\t_projectCostCodeLinks: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\t_logger.default.info(this, 'init');\n\n\t\t\tthis.loadProjectInfo();\n\t\t\tthis.loadSiblings();\n\t\t\tthis.setProjectCostCodeLinks();\n\t\t},\n\n\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tonUseGeolocationChange: Ember.observer('useGeolocation', function () {\n\t\t\tif (this.get('showEditDialog')) {\n\t\t\t\tif (this.get('useGeolocation') && Ember.isNone(this.get('projectInfo.locationRadius'))) {\n\t\t\t\t\tthis.get('projectInfo').setProperties(kDefaultLocation);\n\t\t\t\t\tthis.set('mapInit', Date.now());\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tloadSiblings: Ember.observer('project.rootProjectId', 'project.parentProjectId', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.get('project.rootProjectId') === this.get('project.id')) {\n\t\t\t\tthis.get('store').query('project', { depth: 1 }).then(function (results) {\n\t\t\t\t\t_this.set('projects', results);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.get('store').query('project', { parent_project_id: this.get('project.parentProjectId') }).then(function (results) {\n\t\t\t\t\t_this.set('projects', results);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tloadProjectInfo: Ember.observer('project.id', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.get('project.id'))) {\n\t\t\t\tthis.get('store').query('project-info', { project_id: this.get('project.id') }).then(function (model) {\n\t\t\t\t\tmodel = model.objectAt(0);\n\t\t\t\t\tif (!_this2.get('isDestroyed')) {\n\t\t\t\t\t\tif (!Ember.isNone(model)) {\n\t\t\t\t\t\t\t// model.set('coords', [model.get('latitude'), model.get('longitude')])\n\t\t\t\t\t\t\t_this2.set('projectInfo', model);\n\t\t\t\t\t\t\t_this2.set('requireOnSiteVerification', _this2.get('projectInfo.requireGPS'));\n\t\t\t\t\t\t\t_this2.set('subProjectVerication', _this2.get('projectInfo.requireGpsSubProjects'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_this2.set('projectInfo', _this2.get('store').createRecord('project-info', { projectId: _this2.get('project.id') }));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_this2.set('useGeolocation', model.get('hasLocation'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tsetApplySubProjectsFalse: Ember.observer('requireOnSiteVerification', function () {\n\t\t\tvar requireOnSiteVerification = this.get('requireOnSiteVerification');\n\t\t\tif (!requireOnSiteVerification) {\n\t\t\t\tthis.set('subProjectVerication', false);\n\t\t\t}\n\t\t}),\n\n\t\tsetProjectCostCodeLinks: Ember.observer('project.id', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\t_logger.default.info(this, 'setProjectCostCodeLinks', Ember.get(this, 'isLinkedCostCodesEnabled'));\n\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\treturn this.getProjectCostCodeLinks().then(function (projectCostCodeLinks) {\n\t\t\t\t\treturn Ember.setProperties(_this3, { projectCostCodeLinks: projectCostCodeLinks });\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t}),\n\n\t\tonShowEditDialog: Ember.observer('showEditDialog', function () {\n\t\t\tvar _this4 = this;\n\n\t\t\tif (this.get('showEditDialog')) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\treturn _this4.set('mapInit', Date.now());\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tisArchived: Ember.computed('project.archivedOn', function () {\n\t\t\tif (!Ember.isNone(this.get('project.archivedOn'))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tgetProjectReminderStatus: Ember.computed('projectInfo.reminder', function () {\n\t\t\treturn this.get('projectInfo.reminder') ? (0, _utils.loc)('Yes') : (0, _utils.loc)('No');\n\t\t}),\n\n\t\tformattedAddress: Ember.computed('projectInfo.{address1,address2}', function () {\n\t\t\treturn [this.get('projectInfo.address1') || null, this.get('projectInfo.address2') || null].compact().join(', ');\n\t\t}),\n\n\t\tformattedCity: Ember.computed('projectInfo.{city,state,postalCode}', function () {\n\t\t\tif (Ember.isNone(this.get('projectInfo.city')) || Ember.isNone(this.get('projectInfo.state')) || Ember.isNone(this.get('projectInfo.postalCode'))) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn this.get('projectInfo.city') + ', ' + this.get('projectInfo.state') + ' ' + this.get('projectInfo.postalCode');\n\t\t}),\n\n\t\t/*\n   * Cost Code Select Actions\n   */\n\n\t\tgetProjectCostCodeLinks: function getProjectCostCodeLinks() {\n\t\t\t_logger.default.info(this, 'getProjectCostCodeLinks');\n\n\t\t\treturn Ember.get(this, 'project.projectCostCodeLinks')\n\t\t\t// only include ProjectCostCodeLinks where the cost code is not archived\n\t\t\t.then(function (links) {\n\t\t\t\t// get all the linked cost codes\n\t\t\t\treturn Ember.RSVP.all(links.map(function (link) {\n\t\t\t\t\t// if the cost cost is not archived, return the Link object, not the cost code\n\t\t\t\t\treturn Ember.get(link, 'costCode').then(function (cc) {\n\t\t\t\t\t\treturn Ember.isNone(Ember.get(cc, 'archivedOn')) ? link : null;\n\t\t\t\t\t});\n\t\t\t\t}));\n\t\t\t})\n\t\t\t// filter out empty objects (had archived cost codes)\n\t\t\t.then(function (links) {\n\t\t\t\treturn Ember.RSVP.filter(links, function (link) {\n\t\t\t\t\treturn !Ember.isNone(link);\n\t\t\t\t});\n\t\t\t})\n\t\t\t// turn the result set into the expected array of ProjectCostCodeLink\n\t\t\t.then(function (links) {\n\t\t\t\treturn links.toArray();\n\t\t\t});\n\t\t},\n\t\trecieveCostCodeChanges: function recieveCostCodeChanges(_projectCostCodeLinks) {\n\t\t\t_logger.default.info(this, 'recieveCostCodeChanges', _projectCostCodeLinks);\n\t\t\tEmber.setProperties(this, { _projectCostCodeLinks: _projectCostCodeLinks });\n\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\t\trollbackCostCodeChanges: function rollbackCostCodeChanges() {\n\t\t\tvar _this5 = this;\n\n\t\t\t_logger.default.info(this, 'rollbackCostCodeChanges', this.get('_projectCostCodeLinks'));\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, '_projectCostCodeLinks'))) {\n\t\t\t\tEmber.get(this, '_projectCostCodeLinks').filterBy('hasDirtyAttributes').forEach(function (model) {\n\t\t\t\t\treturn model.rollbackAttributes();\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, '_projectCostCodeLinks', null);\n\t\t\t}\n\n\t\t\treturn this.getProjectCostCodeLinks().then(function (_projectCostCodeLinks) {\n\t\t\t\treturn Ember.setProperties(_this5, { _projectCostCodeLinks: _projectCostCodeLinks });\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\t// triggered by onShowTab in parent container\n\t\t\treInitMap: function reInitMap() {\n\t\t\t\t// pass down a new mapInit value to the leaflet component so that it will re-render itself\n\t\t\t\tthis.set('mapInit', Date.now());\n\t\t\t},\n\t\t\tonProjectLocationChange: function onProjectLocationChange(latitude, longitude, locationRadius) {\n\t\t\t\tthis.get('projectInfo').setProperties({\n\t\t\t\t\tlatitude: latitude,\n\t\t\t\t\tlongitude: longitude,\n\t\t\t\t\tlocationRadius: locationRadius\n\t\t\t\t});\n\t\t\t},\n\t\t\topenEditDialog: function openEditDialog() {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tEmber.set(this, 'isLoading', true);\n\t\t\t\t\tthis.getProjectCostCodeLinks().then(function (_projectCostCodeLinks) {\n\t\t\t\t\t\tEmber.setProperties(_this6, {\n\t\t\t\t\t\t\t_projectCostCodeLinks: _projectCostCodeLinks,\n\t\t\t\t\t\t\tshowEditDialog: true,\n\t\t\t\t\t\t\tisLoading: false\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'showEditDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAdvancedAction: function showAdvancedAction() {\n\t\t\t\tthis.set('showAdvancedOptions', !this.get('showAdvancedOptions'));\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.get('project').rollbackAttributes();\n\t\t\t\tif (!Ember.isNone(this.get('projectInfo'))) {\n\t\t\t\t\tthis.get('projectInfo').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tthis.rollbackCostCodeChanges();\n\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t},\n\t\t\tsaveProjectInfo: function saveProjectInfo() {\n\t\t\t\tvar _this7 = this;\n\n\t\t\t\tvar project = this.get('project');\n\t\t\t\tvar projectInfo = this.get('projectInfo');\n\t\t\t\tvar onSiteVerification = '';\n\n\t\t\t\tthis.set('mapError', false);\n\n\t\t\t\tif (Ember.isEmpty(project.get('title'))) {\n\t\t\t\t\treturn Ember.RSVP.reject('Project must have a title');\n\t\t\t\t}\n\n\t\t\t\tif (!this.get('useGeolocation')) {\n\t\t\t\t\tprojectInfo.clearGeolocation();\n\t\t\t\t}\n\n\t\t\t\tif (this.get('requireOnSiteVerification') && !this.get('subProjectVerication')) {\n\t\t\t\t\tonSiteVerification = 'self';\n\t\t\t\t} else if (this.get('requireOnSiteVerification') && this.get('subProjectVerication')) {\n\t\t\t\t\tonSiteVerification = 'self_and_children';\n\t\t\t\t} else if (!this.get('requireOnSiteVerification') && this.get('subProjectVerication')) {\n\t\t\t\t\tonSiteVerification = 'children';\n\t\t\t\t} else {\n\t\t\t\t\tonSiteVerification = 'none';\n\t\t\t\t}\n\n\t\t\t\tprojectInfo.set('requireTimeEntryGps', onSiteVerification);\n\n\t\t\t\t// force project location to be set if reminder is set to true\n\t\t\t\tif (projectInfo.get('reminder') && !projectInfo.get('hasLocation')) {\n\t\t\t\t\tthis.set('mapError', true);\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Geolocation required for location reminders.'));\n\t\t\t\t}\n\n\t\t\t\tvar projectChanges = project.changedAttributes();\n\t\t\t\tvar projectInfoChanges = projectInfo.changedAttributes();\n\n\t\t\t\tvar promise = Ember.RSVP.resolve();\n\t\t\t\tif (Object.keys(projectChanges).length) {\n\t\t\t\t\t// if title is changed then make sure the new title does not conflict with another project\n\t\t\t\t\tif (!Ember.isNone(Ember.get(projectChanges, 'title'))) {\n\t\t\t\t\t\tvar hasDuplicateTitle = this.get('projects').find(function (p) {\n\t\t\t\t\t\t\treturn p.get('title') === project.get('title') && p.get('id') !== project.get('id');\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!Ember.isNone(hasDuplicateTitle)) {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Project name must be unique'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// save project changes\n\t\t\t\t\tpromise = project.save();\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(projectInfoChanges).length) {\n\t\t\t\t\t// save project info changes\n\t\t\t\t\tpromise.then(function () {\n\t\t\t\t\t\treturn projectInfo.save();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tvar changedProjectCostCodeLinks = Ember.get(this, '_projectCostCodeLinks').filterBy('hasDirtyAttributes');\n\n\t\t\t\t\tif (!Ember.isNone(changedProjectCostCodeLinks)) {\n\t\t\t\t\t\tvar saveLinks = changedProjectCostCodeLinks.map(function (model) {\n\t\t\t\t\t\t\treturn model.save();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromise.then(function () {\n\t\t\t\t\t\t\treturn Ember.RSVP.allSettled(saveLinks);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn promise.then(function () {\n\t\t\t\t\treturn Ember.RSVP.all([Ember.get(_this7, 'project').reload(), _this7.loadProjectInfo(), _this7.getProjectCostCodeLinks()]);\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/*\n    * Cost Code Select Actions\n    */\n\t\t\tonCancelCostCodeChanges: function onCancelCostCodeChanges() {\n\t\t\t\t_logger.default.info(this, 'onCancelCostCodeChanges');\n\n\t\t\t\treturn this.rollbackCostCodeChanges();\n\t\t\t},\n\t\t\tonSaveManagerChanges: function onSaveManagerChanges(projectCostCodeLinks) {\n\t\t\t\t_logger.default.info(this, 'onSaveManagerChanges', { projectCostCodeLinks: projectCostCodeLinks });\n\n\t\t\t\tvar projectId = Ember.get(this, 'project.id');\n\t\t\t\tprojectCostCodeLinks.setEach('projectId', projectId);\n\n\t\t\t\treturn this.recieveCostCodeChanges(projectCostCodeLinks);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/report-header', ['exports', '@busy-web/utils', 'busy-app/utils/docs', 'busy-app/utils/debug'], function (exports, _utils, _docs, _debug) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-projects-report-header', 'page-padding'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tstart: null,\n\t\tend: null,\n\t\treportType: null,\n\n\t\tisRangeSelector: false,\n\t\tisCustomDateRange: false,\n\t\toptionSelected: null,\n\t\thasDateSelector: false,\n\n\t\tcolumns: null,\n\t\toptions: null,\n\n\t\tcolumnLabel: '',\n\t\tcolumDefault: '',\n\n\t\tdateSelector: null,\n\t\thideDateSelector: false,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\thideExport: false,\n\n\t\ttitle: '',\n\n\t\tinit: function init() {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis._super();\n\n\t\t\t(0, _debug.disable_test_runner)(function () {\n\t\t\t\tvar payPeriod = _this2.get('payPeriods').getPayPeriod(_utils.Time.date().startOf('day').unix());\n\t\t\t\tif (!Ember.isNone(payPeriod)) {\n\t\t\t\t\t_this2.set('maxDate', payPeriod.get('endDate').unix());\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// init observer functions\n\t\t\tthis.dateSetter();\n\n\t\t\t(0, _debug.disable_test_runner)(function () {\n\t\t\t\treturn _this2.setupSelectors();\n\t\t\t});\n\t\t},\n\n\t\tdateSetter: Ember.observer('start', 'end', function () {\n\t\t\tvar start, end;\n\t\t\tif (!Ember.isNone(this.get('start')) && this.get('start') > 0 && !Ember.isNone(this.get('end')) && this.get('end') > 0) {\n\t\t\t\tstart = _utils.Time.date(this.get('start'));\n\t\t\t\tend = _utils.Time.date(this.get('end'));\n\t\t\t} else {\n\t\t\t\tstart = _utils.Time.date().startOf('day').subtract(1, 'weeks');\n\t\t\t\tend = _utils.Time.date().endOf('day');\n\t\t\t}\n\t\t\tthis.set('startDate', start);\n\t\t\tthis.set('endDate', end);\n\t\t}),\n\n\t\tsetupSelectors: Ember.observer('start', function () {\n\t\t\tvar payPeriods = this.get('payPeriods').getPayPeriodRange(_utils.Time.timestamp(), 15);\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isEmpty(payPeriods)) {\n\t\t\t\tvar _this = this;\n\t\t\t\tpayPeriods.forEach(function (item) {\n\t\t\t\t\tif (_this.get('start') >= item.get('startDate').unix() && _this.get('start') <= item.get('endDate').unix()) {\n\t\t\t\t\t\titem.set('_selected', true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpayPeriods.objectAt(0).set('_selected', true);\n\t\t\t}\n\t\t\tthis.set('dateSelector', payPeriods);\n\t\t}),\n\n\t\theaderDateRange: Ember.computed('dateSelector.@each._selected', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('dateSelector')) && !this.get('isRangeSelector')) {\n\t\t\t\tvar selected = this.get('dateSelector').findBy('_selected', true);\n\t\t\t\tdate = selected.get('startDate').format('MM/DD/YYYY') + ' - ' + selected.get('endDate').format('MM/DD/YYYY');\n\t\t\t\treturn date;\n\t\t\t} else if (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('start')).format('MM/DD/YYYY') + '-' + _utils.Time.date(this.get('end')).format('MM/DD/YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tcreatorName: Ember.computed('auth.member.fullName', function () {\n\t\t\treturn this.get('auth.member.fullName');\n\t\t}),\n\n\t\tcreatedDate: Ember.computed(function () {\n\t\t\treturn _utils.Time.date().format('MM/DD/YYYY h:mm A');\n\t\t}),\n\n\t\tactions: {\n\t\t\tdateChange: function dateChange(item) {\n\t\t\t\tif (this.get('isRangeSelector')) {\n\t\t\t\t\tthis.sendAction('dateSelected', this.get('startDate').unix(), this.get('endDate').unix());\n\t\t\t\t} else {\n\t\t\t\t\tthis.sendAction('dateSelected', item);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\toptionChange: function optionChange(item) {\n\t\t\t\tthis.sendAction('optionSelected', item.get('key'));\n\t\t\t},\n\n\t\t\tcolumnChange: function columnChange(val, item) {\n\t\t\t\tthis.sendAction('columnSelected', val, item);\n\t\t\t},\n\n\t\t\tprintPage: function printPage() {\n\t\t\t\tif (!this.get('inlinePrint')) {\n\t\t\t\t\t_docs.default.print(this.$());\n\t\t\t\t} else {\n\t\t\t\t\t_docs.default.print();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/projects/report-index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['c-projects-report-index'],\n\n    auth: Ember.inject.service(),\n    features: Ember.inject.service('features'),\n    proFeature: Ember.inject.service('pro-feature'),\n    interop: Ember.inject.service('interop'),\n\n    project: null,\n    organization: null,\n\n    proFeatureManager: null,\n\n    allowPayrollReport: Ember.computed('features.payroll-report', function () {\n      this.get('features.payroll-report');\n      return this.get('proFeature').allowProFeature('payroll-report');\n    }),\n\n    allowDailyReport: Ember.computed.alias('features.dailyProjectReport'),\n\n    // show the badge if the user is not allowed access to payroll reports\n    proBadgeHtml: Ember.computed('allowPayrollReport', function () {\n      return !this.get('allowPayrollReport') ? '<span class=\"pro-feature-badge d-badge blue\">' + (0, _utils.loc)('PRO') + '</span>' : null;\n    }),\n\n    init: function init() {\n      this._super();\n      this.set('proFeatureManager', this.get('proFeature').getManager());\n    },\n    requestPayrollReport: function requestPayrollReport(actionRequested) {\n      this.get('proFeatureManager').requestAction('payroll-report', actionRequested);\n    },\n\n\n    actions: {\n      dispatchReport: function dispatchReport(report) {\n        this.sendAction('onTransition', report);\n      },\n      dispatchPayrollReport: function dispatchPayrollReport(report) {\n        var _this = this;\n\n        this.requestPayrollReport(function () {\n          return _this.send('dispatchReport', report);\n        });\n      },\n      openReactApp: function openReactApp(path, event) {\n        var _this2 = this;\n\n        this.requestPayrollReport(function () {\n          return _this2.get('interop').openReactApp(path, { projectId: _this2.get('project.id') }, event);\n        });\n      },\n      proFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n        this.get('proFeatureManager').openModal();\n      },\n      proFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n        this.get('proFeatureManager').closeModal();\n      },\n      proFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n        this.get('proFeatureManager').onAllow();\n      }\n    }\n  });\n});","define('busy-app/components/projects/sub-project', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t// default to busy office\n\t// 37.10102990074617 -113.53877082086876\n\t/**\n  * @module Components\n  *\n  */\n\tvar kDefaultLocation = {\n\t\tlatitude: 37.10102990074617,\n\t\tlongitude: -113.53877082086876,\n\t\tlocationRadius: 50\n\t};\n\n\t/**\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tclassNames: ['v-project-sub-project'],\n\n\t\torganization: null,\n\t\tproject: null,\n\t\tmodel: null,\n\n\t\tnewProject: null,\n\t\tuseGeolocation: false,\n\n\t\tshowDialog: false,\n\t\tisLoading: false,\n\t\thideRowActions: false,\n\t\tshowArchiveDialog: false,\n\t\t_projectCostCodeLinks: null,\n\n\t\tarchived: Ember.computed('project.archivedOn', function () {\n\t\t\treturn !Ember.isNone(Ember.get(this, 'project.archivedOn'));\n\t\t}),\n\n\t\tkeyword: '',\n\t\tpageSize: 30,\n\t\tpage: 1,\n\t\ttotalRows: 0,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tvar isActive = !Ember.get(this, 'archived');\n\n\t\t\tthis.loadMenus();\n\t\t\tthis.getProjects(isActive);\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t},\n\n\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tloadMenus: Ember.observer('archived', function () {\n\t\t\tif (Ember.get(this, 'archived')) {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({ key: 'unarchive', value: (0, _utils.loc)('Unarchive') })]);\n\t\t\t\tEmber.set(this, 'rowSelectMenu', [Ember.Object.create({ key: 'unarchive', value: (0, _utils.loc)('Unarchive') })]);\n\t\t\t\tEmber.set(this, 'filterMenu', [Ember.Object.create({ key: 'archived', value: (0, _utils.loc)('Archived'), _selected: true })]);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({ key: 'archive', value: (0, _utils.loc)('Archive') })]);\n\t\t\t\tEmber.set(this, 'rowSelectMenu', [Ember.Object.create({ key: 'archive', value: (0, _utils.loc)('Archive') })]);\n\t\t\t\tEmber.set(this, 'filterMenu', [Ember.Object.create({ key: 'archived', value: (0, _utils.loc)('Archived'), _selected: false })]);\n\t\t\t}\n\t\t}),\n\n\t\tcanAddProjects: Ember.computed('auth.member.id', 'project.archivedOn', function () {\n\t\t\tvar hasPermission = Ember.get(this, 'access').hasPermissionFor('manageProjects');\n\t\t\tvar isArchived = !Ember.isNone(Ember.get(this, 'project.archivedOn'));\n\t\t\treturn hasPermission && !isArchived;\n\t\t}),\n\n\t\tgetProjects: function getProjects(isActive) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(Ember.get(this, 'project.id')) && !Ember.get(this, 'isDestroyed')) {\n\t\t\t\tvar params = {\n\t\t\t\t\tparent_project_id: Ember.get(this, 'project.id'),\n\t\t\t\t\t_asc: ['title'],\n\t\t\t\t\tpage_size: Ember.get(this, 'pageSize'),\n\t\t\t\t\tpage: Ember.get(this, 'page')\n\t\t\t\t};\n\n\t\t\t\tif (isActive) {\n\t\t\t\t\tparams.archived_on = '_-NULL-_';\n\t\t\t\t} else {\n\t\t\t\t\tparams.archived_on = '!_-NULL-_';\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(Ember.get(this, 'keyword'))) {\n\t\t\t\t\tparams._search = Ember.get(this, 'keyword');\n\t\t\t\t}\n\n\t\t\t\tEmber.set(this, 'isLoading', true);\n\t\t\t\tEmber.get(this, 'store').query('project', params).then(function (models) {\n\t\t\t\t\tif (!Ember.get(_this, 'isDestroyed')) {\n\t\t\t\t\t\tEmber.set(_this, 'totalRows', Ember.get(models, 'meta.totalRows'));\n\t\t\t\t\t\tEmber.set(_this, 'allSubprojects', models);\n\t\t\t\t\t\tEmber.set(_this, 'model', models);\n\t\t\t\t\t\tEmber.set(_this, 'isLoading', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tcanManageProjects: Ember.computed('auth.authMemberPosition.manageProjects', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageProjects');\n\t\t}),\n\n\t\thasRowActions: Ember.computed('canManageProjects', 'hideRowActions', function () {\n\t\t\treturn Ember.get(this, 'canManageProjects') && !Ember.get(this, 'hideRowActions');\n\t\t}),\n\n\t\topenArchiveDialog: function openArchiveDialog(items) {\n\t\t\tEmber.set(this, 'archiveItems', items);\n\t\t\tEmber.set(this, 'showArchiveDialog', true);\n\t\t},\n\t\tarchive: function archive() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar items = Ember.get(this, 'archiveItems');\n\t\t\tvar timestamp = _utils.Time.timestamp();\n\t\t\treturn Ember.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', timestamp);\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this2.getProjects(true);\n\t\t\t\tEmber.set(_this2, 'archiveItems', null);\n\t\t\t\tEmber.set(_this2, 'showArchiveDialog', false);\n\t\t\t});\n\t\t},\n\t\tunarchive: function unarchive(items) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n\t\t\treturn Ember.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', '_-NULL-_');\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this3.getProjects(false);\n\t\t\t\tEmber.run.next(_this3, function () {\n\t\t\t\t\treturn callback();\n\t\t\t\t});\n\t\t\t\t_this3.clearEdit();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Clears the edit action\n   *\n   * @public\n   * @method clearEdit\n   */\n\t\tclearEdit: function clearEdit() {\n\t\t\t// bc-list sets isSelected on the model\n\t\t\t// so loop through the models and set isSelected\n\t\t\t// to false to uncheck the checkboxes\n\t\t\tEmber.get(this, 'editItems').forEach(function (item) {\n\t\t\t\treturn Ember.set(item, 'isSelected', false);\n\t\t\t});\n\n\t\t\t// set local vars back to defaults\n\t\t\tEmber.set(this, 'editAction', null);\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'edit', false);\n\t\t\tEmber.set(this, 'hideRowActions', false);\n\t\t},\n\n\n\t\tarchiveMessage: Ember.computed('archiveItems.@each', function () {\n\t\t\tif (Ember.get(this, 'archiveItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('This action will archive any subprojects within these %@ projects.', [Ember.get(this, 'archiveItems.length')]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('This action will archive any subprojects within this project.');\n\t\t\t}\n\t\t}),\n\n\t\tarchiveHeader: Ember.computed('archiveItems.@each', function () {\n\t\t\tif (Ember.get(this, 'archiveItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('Archive Subprojects');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Archive Subproject');\n\t\t\t}\n\t\t}),\n\n\t\tunarchiveHeader: Ember.computed('editItems.@each', function () {\n\t\t\tif (Ember.get(this, 'editItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('Unarchive Subprojects');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Unarchive Subproject');\n\t\t\t}\n\t\t}),\n\n\t\tunarchiveMessage: Ember.computed('editItems.@each', function () {\n\t\t\tif (Ember.get(this, 'editItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('This action will restore any subprojects within these %@ projects.', [Ember.get(this, 'editItems.length')]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('This action will restore any subprojects within this project');\n\t\t\t}\n\t\t}),\n\n\t\tonUseGeolocationChange: Ember.observer('useGeolocation', function () {\n\t\t\tif (Ember.get(this, 'showDialog')) {\n\t\t\t\tif (Ember.get(this, 'useGeolocation') && Ember.isNone(Ember.get(this, 'newProjectInfo.locationRadius'))) {\n\t\t\t\t\tEmber.get(this, 'newProjectInfo').setProperties(kDefaultLocation);\n\t\t\t\t\tEmber.set(this, 'mapInit', Date.now());\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/*\n   * Cost Code Select Actions\n   */\n\n\t\tgetProjectCostCodeLinks: function getProjectCostCodeLinks() {\n\t\t\t_logger.default.info(this, 'getProjectCostCodeLinks');\n\n\t\t\treturn Ember.RSVP.resolve([]);\n\t\t},\n\t\trecieveCostCodeChanges: function recieveCostCodeChanges(_projectCostCodeLinks) {\n\t\t\t_logger.default.info(this, 'recieveCostCodeChanges', _projectCostCodeLinks);\n\t\t\tEmber.setProperties(this, { _projectCostCodeLinks: _projectCostCodeLinks });\n\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\t\trollbackCostCodeChanges: function rollbackCostCodeChanges() {\n\t\t\tvar _this4 = this;\n\n\t\t\t_logger.default.info(this, 'rollbackCostCodeChanges', this.get('_projectCostCodeLinks'));\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, '_projectCostCodeLinks'))) {\n\t\t\t\tEmber.get(this, '_projectCostCodeLinks').filterBy('hasDirtyAttributes').forEach(function (model) {\n\t\t\t\t\treturn model.rollbackAttributes();\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, '_projectCostCodeLinks', null);\n\t\t\t}\n\n\t\t\treturn this.getProjectCostCodeLinks().then(function (_projectCostCodeLinks) {\n\t\t\t\treturn Ember.setProperties(_this4, { _projectCostCodeLinks: _projectCostCodeLinks });\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\teditListAction: function editListAction(action) {\n\t\t\t\tEmber.set(this, 'editAction', Ember.get(action, 'key'));\n\t\t\t\tEmber.set(this, 'hideRowActions', true);\n\t\t\t\tEmber.set(this, 'edit', true);\n\t\t\t},\n\t\t\tcancelEditAction: function cancelEditAction() {\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tsubProjectClicked: function subProjectClicked(item) {\n\t\t\t\tthis.sendAction('onProjectChange', Ember.get(item, 'id'));\n\t\t\t},\n\t\t\tsubprojectSelected: function subprojectSelected(isChecked, item) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.get(this, 'editItems').pushObject(item);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.get(this, 'editItems').removeObject(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectAll: function selectAll(isChecked, items) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.set(this, 'editItems', items);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'editItems', []);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * opens the new project dialog\n    * and creates a new project model\n    *\n    * @public\n    * @method openNewProjectDialog\n    * @returns {void}\n    */\n\t\t\topenNewProjectDialog: function openNewProjectDialog() {\n\t\t\t\tvar newProject = Ember.get(this, 'store').createRecord('project', {\n\t\t\t\t\tparentProjectId: Ember.get(this, 'project.id'),\n\t\t\t\t\torganizationId: Ember.get(this, 'organization.id')\n\t\t\t\t});\n\n\t\t\t\tvar newProjectInfo = Ember.get(this, 'store').createRecord('project-info');\n\n\t\t\t\t// set lat, lng, rad\n\t\t\t\tnewProjectInfo.setProperties(kDefaultLocation);\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\tnewProject: newProject,\n\t\t\t\t\tnewProjectInfo: newProjectInfo,\n\t\t\t\t\tshowDialog: true,\n\t\t\t\t\t_projectCostCodeLinks: []\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseNewProjectDialog: function closeNewProjectDialog() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tif (Ember.get(this, 'newProject') !== null) {\n\t\t\t\t\tEmber.get(this, 'newProject').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tEmber.set(this, 'newProject', null);\n\t\t\t\tthis.rollbackCostCodeChanges();\n\t\t\t},\n\t\t\tsaveNewProject: function saveNewProject() {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tvar parentProjectId = Ember.get(this, 'project.id');\n\t\t\t\tvar organizationId = Ember.get(this, 'organization.id');\n\n\t\t\t\tvar project = Ember.get(this, 'newProject');\n\t\t\t\tvar projectInfo = Ember.get(this, 'newProjectInfo');\n\n\t\t\t\tvar newProject = Ember.get(this, 'store').createRecord('project', { parentProjectId: parentProjectId, organizationId: organizationId });\n\t\t\t\tvar newProjectInfo = Ember.get(this, 'store').createRecord('project-info', {});\n\n\t\t\t\tif (Ember.isEmpty(Ember.get(project, 'title'))) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Subproject name is required'));\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(this, 'model').isAny('matchTitle', Ember.get(project, 'title').toLowerCase())) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Title has already been used for another project.'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.get(this, 'useGeolocation')) {\n\t\t\t\t\tprojectInfo.clearGeolocation();\n\t\t\t\t}\n\n\t\t\t\tEmber.set(this, 'mapError', false);\n\t\t\t\tif (Ember.get(projectInfo, 'reminder') && !Ember.get(projectInfo, 'hasLocation')) {\n\t\t\t\t\tEmber.set(this, 'mapError', true);\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Geolocation required for location reminders.'));\n\t\t\t\t}\n\n\t\t\t\treturn project.save().then(function (model) {\n\t\t\t\t\tvar attrs = projectInfo.changedAttributes();\n\t\t\t\t\tvar promise = Ember.RSVP.resolve();\n\t\t\t\t\tif (!Ember.isNone(attrs) && Object.keys(attrs).length > 0) {\n\t\t\t\t\t\tEmber.set(_this5, 'newProjectInfo.projectId', model.id);\n\t\t\t\t\t\tpromise = projectInfo.save();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar _projectCostCodeLinks = Ember.get(_this5, '_projectCostCodeLinks');\n\t\t\t\t\tif (Ember.get(_this5, 'isLinkedCostCodesEnabled') && !Ember.isNone(_projectCostCodeLinks)) {\n\t\t\t\t\t\t_projectCostCodeLinks.setEach('projectId', model.id);\n\t\t\t\t\t\tvar saveLinks = _projectCostCodeLinks.map(function (link) {\n\t\t\t\t\t\t\treturn link.save();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromise.then(function () {\n\t\t\t\t\t\t\treturn Ember.RSVP.allSettled(saveLinks);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn promise.then(function () {\n\t\t\t\t\t\tEmber.setProperties(_this5, {\n\t\t\t\t\t\t\tnewProject: newProject,\n\t\t\t\t\t\t\tnewProjectInfo: newProjectInfo,\n\t\t\t\t\t\t\t_projectCostCodeLinks: []\n\t\t\t\t\t\t});\n\t\t\t\t\t\tEmber.get(_this5, 'model').update();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tsubmitEditAction: function submitEditAction() {\n\t\t\t\tvar filteredItems = Ember.get(this, 'editItems');\n\t\t\t\tif (Ember.get(this, 'editAction') === 'archive') {\n\t\t\t\t\tthis.openArchiveDialog(filteredItems);\n\t\t\t\t\tthis.clearEdit();\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(this, 'editAction') === 'unarchive') {\n\t\t\t\t\tEmber.set(this, 'showUnarchiveDialog', true);\n\t\t\t\t\t// this.unarchive(filteredItems);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchangePage: function changePage(page) {\n\t\t\t\tEmber.set(this, 'page', page);\n\t\t\t\tvar isActive = !Ember.get(this, 'archived');\n\t\t\t\tthis.getProjects(isActive);\n\t\t\t},\n\t\t\tchangeSize: function changeSize(size) {\n\t\t\t\tEmber.set(this, 'pageSize', size);\n\t\t\t\tEmber.set(this, 'page', 1);\n\t\t\t\tvar isActive = !Ember.get(this, 'archived');\n\t\t\t\tthis.getProjects(isActive);\n\t\t\t},\n\t\t\tsearchProject: function searchProject(keyword) {\n\t\t\t\tEmber.set(this, 'keyword', keyword);\n\t\t\t\tvar isActive = !Ember.get(this, 'archived');\n\t\t\t\tthis.getProjects(isActive);\n\t\t\t},\n\t\t\trowItemSelectAction: function rowItemSelectAction(action, member, project) {\n\t\t\t\tif (Ember.get(action, 'key') === 'archive') {\n\t\t\t\t\tthis.openArchiveDialog([project]);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'unarchive') {\n\t\t\t\t\tEmber.set(this, 'showUnarchiveDialog', true);\n\t\t\t\t\tEmber.set(this, 'editItems', [project]);\n\t\t\t\t\t// this.unarchive([project]);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error(\"An unrecognized action was called in the component/projects/sub-project actionView\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tconfirmUnarchive: function confirmUnarchive() {\n\t\t\t\tthis.unarchive(Ember.get(this, 'editItems'));\n\t\t\t\tEmber.set(this, 'showUnarchiveDialog', false);\n\t\t\t},\n\t\t\tcancelUnarchive: function cancelUnarchive() {\n\t\t\t\tEmber.set(this, 'showUnarchiveDialog', false);\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tarchiveProject: function archiveProject() {\n\t\t\t\tthis.archive();\n\t\t\t},\n\t\t\tcloseArchiveDialog: function closeArchiveDialog() {\n\t\t\t\tEmber.set(this, 'archiveItems', null);\n\t\t\t\tEmber.set(this, 'showArchiveDialog', false);\n\t\t\t},\n\t\t\tfilterAction: function filterAction(action) {\n\t\t\t\tif (Ember.get(action, 'key') === 'archived') {\n\t\t\t\t\tthis.getProjects(false);\n\t\t\t\t\tEmber.set(this, 'archived', true);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'active') {\n\t\t\t\t\tthis.getProjects(true);\n\t\t\t\t\tEmber.set(this, 'archived', false);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/*\n    * Cost Code Select Actions\n    */\n\t\t\tonCancelCostCodeChanges: function onCancelCostCodeChanges() {\n\t\t\t\t_logger.default.info(this, 'onCancelCostCodeChanges');\n\n\t\t\t\treturn this.rollbackCostCodeChanges();\n\t\t\t},\n\t\t\tonSaveManagerChanges: function onSaveManagerChanges(projectCostCodeLinks) {\n\t\t\t\t_logger.default.info(this, 'onSaveManagerChanges', { projectCostCodeLinks: projectCostCodeLinks });\n\n\t\t\t\tvar projectId = Ember.get(this, 'project.id');\n\t\t\t\tprojectCostCodeLinks.setEach('projectId', projectId);\n\n\t\t\t\treturn this.recieveCostCodeChanges(projectCostCodeLinks);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/report/time-card-approval/chart', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kChartOptions = {\n\t\tlegend: {\n\t\t\tdisplay: false\n\t\t},\n\t\tresponsive: true\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\n\t\tisLoading: null,\n\t\tmodel: null,\n\t\tmemberTimeDocuments: null,\n\t\tfilterSelected: null,\n\t\tmodeFilterConfig: null,\n\n\t\t/**\n   * aggregates\n   *\n   */\n\n\t\tmembersSigned: Ember.computed.filterBy('memberTimeDocuments', 'hasValidSelfSignature', true),\n\t\tmembersToResign: Ember.computed.filterBy('memberTimeDocuments', 'needsSelfSignatureResign', true),\n\n\t\tnumMembers: Ember.computed.alias('model.length'),\n\t\tnumSigned: Ember.computed.alias('membersSigned.length'),\n\t\tnumResign: Ember.computed.alias('membersToResign.length'),\n\t\tnumUnsigned: Ember.computed('numMembers', 'numSigned', 'numResign', function () {\n\t\t\treturn this.getWithDefault('numMembers', 0) - this.getWithDefault('numSigned', 0) - this.getWithDefault('numResign', 0);\n\t\t}),\n\n\t\tbothSigned: Ember.computed.filterBy('memberTimeDocuments', 'hasBothValidSignatures'),\n\t\tneedsBothSignature: Ember.computed.filterBy('memberTimeDocuments', 'needsBothSignature'),\n\t\tneedsBothResign: Ember.computed.filterBy('memberTimeDocuments', 'needsBothSignatureResign'),\n\n\t\t// needs one, but not both of the signatures\n\t\tneedsEitherSignature: Ember.computed.filter('memberTimeDocuments', function (item) {\n\t\t\treturn item.get('needsEitherSignature') && !item.get('needsBothSignature');\n\t\t}),\n\n\t\t// only the employee signature is needed\n\t\tneedsSelfSignature: Ember.computed.filter('needsEitherSignature', function (doc) {\n\t\t\treturn !doc.get('hasValidSelfSignature') && doc.get('hasValidAuthoritativeSignature');\n\t\t}),\n\n\t\t// only the supervisor signature is needed\n\t\tneedsAuthoritativeSignature: Ember.computed.filter('needsEitherSignature', function (doc) {\n\t\t\treturn !doc.get('hasValidAuthoritativeSignature') && doc.get('hasValidSelfSignature');\n\t\t}),\n\n\t\tnumNeedsSelfSignature: Ember.computed.alias('needsSelfSignature.length'),\n\t\tnumNeedsAuthoritativeSignature: Ember.computed.alias('needsAuthoritativeSignature.length'),\n\t\tnumNeedsEitherSignature: Ember.computed.alias('needsEitherSignature.length'),\n\t\tnumBothSigned: Ember.computed.alias('bothSigned.length'),\n\t\tnumNeedsBothResign: Ember.computed.alias('needsBothResign.length'),\n\t\tnumNeedsBothSignature: Ember.computed('numMembers', 'numBothSigned', 'numNeedsEitherSignature', 'numNeedsBothResign', function () {\n\t\t\treturn this.getWithDefault('numMembers', 0) - this.getWithDefault('numBothSigned', 0) - this.getWithDefault('numNeedsEitherSignature', 0) - this.getWithDefault('numNeedsBothResign', 0);\n\t\t}),\n\n\t\t/**\n   * chart setup\n   *\n   */\n\n\t\t// the template needs access to this, so it needs to be on the component object\n\t\tchartOptions: kChartOptions,\n\t\tmodeFilterConfigWithData: Ember.computed('isLoading', 'modeFilterConfig', 'chartData', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar isLoading = this.get('isLoading');\n\n\t\t\treturn this.get('modeFilterConfig').map(function (o, i) {\n\t\t\t\tvar value = isLoading ? 0 : _this.get('chartData')[i];\n\t\t\t\tvar style = Ember.String.htmlSafe('background-color: ' + o.color);\n\n\t\t\t\treturn Object.assign({}, o, { value: value, style: style });\n\t\t\t});\n\t\t}),\n\n\t\tchartLabels: Ember.computed.map('modeFilterConfig', function (o) {\n\t\t\treturn o.label;\n\t\t}),\n\t\tchartColors: Ember.computed.map('modeFilterConfig', function (o) {\n\t\t\treturn o.color;\n\t\t}),\n\n\t\tchartData: Ember.computed('isLoading', 'signature.isSignatureModeSupervisor', 'chartDataBase', 'chartDataSupervisor', function () {\n\t\t\tif (this.get('isLoading')) {\n\t\t\t\treturn [0, 0, 0, 0, 0];\n\t\t\t}\n\n\t\t\treturn this.get('signature.isSignatureModeSupervisor') ? this.get('chartDataSupervisor') : this.get('chartDataBase');\n\t\t}),\n\n\t\tchartDataBase: Ember.computed('numSigned', 'numResign', 'numUnsigned', function () {\n\t\t\treturn [this.getWithDefault('numSigned', 0), this.getWithDefault('numResign', 0), this.getWithDefault('numUnsigned', 0)];\n\t\t}),\n\n\t\tchartDataSupervisor: Ember.computed('numBothSigned', 'numNeedsAuthoritativeSignature', 'numNeedsSelfSignature', 'numNeedsBothSignature', 'numNeedsBothResign', function () {\n\t\t\treturn [this.getWithDefault('numBothSigned', 0), this.getWithDefault('numNeedsAuthoritativeSignature', 0), this.getWithDefault('numNeedsSelfSignature', 0), this.getWithDefault('numNeedsBothResign', 0), this.getWithDefault('numNeedsBothSignature', 0)];\n\t\t}),\n\n\t\tchartConfig: Ember.computed('chartData', 'chartLabels', 'chartColors', function () {\n\t\t\treturn {\n\t\t\t\tlabels: this.get('chartLabels'),\n\t\t\t\tdatasets: [{\n\t\t\t\t\tdata: this.get('chartData'),\n\t\t\t\t\tbackgroundColor: this.get('chartColors')\n\t\t\t\t}]\n\t\t\t};\n\t\t}),\n\n\t\tactions: {\n\t\t\tfilterSelected: function filterSelected(itemKey) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.filterSelected(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/report/time-card-approval/list-item-loading', ['exports'], function (exports) {\n\t\t'use strict';\n\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n\t\t});\n\t\texports.default = Ember.Component.extend({\n\t\t\t\ttagName: 'span',\n\t\t\t\tclassNames: ['c-icon', 'refresh-icon', 'icon-spin-counter']\n\t\t});\n});","define('busy-app/components/report/time-card-approval/lock-date', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t\t'use strict';\n\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n\t\t});\n\t\texports.default = Ember.Component.extend({\n\t\t\t\ttagName: 'span',\n\t\t\t\tclassNames: ['lock-date'],\n\t\t\t\tattributeBindings: ['title'],\n\n\t\t\t\ttitle: (0, _utils.loc)('Lock Date')\n\t\t});\n});","define('busy-app/components/report/time-card-approval/signature-status', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: 'span',\n\t\tclassNames: ['signature-status'],\n\t\tattributeBindings: ['title'],\n\n\t\ttitle: (0, _utils.loc)('Status'),\n\t\tisLoading: null,\n\t\thasNoSeconds: null,\n\t\thasValidSignature: null,\n\t\tneedsSignatureResign: null,\n\t\tsignature: null\n\t});\n});","define('busy-app/components/report/time-card/signature-display', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    auth: Ember.inject.service('auth'),\n    signature: Ember.inject.service('signature'),\n\n    createdBy: Ember.computed('auth.member.id', function () {\n      return this.get('auth.member.fullName') + ' @ ' + _utils.Time.date().format('h:mm A MM/DD/YYYY');\n    })\n  });\n});","define('busy-app/components/report/time-card/signature-state', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\n\t\tclassNames: ['signature-state'],\n\t\ttagName: 'span',\n\n\t\t// attributes\n\t\tmemberTimeDocument: null,\n\t\tpayPeriodSeconds: null,\n\n\t\t// properties\n\t\tsignatureBreadcrumbState: Ember.computed('payPeriodSeconds.{isSignable}', 'memberTimeDocument.{hasValidSelfSignature,needsSelfSignatureResign,hasBothValidSignatures,needsEitherSignatureResign}', function () {\n\t\t\tif (Ember.isNone(this.get('payPeriodSeconds'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar isTimecardMine = true; // hardcoded for reporting consistency\n\t\t\tvar isSupervisor = true; // hardcoded for reporting consistency\n\n\t\t\tvar signatureState = this.get('signature').getSignatureState(isTimecardMine, isSupervisor, this.get('payPeriodSeconds'), this.get('features'), this.get('signature'), this.get('memberTimeDocument'));\n\n\t\t\treturn signatureState;\n\t\t}),\n\n\t\t// transform the breadcrumb style state\n\t\tsignatureState: Ember.computed('signatureBreadcrumbState', function () {\n\t\t\tvar state = this.get('signatureBreadcrumbState');\n\n\t\t\tif (state === 'Sign') {\n\t\t\t\treturn 'Not Signed';\n\t\t\t} else if (state === 'Re-Sign') {\n\t\t\t\treturn 'Re-sign Required';\n\t\t\t} else if (state === null) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\t// Signed\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}),\n\n\t\tsignatureStateClass: Ember.computed('signatureBreadcrumbState', function () {\n\t\t\tvar state = this.get('signatureBreadcrumbState');\n\n\t\t\tif (state === 'Sign') {\n\t\t\t\treturn 'unsigned';\n\t\t\t} else if (state === 'Re-Sign') {\n\t\t\t\treturn 'resign';\n\t\t\t} else if (state === 'Signed') {\n\t\t\t\treturn 'signed';\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/components/safety-signature', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({});\n});","define('busy-app/components/select-menu/base', ['exports', '@busy-web/utils', '@busy-web/components/mixins/close-on-escape', 'busy-app/utils/logger'], function (exports, _utils, _closeOnEscape, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend(_closeOnEscape.default, {\n\n\t\tclassNames: ['c-select-menu'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstate: Ember.inject.service('state'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmodel: null,\n\t\tpage: 1,\n\t\tpageSize: 30,\n\n\t\t/**\n   * hides and shows the menu\n   *\n   * @private\n   * @property isMenuOpen\n   * @type boolean\n   */\n\t\tisMenuOpen: false,\n\t\tslideIn: false,\n\t\tdisabled: false,\n\t\tautoOpen: false,\n\n\t\t/**\n   * the title to show after a selection has been made\n   *\n   * @property selectedTitle\n   * @type string\n   */\n\t\tselectedTitle: '',\n\n\t\t/**\n   * the selected item stored for refreference\n   *\n   * @property selectedItem\n   * @type object\n   */\n\t\tselectedItem: null,\n\n\t\tkeyword: '',\n\n\t\t/**\n   * the title showing in the menu.\n   *\n   * computed property calculated off the selectedTitle\n   *\n   * @property menuTitle\n   * @type string\n   */\n\t\tmenuTitle: Ember.computed('selectedTitle', function () {\n\t\t\t// default title is `None`\n\t\t\tvar title = (0, _utils.loc)('None');\n\n\t\t\t// if the selectedTitle is set to non-empty string\n\t\t\t// then use it for the title\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'selectedTitle'))) {\n\t\t\t\ttitle = Ember.get(this, 'selectedTitle');\n\t\t\t}\n\n\t\t\t// assert title is a string and return it\n\t\t\t_utils.Assert.isString(title);\n\n\t\t\treturn title;\n\t\t}),\n\n\t\t_loadData: function _loadData() {\n\t\t\tvar _this = this;\n\n\t\t\t// Logger.info(this, '_loadData');\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\tmodel: [],\n\t\t\t\tisLoaded: false\n\t\t\t});\n\n\t\t\tvar keyword = Ember.get(this, 'keyword');\n\t\t\tvar dataLoader = Ember.isEmpty(keyword) ? this.loadData.bind(this) : this.loadSearch.bind(this, keyword);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\trecentModel: this.loadRecent(), // load recent data\n\t\t\t\tdata: dataLoader() // load model data\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar recentModel = _ref.recentModel,\n\t\t\t\t    data = _ref.data;\n\n\t\t\t\tvar model = Ember.isNone(Ember.get(data, 'results')) ? data : Ember.get(data, 'results');\n\t\t\t\tvar totalRows = Ember.get(data, 'meta.totalRows');\n\t\t\t\t// Logger.info(this, '_loadData', get(model, 'length'));\n\n\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\trecentModel: recentModel,\n\t\t\t\t\ttotalRows: totalRows,\n\t\t\t\t\tmodel: model\n\t\t\t\t});\n\n\t\t\t\treturn model;\n\t\t\t}).finally(function () {\n\t\t\t\tEmber.set(_this, 'model.isLoaded', true);\n\t\t\t});\n\t\t},\n\t\tloadRecent: function loadRecent() {\n\t\t\t_utils.Assert.throw('Function must be overriden by classes extending SelectMenu.Base');\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\t_utils.Assert.throw('Function must be overriden by classes extending SelectMenu.Base');\n\t\t},\n\t\t_loadSearch: function _loadSearch(keyword) {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.loadSearch(keyword).then(function (data) {\n\t\t\t\tvar model = Ember.isNone(Ember.get(data, 'results')) ? data : Ember.get(data, 'results');\n\t\t\t\tvar totalRows = Ember.get(data, 'meta.totalRows');\n\t\t\t\t// Logger.info(this, '_loadSearch', get(model, 'length'));\n\n\t\t\t\tEmber.setProperties(_this2, {\n\t\t\t\t\ttotalRows: totalRows,\n\t\t\t\t\tmodel: model\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadSearch: function loadSearch() /*keyword*/{\n\t\t\t_utils.Assert.throw('Function must be overriden by classes extending SelectMenu.Base');\n\t\t},\n\t\tgetPropertyArray: function getPropertyArray(array, key) {\n\t\t\tvar keys = [];\n\t\t\tarray.forEach(function (item) {\n\t\t\t\tvar val = Ember.get(item, key);\n\t\t\t\tif (!Ember.isEmpty(val) && keys.indexOf(val) === -1) {\n\t\t\t\t\tkeys.push(val);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn keys;\n\t\t},\n\t\tstartLoading: function startLoading() {\n\t\t\tEmber.set(this, 'isLoading', true);\n\t\t},\n\t\tstopLoading: function stopLoading() {\n\t\t\tvar _this3 = this;\n\n\t\t\tEmber.run.later(function () {\n\t\t\t\treturn Ember.set(_this3, 'isLoading', false);\n\t\t\t}, 300);\n\t\t},\n\t\tonEscape: function onEscape() {\n\t\t\treturn this.closeMenuHandler(false).then(function () {\n\t\t\t\treturn false;\n\t\t\t});\n\t\t},\n\t\treset: function reset() {\n\t\t\t// Logger.info(this, 'reset');\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\t// save selected\n\t\t\t\t_selectedTitle: Ember.get(this, 'selectedTitle'),\n\t\t\t\t_selectedItem: Ember.get(this, 'selectedItem'),\n\n\t\t\t\t// set selected to none\n\t\t\t\tselectedTitle: '',\n\t\t\t\tselectedItem: null,\n\n\t\t\t\t// reset page to 1\n\t\t\t\tpage: 1,\n\t\t\t\tkeyword: null\n\t\t\t});\n\t\t},\n\t\trestore: function restore() {\n\t\t\t// Logger.info(this, 'restore');\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\t// restore selected values\n\t\t\t\tselectedTitle: Ember.get(this, '_selectedTitle'),\n\t\t\t\tselectedItem: Ember.get(this, '_selectedItem'),\n\n\t\t\t\t// clear saved values\n\t\t\t\t_selectedTitle: '',\n\t\t\t\t_selectedItem: null\n\t\t\t});\n\t\t},\n\t\topenMenuHandler: function openMenuHandler(openedBy) {\n\t\t\tvar _this4 = this;\n\n\t\t\t_logger.default.info(this, 'openMenuHandler', openedBy);\n\t\t\tif (!Ember.get(this, 'isDestroyed') && !Ember.get(this, 'isOpening')) {\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\topenedBy: openedBy,\n\t\t\t\t\tisOpening: true\n\t\t\t\t});\n\n\t\t\t\t// bind escape key to close menu\n\t\t\t\tthis.unbindEscape();\n\t\t\t\tthis.bindEscape();\n\n\t\t\t\t// reset menu so it opens fresh\n\t\t\t\tthis.reset();\n\n\t\t\t\t// show loading animation\n\t\t\t\tthis.startLoading();\n\n\t\t\t\t// open menu to show overlay background\n\t\t\t\tEmber.set(this, 'isMenuOpen', true);\n\n\t\t\t\t// load data\n\t\t\t\tthis._loadData().then(function () {\n\n\t\t\t\t\t// stop loading\n\t\t\t\t\t_this4.stopLoading();\n\n\t\t\t\t\t// trigger menu slide in anamation\n\t\t\t\t\tEmber.setProperties(_this4, {\n\t\t\t\t\t\tslideIn: true,\n\t\t\t\t\t\tisOpening: false\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcloseMenuHandler: function closeMenuHandler(didSelectValue) {\n\t\t\tvar _this5 = this;\n\n\t\t\t_logger.default.info(this, 'closeMenuHandler', didSelectValue, Ember.get(this, 'selectedItem'), Ember.get(this, 'openedBy'));\n\n\t\t\tif (!this.get('isDestroyed') && !Ember.get(this, 'isClosing')) {\n\t\t\t\tEmber.set(this, 'isClosing', true);\n\n\t\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\t\t// remove escape listeners\n\t\t\t\t\t_this5.unbindEscape();\n\n\t\t\t\t\t// slide menu out of view\n\t\t\t\t\tEmber.set(_this5, 'slideIn', false);\n\n\t\t\t\t\t// restore previous menu selections\n\t\t\t\t\t_this5.restore();\n\n\t\t\t\t\t// wait for menu animation\n\t\t\t\t\tEmber.run.later(_this5, function () {\n\n\t\t\t\t\t\t// remove menu overlay\n\t\t\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\t\t\tisMenuOpen: false,\n\t\t\t\t\t\t\tisClosing: false\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.sendAction('onMenuClose', didSelectValue, Ember.get(this, 'selectedItem'), Ember.get(this, 'openedBy'));\n\n\t\t\t\t\t\treturn resolve(true);\n\t\t\t\t\t}, 300);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\t\thandleBack: function handleBack() {\n\t\t\treturn this.closeMenuHandler(false);\n\t\t},\n\n\n\t\t/**\n   * Sets the selected title with the selected item\n   *\n   * @private\n   * @method setSelectedTitle\n   * @param item\n   * @return {void}\n   */\n\t\tgetSelectedTitle: function getSelectedTitle() /*item*/{\n\t\t\t_utils.Assert.throw('Function must be overriden by classes extending SelectMenu.Base');\n\t\t},\n\t\tselectHandler: function selectHandler(item) {\n\t\t\t// Logger.info(this, 'selectHandler');\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\t// save selection\n\t\t\t\tif (Ember.isNone(item)) {\n\t\t\t\t\tEmber.set(this, 'selectedTitle', '');\n\t\t\t\t\tEmber.set(this, 'selectedItem', null);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'selectedTitle', this.getSelectedTitle(item));\n\t\t\t\t\tEmber.set(this, 'selectedItem', item);\n\t\t\t\t}\n\n\t\t\t\t// call reset to update the saved selection\n\t\t\t\tthis.reset();\n\n\t\t\t\t// send select action\n\t\t\t\tthis.sendAction('onSelect', item);\n\n\t\t\t\t// close menu\n\t\t\t\treturn this.closeMenuHandler(true);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenMenu: function openMenu() {\n\t\t\t\tvar openedBy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"manual\";\n\n\t\t\t\t_logger.default.info(this, 'action', 'openMenu', openedBy);\n\t\t\t\tif (!Ember.get(this, 'disabled')) {\n\t\t\t\t\tthis.openMenuHandler(openedBy);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseMenu: function closeMenu() {\n\t\t\t\t// Logger.info(this, 'action', 'closeMenu');\n\t\t\t\treturn this.closeMenuHandler(false);\n\t\t\t},\n\t\t\tselectAction: function selectAction(item) {\n\t\t\t\t// Logger.info(this, 'action', 'selectAction');\n\t\t\t\treturn this.selectHandler(item);\n\t\t\t},\n\t\t\tselectNoneAction: function selectNoneAction() {\n\t\t\t\treturn this.selectHandler(null);\n\t\t\t},\n\t\t\tchangePage: function changePage(page) {\n\t\t\t\tEmber.setProperties(this, { page: page });\n\t\t\t\treturn this._loadData();\n\t\t\t},\n\t\t\tchangeSize: function changeSize(pageSize) {\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\tpageSize: pageSize,\n\t\t\t\t\tpage: 1\n\t\t\t\t});\n\t\t\t\treturn this._loadData();\n\t\t\t},\n\t\t\tbackAction: function backAction() {\n\t\t\t\treturn this.handleBack();\n\t\t\t},\n\t\t\tsearchAction: function searchAction(keyword) {\n\t\t\t\t// Logger.info(this, 'searchAction', keyword);\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\tkeyword: keyword,\n\t\t\t\t\tpage: 1\n\t\t\t\t});\n\n\t\t\t\treturn this._loadData();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/select-menu/cost-code', ['exports', 'busy-app/components/select-menu/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tclassNames: ['c-cost-code-select-menu'],\n\n\t\tbypassRequireCostCode: false,\n\n\t\tprojectId: null,\n\t\tprojectCostCodeLinks: null,\n\t\tlinkedCostCodes: null,\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tselectedTitle: '',\n\t\tselectedItem: null,\n\n\t\t_selectedTitle: '',\n\t\t_selectedItem: null,\n\n\t\t__projectId: null,\n\t\t__recent: null,\n\t\t__linkedCostCodes: null,\n\t\t__projectCostCodeLinks: null,\n\n\t\tallowNone: Ember.computed('bypassRequireCostCode', 'auth.organization.requireCostCode', function () {\n\t\t\treturn !Ember.get(this, 'auth.organization.requireCostCode') || Ember.get(this, 'bypassRequireCostCode');\n\t\t}),\n\n\t\tonAutoOpenChanged: Ember.observer('autoOpen', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (Ember.get(this, 'autoOpen')) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\t\tautoOpen: false,\n\t\t\t\t\t\tselectedTitle: '',\n\t\t\t\t\t\tselectedItem: null\n\t\t\t\t\t});\n\n\t\t\t\t\t_this.initLinkedCostCodes();\n\t\t\t\t\t_this.send('openMenu', 'auto');\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\t// Logger.info(this, 'init');\n\n\t\t\tthis.initLinkedCostCodes();\n\t\t},\n\t\tinitLinkedCostCodes: function initLinkedCostCodes() {\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t// Logger.info(this, 'initLinkedCostCodes');\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\t_selectedTitle: '',\n\t\t\t\t\t_selectedItem: null,\n\n\t\t\t\t\t__projectId: Ember.get(this, 'projectId'),\n\t\t\t\t\t__recent: null,\n\t\t\t\t\t__linkedCostCodes: null,\n\t\t\t\t\t__projectCostCodeLinks: null\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tmenuTitle: Ember.computed('selectedItem.costCodeLabel', function () {\n\t\t\t// default title is `None`\n\t\t\tvar title = (0, _utils.loc)('None');\n\n\t\t\t// if the selectedTitle is set to non-empty string\n\t\t\t// then use it for the title\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'selectedItem.costCodeLabel'))) {\n\t\t\t\ttitle = Ember.get(this, 'selectedItem.costCodeLabel');\n\t\t\t}\n\n\t\t\treturn title;\n\t\t}),\n\n\t\tgetSelectedTitle: function getSelectedTitle(item) {\n\t\t\treturn Ember.get(item, 'costCode');\n\t\t},\n\t\tloadRecent: function loadRecent() {\n\t\t\t// Logger.info(this, 'loadRecent');\n\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\treturn this.loadRecentScoped();\n\t\t\t} else {\n\t\t\t\treturn this.loadRecentDefault();\n\t\t\t}\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\t// Logger.info(this, 'loadData');\n\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\treturn this.loadDataScoped();\n\t\t\t} else {\n\t\t\t\treturn this.loadDataDefault();\n\t\t\t}\n\t\t},\n\t\tloadSearch: function loadSearch(keyword) {\n\t\t\t// Logger.info(this, 'loadSearch', keyword);\n\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\treturn this.loadSearchScoped(keyword);\n\t\t\t} else {\n\t\t\t\treturn this.loadSearchDefault(keyword);\n\t\t\t}\n\t\t},\n\n\n\t\t// without Project Scoped Cost Codes\n\t\tloadRecentDefault: function loadRecentDefault() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Logger.info(this, 'loadRecentDefault');\n\t\t\tvar __recent = Ember.get(this, '__recent');\n\n\t\t\tif (Ember.isNone(__recent)) {\n\t\t\t\t// Logger.info(this, 'loadRecentDefault', 'miss');\n\n\t\t\t\tvar params = {\n\t\t\t\t\tarchived_on: null,\n\t\t\t\t\tdeleted_on: '_-NULL-_',\n\t\t\t\t\t_asc: ['cost_code']\n\t\t\t\t};\n\n\t\t\t\t__recent = this.getRecentTimeEntries().then(function (model) {\n\t\t\t\t\treturn Ember.get(_this2, 'store').findWhereIn('cost-code', 'id', model.mapBy('costCodeId'), params);\n\t\t\t\t});\n\n\t\t\t\tEmber.setProperties(this, { __recent: __recent });\n\t\t\t}\n\n\t\t\treturn __recent;\n\t\t},\n\n\n\t\t// without Project Scoped Cost Codes\n\t\tloadDataDefault: function loadDataDefault() {\n\t\t\tvar params = {\n\t\t\t\tpage: Ember.get(this, 'page'),\n\t\t\t\tpage_size: Ember.get(this, 'pageSize'),\n\t\t\t\tarchived_on: null,\n\t\t\t\t_asc: ['cost_code']\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').query('cost-code', params);\n\t\t},\n\n\n\t\t// without Project Scoped Cost Codes\n\t\tloadSearchDefault: function loadSearchDefault(keyword) {\n\t\t\t// Logger.info(this, 'loadSearchDefault', keyword);\n\n\t\t\tvar params = {\n\t\t\t\tpage: Ember.get(this, 'page'),\n\t\t\t\tpage_size: 100,\n\t\t\t\tarchived_on: null,\n\t\t\t\t_asc: ['cost_code'],\n\t\t\t\t_search: keyword\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').query('cost-code', params);\n\t\t},\n\n\n\t\t// Project Scoped Cost Codes enabled\n\t\tloadRecentScoped: function loadRecentScoped() {\n\t\t\t// Logger.info(this, 'loadRecentScoped');\n\t\t\tvar __recent = Ember.get(this, '__recent');\n\n\t\t\tif (Ember.isNone(__recent)) {\n\t\t\t\t// Logger.info(this, 'loadRecentScoped', 'miss');\n\n\t\t\t\t__recent = Ember.RSVP.hash({\n\t\t\t\t\ttimeEntries: this.getRecentTimeEntries(),\n\t\t\t\t\tcostCodes: this.getScopedCostCodes()\n\t\t\t\t}).then(function (props) {\n\t\t\t\t\tvar timeEntries = props.timeEntries,\n\t\t\t\t\t    costCodes = props.costCodes;\n\n\t\t\t\t\tvar recentCostCodeIds = timeEntries.mapBy('costCodeId');\n\n\t\t\t\t\treturn costCodes.filter(function (costCode) {\n\t\t\t\t\t\treturn recentCostCodeIds.includes(Ember.get(costCode, 'id'));\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tEmber.setProperties(this, { __recent: __recent });\n\t\t\t}\n\n\t\t\treturn __recent;\n\t\t},\n\n\n\t\t// Project Scoped Cost Codes enabled\n\t\t// must retrieve all available cost codes upfront\n\t\tloadDataScoped: function loadDataScoped() {\n\t\t\tvar _this3 = this;\n\n\t\t\t// Logger.info(this, 'loadDataScoped');\n\n\t\t\treturn this.getScopedCostCodes().then(function (results) {\n\t\t\t\treturn _this3.paginateResults(results);\n\t\t\t});\n\t\t},\n\n\n\t\t// Project Scoped Cost Codes enabled\n\t\t// must retrieve all available cost codes upfront, then filters by the 'costCode' and 'title' fields\n\t\tloadSearchScoped: function loadSearchScoped(keyword) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.getScopedCostCodes().then(function (results) {\n\t\t\t\treturn _this4.filterResultsByKeyword(results, keyword);\n\t\t\t}).then(function (results) {\n\t\t\t\treturn _this4.paginateResults(results);\n\t\t\t});\n\t\t},\n\t\tpaginateResults: function paginateResults(fullResults) {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['page', 'pageSize']),\n\t\t\t    page = _EmberGetProperties.page,\n\t\t\t    pageSize = _EmberGetProperties.pageSize;\n\n\t\t\tvar startRow = (page - 1) * pageSize;\n\t\t\tvar endRow = startRow + pageSize;\n\t\t\tvar totalRows = Ember.get(fullResults, 'length');\n\t\t\tvar results = fullResults.slice(startRow, endRow);\n\n\t\t\t// Logger.info(this, 'paginateResults', `${startRow}-${endRow} of ${totalRows}`, { page, pageSize }, results);\n\n\t\t\treturn {\n\t\t\t\tresults: results,\n\t\t\t\tmeta: {\n\t\t\t\t\ttotalRows: totalRows,\n\t\t\t\t\treturnedRows: Ember.get(results, 'length')\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tfilterResultsByKeyword: function filterResultsByKeyword(results, keyword) {\n\t\t\tvar safeLower = function safeLower(str) {\n\t\t\t\treturn (str || '').trim().toLowerCase();\n\t\t\t};\n\t\t\tvar searchKeyword = safeLower(keyword);\n\n\t\t\t// Logger.info(this, 'loadSearchScoped', `'${keyword}'`, `'${searchKeyword}'`);\n\n\t\t\treturn results.filter(function (item) {\n\t\t\t\treturn safeLower(Ember.get(item, 'costCode')).includes(searchKeyword) || safeLower(Ember.get(item, 'title')).includes(searchKeyword);\n\t\t\t});\n\t\t},\n\t\tgetRecentTimeEntries: function getRecentTimeEntries() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: Ember.get(this, 'auth.member.id'),\n\t\t\t\tpage: 1,\n\t\t\t\tpage_size: 5,\n\t\t\t\tcost_code_id: '!_-NULL-_',\n\t\t\t\tdeleted_on: null,\n\t\t\t\t_desc: ['start_time']\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'state').query('time-entry', params);\n\t\t},\n\n\n\t\t// since this is a full table lookup, the results are cached on the component\n\t\tgetScopedCostCodes: function getScopedCostCodes() {\n\t\t\tvar _this5 = this;\n\n\t\t\t// Logger.info(this, 'getScopedCostCodes');\n\t\t\t_utils.Assert.test('projectId must be provided', Ember.get(this, 'projectId'));\n\t\t\tvar __linkedCostCodes = Ember.get(this, '__linkedCostCodes');\n\n\t\t\tif (Ember.isNone(__linkedCostCodes)) {\n\t\t\t\t// Logger.info(this, 'getScopedCostCodes', 'miss');\n\t\t\t\t__linkedCostCodes = this.getProjectCostCodeLinks().then(function (links) {\n\t\t\t\t\tvar params = {\n\t\t\t\t\t\tarchived_on: null\n\t\t\t\t\t};\n\n\t\t\t\t\tvar allowedIds = links.mapBy('costCodeId');\n\t\t\t\t\treturn Ember.get(_this5, 'store').findWhereIn('cost-code', 'id', allowedIds, params).then(function (results) {\n\t\t\t\t\t\treturn results.sortBy('id').sortBy('title').sortBy('costCode');\n\t\t\t\t\t}); // sort the cost codes\n\t\t\t\t});\n\n\t\t\t\tEmber.setProperties(this, { __linkedCostCodes: __linkedCostCodes }); // NOTE: the promise is saved, not the result\n\t\t\t}\n\n\t\t\treturn __linkedCostCodes;\n\t\t},\n\n\n\t\t// since this is a full table lookup, the results are cached on the component\n\t\tgetProjectCostCodeLinks: function getProjectCostCodeLinks() {\n\t\t\t// Logger.info(this, 'getProjectCostCodeLinks');\n\t\t\t_utils.Assert.test('projectId must be provided', Ember.get(this, 'projectId'));\n\t\t\tvar __projectCostCodeLinks = Ember.get(this, '__projectCostCodeLinks');\n\n\t\t\tif (Ember.isNone(__projectCostCodeLinks)) {\n\t\t\t\t// Logger.info(this, 'getProjectCostCodeLinks', 'miss');\n\t\t\t\tvar project_id = Ember.get(this, 'projectId');\n\n\t\t\t\t__projectCostCodeLinks = Ember.get(this, 'state').findAll('project-cost-code-link', { project_id: project_id });\n\n\t\t\t\tEmber.setProperties(this, { __projectCostCodeLinks: __projectCostCodeLinks }); // NOTE: the promise is saved, not the result\n\t\t\t}\n\n\t\t\treturn __projectCostCodeLinks;\n\t\t}\n\t});\n});","define('busy-app/components/select-menu/equipment', ['exports', 'busy-app/components/select-menu/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tclassNames: ['c-equipment-select-menu'],\n\n\t\tmenuTitle: Ember.computed('selectedItem.fullName', function () {\n\t\t\t// default title is `None`\n\t\t\tvar title = (0, _utils.loc)('None');\n\n\t\t\t// if the selectedTitle is set to non-empty string\n\t\t\t// then use it for the title\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'selectedItem.fullName'))) {\n\t\t\t\ttitle = Ember.get(this, 'selectedItem.fullName');\n\t\t\t}\n\n\t\t\treturn title;\n\t\t}),\n\n\t\tloadRecent: function loadRecent() {\n\t\t\tvar _this = this;\n\n\t\t\tvar member_id = Ember.get(this, 'auth.member.id'),\n\t\t\t    equipment_id = '!_-NULL-_',\n\t\t\t    page = 1,\n\t\t\t    page_size = 1,\n\t\t\t    _desc = ['start_time'],\n\t\t\t    deleted_on = null;\n\n\t\t\treturn Ember.get(this, 'store').query('time-entry', { member_id: member_id, equipment_id: equipment_id, page: page, page_size: page_size, _desc: _desc, deleted_on: deleted_on }).then(function (model) {\n\t\t\t\treturn Ember.get(_this, 'store').findWhereIn('equipment', 'id', _this.getPropertyArray(model, 'equipmentId'), { archived_on: null, deleted_on: deleted_on, _asc: ['title'] });\n\t\t\t});\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar page = Ember.get(this, 'page'),\n\t\t\t    page_size = Ember.get(this, 'pageSize'),\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['equipment_name'];\n\n\t\t\treturn this.get('store').query('equipment', { page: page, page_size: page_size, archived_on: archived_on, _asc: _asc });\n\t\t},\n\t\tloadSearch: function loadSearch(keyword) {\n\t\t\tvar page = Ember.get(this, 'page'),\n\t\t\t    page_size = 100,\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['equipment_name'],\n\t\t\t    _search = keyword;\n\n\t\t\treturn this.get('store').query('equipment', { page: page, page_size: page_size, archived_on: archived_on, _search: _search, _asc: _asc });\n\t\t},\n\t\tgetSelectedTitle: function getSelectedTitle(item) {\n\t\t\treturn Ember.get(item, 'fullName');\n\t\t}\n\t});\n});","define('busy-app/components/select-menu/member', ['exports', 'busy-app/components/select-menu/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service(),\n\t\tclassNames: ['c-member-select-menu'],\n\n\t\tmenuTitle: Ember.computed('selectedItem.fullName', function () {\n\t\t\t// default title is `None`\n\t\t\tvar title = (0, _utils.loc)('None');\n\n\t\t\t// if the selectedTitle is set to non-empty string\n\t\t\t// then use it for the title\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'selectedItem.fullName'))) {\n\t\t\t\ttitle = Ember.get(this, 'selectedItem.fullName');\n\t\t\t}\n\n\t\t\treturn title;\n\t\t}),\n\n\t\tloadRecent: function loadRecent() {\n\t\t\treturn Ember.RSVP.resolve([]);\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar page = Ember.get(this, 'page'),\n\t\t\t    page_size = Ember.get(this, 'pageSize'),\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['first_name', 'last_name'];\n\n\t\t\tvar query = { page: page, page_size: page_size, archived_on: archived_on, _asc: _asc };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tEmber.setProperties(query, { member_group_id: Ember.get(this, 'auth.member.memberGroupId') });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').query('member', query);\n\t\t},\n\t\tloadSearch: function loadSearch(keyword) {\n\t\t\tvar page = Ember.get(this, 'page'),\n\t\t\t    page_size = 100,\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['first_name', 'last_name'],\n\t\t\t    _search = keyword;\n\n\t\t\tvar query = { page: page, page_size: page_size, archived_on: archived_on, _search: _search, _asc: _asc };\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tEmber.setProperties(query, { member_group_id: Ember.get(this, 'auth.member.memberGroupId') });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').query('member', query);\n\t\t},\n\t\tgetSelectedTitle: function getSelectedTitle(item) {\n\t\t\treturn Ember.get(item, 'fullName');\n\t\t}\n\t});\n});","define('busy-app/components/select-menu/project', ['exports', 'busy-app/components/select-menu/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\n\t\tclassNames: ['c-project-select-menu'],\n\n\t\t_storedList: null,\n\t\tdepth: 1,\n\t\tbypassRequireProject: false,\n\n\t\tallowNone: Ember.computed('bypassRequireProject', 'auth.organization.requireProject', function () {\n\t\t\treturn !Ember.get(this, 'auth.organization.requireProject') || Ember.get(this, 'bypassRequireProject');\n\t\t}),\n\n\t\tmenuTitle: Ember.computed('selectedItem.fullTitle', function () {\n\t\t\t// default title is `None`\n\t\t\tvar title = (0, _utils.loc)('None');\n\n\t\t\t// if the selectedTitle is set to non-empty string\n\t\t\t// then use it for the title\n\t\t\tif (!Ember.isEmpty(this.get('selectedItem.title'))) {\n\t\t\t\ttitle = this.get('selectedItem.fullTitle');\n\t\t\t}\n\n\t\t\treturn title;\n\t\t}),\n\n\t\tonAutoOpenChanged: Ember.observer('autoOpen', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (Ember.get(this, 'autoOpen')) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tEmber.setProperties(_this, {\n\t\t\t\t\t\tautoOpen: false,\n\t\t\t\t\t\tselectedTitle: '',\n\t\t\t\t\t\tselectedItem: null\n\t\t\t\t\t});\n\n\t\t\t\t\t_this.send('openMenu', 'auto');\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tloadRecent: function loadRecent() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar query = { member_id: this.get('auth.member.id'), project_id: '!_-NULL-_', page: 1, page_size: 5, _desc: ['start_time'] };\n\n\t\t\treturn this.get('store').query('time-entry', query).then(function (model) {\n\t\t\t\tvar ids = _this2.getPropertyArray(model, 'projectId');\n\t\t\t\treturn _this2.get('store').findWhereIn('project', 'id', ids, { archived_on: '_-NULL-_', deleted_on: '_-NULL-_' }).then(function (projects) {\n\t\t\t\t\treturn _this2.loadChildren(projects);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar depth = 1;\n\n\t\t\tvar query = {\n\t\t\t\tpage: Ember.get(this, 'page'),\n\t\t\t\tpage_size: Ember.get(this, 'pageSize'),\n\t\t\t\tarchived_on: null,\n\t\t\t\t_asc: ['title']\n\t\t\t};\n\n\t\t\t// check for a selected project and use its depth and id\n\t\t\tif (!Ember.isNone(Ember.get(this, 'selectedItem.id'))) {\n\t\t\t\tquery.parent_project_id = Ember.get(this, 'selectedItem.id');\n\t\t\t\tdepth = Ember.get(this, 'selectedItem.depth') + 1;\n\t\t\t}\n\n\t\t\tquery.depth = depth;\n\n\t\t\t// get project models\n\t\t\treturn Ember.get(this, 'store').query('project', query).then(function (model) {\n\t\t\t\treturn _this3.loadChildren(model).then(function (models) {\n\t\t\t\t\t// add unassigned model for parent project\n\t\t\t\t\tif (!Ember.isEmpty(models) && !Ember.isNone(_this3.get('selectedItem.id'))) {\n\t\t\t\t\t\tvar unassigned = Ember.get(_this3, 'store').createRecord('project', {\n\t\t\t\t\t\t\t_model: Ember.get(_this3, 'selectedItem'),\n\t\t\t\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\t\t\tisPlaceholder: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tmodels.pushObject(unassigned._internalModel);\n\t\t\t\t\t}\n\n\t\t\t\t\t// set depth index for component\n\t\t\t\t\tEmber.set(_this3, 'depth', depth);\n\n\t\t\t\t\treturn models;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadSearch: function loadSearch(keyword) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar query = {\n\t\t\t\tpage: Ember.get(this, 'page'),\n\t\t\t\tpage_size: 1000,\n\t\t\t\tarchived_on: '_-NULL-_',\n\t\t\t\t_search: keyword\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(Ember.get(this, 'selectedItem.id'))) {\n\t\t\t\tquery.parent_project_id = Ember.get(this, 'selectedItem.rootProjectId');\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').query('project', query).then(function (model) {\n\t\t\t\treturn _this4.filterArchived(model);\n\t\t\t});\n\t\t},\n\t\tfilterArchived: function filterArchived(model) {\n\t\t\tvar deleted_on = null,\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['title'],\n\t\t\t    ids = this.getPropertyArray(model, 'rootProjectId');\n\n\t\t\treturn Ember.get(this, 'store').findWhereIn('project', 'id', ids, { deleted_on: deleted_on, archived_on: archived_on, _asc: _asc }).then(function (parents) {\n\t\t\t\tvar newModels = [];\n\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\tvar rootProject = parents.findBy('id', Ember.get(item, 'rootProjectId'));\n\t\t\t\t\tif (!Ember.isNone(rootProject)) {\n\t\t\t\t\t\tEmber.set(item, 'rootProject', rootProject);\n\t\t\t\t\t\tnewModels.pushObject(item);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn newModels.sortBy('fullTitle');\n\t\t\t});\n\t\t},\n\t\tloadNextProjects: function loadNextProjects(item) {\n\t\t\tvar _this5 = this;\n\n\t\t\t// push past state for back buttun queue\n\t\t\tthis.pushState();\n\n\t\t\t// reset state\n\t\t\tEmber.set(this, 'selectedItem', item);\n\t\t\tEmber.set(this, 'page', 1);\n\n\t\t\t// show loading animation\n\t\t\tthis.startLoading();\n\n\t\t\treturn this.loadData().then(function (model) {\n\t\t\t\t// set model data\n\t\t\t\tEmber.set(_this5, 'totalRows', Ember.get(model, 'meta.totalRows'));\n\t\t\t\tEmber.set(_this5, 'model', []);\n\t\t\t\tEmber.set(_this5, 'model', model);\n\n\t\t\t\t// remove loading animation\n\t\t\t\t_this5.stopLoading();\n\t\t\t\treturn model;\n\t\t\t});\n\t\t},\n\t\tloadPrevProjects: function loadPrevProjects() {\n\t\t\tthis.popState();\n\t\t},\n\t\tloadChildren: function loadChildren(model) {\n\t\t\tvar deleted_on = null,\n\t\t\t    archived_on = null,\n\t\t\t    _asc = ['title'],\n\t\t\t    ids = this.getPropertyArray(model, 'id');\n\n\t\t\tif (ids.length > 0) {\n\t\t\t\treturn Ember.get(this, 'store').findWhereIn('project', 'parent_project_id', ids, { deleted_on: deleted_on, archived_on: archived_on, _asc: _asc }).then(function (children) {\n\t\t\t\t\t// add child models to parents\n\t\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\t\treturn Ember.set(item, 'children', children.filterBy('parentProjectId', Ember.get(item, 'id')));\n\t\t\t\t\t});\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn Ember.RSVP.resolve(model);\n\t\t},\n\t\tpushState: function pushState() {\n\t\t\tEmber.get(this, '_storedList').push({\n\t\t\t\tselectedItem: Ember.get(this, 'selectedItem'),\n\t\t\t\tmodel: Ember.get(this, 'model'),\n\t\t\t\tdepth: Ember.get(this, 'depth'),\n\t\t\t\tkeyword: Ember.get(this, 'keyword'),\n\t\t\t\tpage: Ember.get(this, 'page'),\n\t\t\t\tpageSize: Ember.get(this, 'pageSize')\n\t\t\t});\n\t\t},\n\t\tpopState: function popState() {\n\t\t\tvar stored = Ember.get(this, '_storedList').pop();\n\t\t\tif (!Ember.isNone(stored)) {\n\t\t\t\tEmber.set(this, 'selectedItem', Ember.get(stored, 'selectedItem'));\n\t\t\t\tEmber.set(this, 'model', Ember.get(stored, 'model'));\n\t\t\t\tEmber.set(this, 'page', Ember.get(stored, 'page'));\n\t\t\t\tEmber.set(this, 'pageSize', Ember.get(stored, 'pageSize'));\n\t\t\t\tEmber.set(this, 'depth', Ember.get(stored, 'depth'));\n\t\t\t\tEmber.set(this, 'keyword', Ember.get(stored, 'keyword'));\n\t\t\t}\n\t\t},\n\t\tgetSelectedTitle: function getSelectedTitle(item) {\n\t\t\treturn Ember.get(item, 'fullTitle');\n\t\t},\n\t\tselectHandler: function selectHandler(item) {\n\t\t\tvar checkChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\tif (!Ember.isNone(item)) {\n\t\t\t\t\tif (checkChildren && Ember.get(item, 'children.length') > 0) {\n\t\t\t\t\t\treturn this.loadNextProjects(item);\n\t\t\t\t\t}\n\n\t\t\t\t\titem = Ember.get(item, 'isPlaceholder') ? Ember.get(item, '_model') : item;\n\t\t\t\t}\n\t\t\t\treturn this._super(item);\n\t\t\t}\n\t\t},\n\t\thandleBack: function handleBack() {\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\tif (Ember.get(this, 'depth') > 1) {\n\t\t\t\t\treturn this.loadPrevProjects();\n\t\t\t\t}\n\n\t\t\t\treturn this._super();\n\t\t\t}\n\t\t},\n\t\topenMenuHandler: function openMenuHandler() {\n\t\t\tvar openedBy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'manual';\n\n\t\t\tEmber.set(this, '_storedList', []);\n\t\t\tEmber.set(this, 'depth', 1);\n\t\t\treturn this._super(openedBy);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tselectItemAction: function selectItemAction(item) {\n\t\t\t\tthis.selectHandler(item, false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/selectors/checkbox-select', ['exports', '@busy-web/components/components/bc-select-menu'], function (exports, _bcSelectMenu) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _bcSelectMenu.default.extend({\n\t\tclassNames: ['c-selectors-checkbox-select'],\n\n\t\t/**\n   * change event listener called when\n   * a checkbox is toggled on or off\n   *\n   * action event\n   *\n   * @public\n   * @property onChange\n   * @type {function|string}\n   */\n\t\tonChange: null,\n\n\t\t/**\n   * Property to stop the select menu from allowing changes\n   * to the menu title\n   *\n   * this should never be set to false for this class\n   *\n   * @private\n   * @property disableChange\n   * @type {boolean}\n   */\n\t\tdisableChange: true,\n\n\t\t/**\n   * overridden method of the bc-select-menu class\n   *\n   * @private\n   * @method createOption\n   * @param el {object} jquery input element\n   * @returns {object}\n   */\n\t\tcreateOption: function createOption(el) {\n\t\t\t// create the option object\n\t\t\treturn Ember.Object.create({\n\t\t\t\tlabel: el.attr('name'),\n\t\t\t\tvalue: el.val(),\n\t\t\t\tselected: el.is(':checked'),\n\t\t\t\tdisabled: el.is(':disabled')\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * change event callback for checkboxes\n    *\n    * @private\n    * @method changeAction\n    * @param item {object}\n    * @returns {void}\n    */\n\t\t\tchangeAction: function changeAction(item) {\n\t\t\t\tif (!item.get('disabled')) {\n\t\t\t\t\tvar selected = !Ember.get(item, 'selected');\n\t\t\t\t\tEmber.set(item, 'selected', selected);\n\t\t\t\t\tthis.sendAction('onChange', Ember.get(item, 'value'), selected);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/selectors/list-select', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kCanTake = ['manageMediaCollection', 'requestSignatures', 'manageEmployees', 'timeEvents', 'manageTimeEntries', 'memberLock']; /**\n                                                                                                                                     * @module Components\n                                                                                                                                     *\n                                                                                                                                     */\n\n\n\tvar kHas = ['canEditPosition', 'manageProjects', 'manageProjectGroups', 'manageCostCodes', 'viewMemberExpenses', 'lockPayPeriods', 'viewProjectExpenses', 'manageCompanySettings', 'manageEmployeeGroups', 'viewEquipmentStatus', 'viewEquipmentDetails', 'manageEquipment'];\n\n\t/**\n  * `Components/Selectors/ListSelect`\n  *\n  * @class ListSelect\n  * @namespace Components.Selectors\n  * @extends Component\n  */\n\texports.default = Ember.Component.extend({\n\t\taccess: Ember.inject.service('access'),\n\n\t\tclassNames: ['list-select-menu'],\n\n\t\tforMember: null,\n\t\tfilterItem: null,\n\t\tmodel: null,\n\t\titemLabel: null,\n\t\tsmall: false,\n\t\tshowEmpty: false,\n\n\t\t_model: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setData();\n\t\t},\n\n\n\t\tshowSelectMenu: Ember.computed('showEmpty', '_model.length', function () {\n\t\t\tif (this.get('showEmpty')) {\n\t\t\t\treturn true;\n\t\t\t} else if (this.get('_model.length') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tsetData: Ember.observer('model', 'model.length', 'access.auth.authMemberPosition.id', 'access.auth.organization.id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar data = [];\n\t\t\tif (!Ember.isNone(this.get('model')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id')) && !Ember.isNone(this.get('access.auth.organization.id'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tvar canAdditem = true;\n\t\t\t\t\tif (!Ember.isNone(item.get('permissions'))) {\n\t\t\t\t\t\tif (!_this.hasPermission(item.get('permissions'))) {\n\t\t\t\t\t\t\tcanAdditem = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('filters'))) {\n\t\t\t\t\t\tif (_this.isFiltered(item.get('filters'))) {\n\t\t\t\t\t\t\tcanAdditem = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (canAdditem) {\n\t\t\t\t\t\tdata.push(_this.copyObject(item));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.set('_model', data);\n\t\t}),\n\n\t\tcopyObject: function copyObject(obj) {\n\t\t\tvar newObj = Ember.Object.create();\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\tnewObj.set(key, Ember.get(obj, key));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn newObj;\n\t\t},\n\t\tisFiltered: function isFiltered(filters) {\n\t\t\tvar _this2 = this;\n\n\t\t\t(true && !(Ember.typeOf(filters) === 'array') && Ember.assert('The filters key must have an array as the value!', Ember.typeOf(filters) === 'array'));\n\n\t\t\tvar isFiltered = false;\n\t\t\tfilters.forEach(function (item) {\n\t\t\t\tvar itemStr = item;\n\t\t\t\tvar isNot = false;\n\t\t\t\tif (/^!/.test(item)) {\n\t\t\t\t\tisNot = true;\n\t\t\t\t\titemStr = item.replace(/^!/, '');\n\t\t\t\t}\n\n\t\t\t\tvar valuePath = 'filterItem.' + itemStr;\n\t\t\t\tif (!_this2.hasObserverFor(valuePath)) {\n\t\t\t\t\t_this2.addObserver(valuePath, _this2, function () {\n\t\t\t\t\t\t_this2.setData();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvar value = _this2.get(valuePath);\n\t\t\t\tif (isNot && value) {\n\t\t\t\t\tisFiltered = true;\n\t\t\t\t} else if (!isNot && !value) {\n\t\t\t\t\tisFiltered = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn isFiltered;\n\t\t},\n\t\thasPermission: function hasPermission(permissions) {\n\t\t\tvar _this3 = this;\n\n\t\t\t(true && !(Ember.typeOf(permissions) === 'array') && Ember.assert('The permissions key must have an array as the value!', Ember.typeOf(permissions) === 'array'));\n\n\t\t\tvar hasPermission = true;\n\t\t\tpermissions.forEach(function (item) {\n\t\t\t\tif (!_this3.getPermision(item)) {\n\t\t\t\t\thasPermission = false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn hasPermission;\n\t\t},\n\t\tgetPermision: function getPermision(permission) {\n\t\t\tif (kCanTake.indexOf(permission) !== -1) {\n\t\t\t\treturn this.get('access').canTakeActionFor(permission, this.get('forMember'));\n\t\t\t} else if (kHas.indexOf(permission) !== -1) {\n\t\t\t\treturn this.get('access').hasPermissionFor(permission);\n\t\t\t} else if (permission === 'isNotSelf') {\n\t\t\t\treturn this.get('access.auth.member.id') !== this.get('forMember.id');\n\t\t\t} else if (permission === 'isNotOwner') {\n\t\t\t\treturn !this.get('access').isOwner(this.get('forMember.id'));\n\t\t\t} else if (permission === 'isSelf') {\n\t\t\t\treturn this.get('access.auth.member.id') === this.get('forMember.id');\n\t\t\t} else if (permission === 'isOwner') {\n\t\t\t\treturn this.get('access').isOwner(this.get('forMember.id'));\n\t\t\t} else if (permission.indexOf('features.') === 0) {\n\t\t\t\treturn this.get(permission);\n\t\t\t} else {\n\t\t\t\t(true && !(false) && Ember.assert('You passed an unsupported permision check to list-select'));\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tselectItem: function selectItem(item) {\n\t\t\t\tthis.sendAction('onSelect', item, this.get('forMember'), this.get('filterItem'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/selectors/position-select', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tselected: null,\n\n\t\tpositions: Ember.computed('auth.positions.@each.id', 'selected', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.positions'))) {\n\t\t\t\tvar list = this.get('auth.positions').sortBy('level');\n\t\t\t\tvar selectedId = this.get('selected');\n\n\t\t\t\t// select the lowest permission or the permission\n\t\t\t\t// that matches the selectedId\n\t\t\t\tvar selected = list.get('lastObject');\n\t\t\t\tif (!Ember.isEmpty(selectedId)) {\n\t\t\t\t\tselected = list.findBy('id', selectedId);\n\t\t\t\t}\n\n\t\t\t\t// return a list of ember objects\n\t\t\t\treturn list.map(function (item) {\n\t\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\ttitle: item.get('title'),\n\t\t\t\t\t\t_selected: selected.id === item.id,\n\t\t\t\t\t\t_model: item\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// default return empty list\n\t\t\treturn [];\n\t\t}),\n\n\t\tactions: {\n\t\t\titemSelected: function itemSelected(item) {\n\t\t\t\tthis.sendAction('onSelect', item);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/edit-billing-address', ['exports', '@busy-web/utils', 'busy-app/utils/geo', 'busy-app/utils/logger'], function (exports, _utils, _geo, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tstore: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\n\t\tisLoading: false,\n\t\tcountryOptions: null,\n\t\tstateOptions: null,\n\n\t\tbillingDetails: null,\n\t\taddress: null,\n\t\taddress2: null,\n\t\tcountry: null,\n\t\tstate: null,\n\t\tcity: null,\n\t\tpostalCode: null,\n\t\tphone: null,\n\n\t\tisAddressInvalid: false,\n\t\tisCountryInvalid: false,\n\t\tisCityInvalid: false,\n\t\tisStateInvalid: false,\n\t\tisPostalCodeInvalid: false,\n\t\tisPhoneInvalid: false,\n\n\t\taddressInvalid: (0, _utils.loc)('Required Field'),\n\t\tcountryInvalid: (0, _utils.loc)('Required Field'),\n\t\tcityInvalid: (0, _utils.loc)('Required Field'),\n\t\tstateInvalid: (0, _utils.loc)('Required Field'),\n\t\tpostalCodeInvalid: (0, _utils.loc)('Required Field'),\n\t\tphoneInvalid: (0, _utils.loc)('Required Field'),\n\n\t\t/**\n   * COMPUTEDS & OBSERVERS\n   *\n   */\n\n\t\tisCountryUS: Ember.computed.equal('country', 'US'),\n\t\tisPhoneRequired: Ember.computed.alias('subscription.subscriptionStatus.isAnnualPlan'),\n\n\t\thasDataChanged: Ember.computed('billingDetails', 'address', 'address2', 'country', 'state', 'city', 'postalCode', 'phone', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar billingDetails = this.get('billingDetails');\n\n\t\t\tif (Ember.isNone(billingDetails) || Ember.isEmpty(billingDetails)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn ['address', 'address2', 'country', 'state', 'city', 'postalCode', 'phone'].reduce(function (result, key) {\n\t\t\t\treturn result || _this.get(key) !== billingDetails.get(key);\n\t\t\t}, false);\n\t\t}),\n\n\t\t/**\n   * COMPONENT INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setupCountryOptions();\n\t\t\tthis.setupStateOptions();\n\n\t\t\t// copy properties of billingDetails out to this component for editing (address, city, state, etc...)\n\t\t\tthis.setProperties(this.get('billingDetails'));\n\t\t},\n\n\n\t\t/**\n   * FORM INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * Retrieve and format country data to populate country selection.\n   * US is pushed to the top of the list for convenience.\n   *\n   * @public\n   * @method setupCountryOptions\n   */\n\t\tsetupCountryOptions: function setupCountryOptions() {\n\t\t\tvar countries = (0, _geo.getCountries)();\n\t\t\tvar countryOptions = countries.map(function (country) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: country.code,\n\t\t\t\t\tlabel: country.name\n\t\t\t\t};\n\t\t\t});\n\n\t\t\t// pull out US and re-insert at top of collection\n\t\t\tvar optionUS = countryOptions.findBy('key', 'US');\n\t\t\tcountryOptions = countryOptions.rejectBy('key', 'US');\n\t\t\tcountryOptions.unshift(optionUS);\n\n\t\t\tthis.set('countryOptions', countryOptions);\n\t\t},\n\n\n\t\t/**\n   * retrieve and format state data to populate state selection\n   *\n   * @public\n   * @method setupCountryOptions\n   */\n\t\tsetupStateOptions: function setupStateOptions() {\n\t\t\tvar states = (0, _geo.getStates)();\n\t\t\tvar stateOptions = states.map(function (state) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: state.code,\n\t\t\t\t\tlabel: state.name\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.set('stateOptions', stateOptions);\n\t\t},\n\n\n\t\t/**\n   * FORM DATA PROCESSING\n   *\n   */\n\n\t\t/**\n   * Checks if any data has changed.\n   * Checks if the form data is valid.\n   * Sends the data to the API.\n   *\n   * @public\n   * @async\n   * @method onSaveForm\n   * @return {EmberPromise}\n   */\n\t\tonSaveForm: function onSaveForm() {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!this.get('hasDataChanged')) {\n\t\t\t\tthrow (0, _utils.loc)('There are no changes to save!');\n\t\t\t} else if (this.isFormInvalid()) {\n\t\t\t\tthrow (0, _utils.loc)('Missing required fields...');\n\t\t\t}\n\n\t\t\treturn this.updateBillingAddress().catch(function (err) {\n\t\t\t\t_logger.default.error(_this2, 'onSaveForm', err);\n\n\t\t\t\tthrow (0, _utils.loc)('Something went wrong. Please try again later.');\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Ensure required fields are present.\n   * Mark invalid input in the UI.\n   *\n   * @public\n   * @method isFormInvalid\n   * @return {boolean}\n   */\n\t\tisFormInvalid: function isFormInvalid() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar isInvalid = false;\n\n\t\t\tvar requiredFields = ['address', 'country', 'state', 'city', 'postalCode'];\n\n\t\t\tif (this.get('isPhoneRequired')) {\n\t\t\t\trequiredFields.push('phone');\n\t\t\t}\n\n\t\t\trequiredFields.forEach(function (key) {\n\t\t\t\tvar value = _this3.get(key);\n\t\t\t\t_this3.set(('is-' + key + '-invalid').camelize(), false);\n\n\t\t\t\tif (Ember.isEmpty(value)) {\n\t\t\t\t\tisInvalid = true;\n\t\t\t\t\t_this3.set(('is-' + key + '-invalid').camelize(), true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Copy form data to a new object and send it to the API.\n   *\n   * @public\n   * @async\n   * @method updateBillingAddress\n   * @return {EmberPromise}\n   */\n\t\tupdateBillingAddress: function updateBillingAddress() {\n\t\t\tvar newBillingAddress = Ember.Object.create({\n\t\t\t\taddress: this.get('address'),\n\t\t\t\taddress2: this.get('address2'),\n\t\t\t\tcity: this.get('city'),\n\t\t\t\tstate: this.get('state'),\n\t\t\t\tpostalCode: this.get('postalCode'),\n\t\t\t\tcountry: this.get('country'),\n\t\t\t\tphone: this.get('phone')\n\t\t\t});\n\n\t\t\treturn this.get('subscription').updateBillingAddress(newBillingAddress);\n\t\t},\n\n\n\t\t/**\n   * UTILITY\n   *\n   */\n\n\t\t/**\n   * retrieve value selected from DOM event\n   *\n   * @public\n   * @method getEventValue\n   */\n\t\tgetEventValue: function getEventValue(evt) {\n\t\t\treturn evt.target ? evt.target.value : evt.srcElement.value;\n\t\t},\n\n\n\t\t/**\n   * ACTION HANDLERS\n   *\n   */\n\n\t\t/**\n  \t * store selected country, clear state and postal code\n  \t *\n  \t * @public\n  \t * @method onSelectCountry\n  \t */\n\t\tonSelectCountry: function onSelectCountry(val) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tcountry: val,\n\t\t\t\t\tstate: null,\n\t\t\t\t\tpostalCode: null\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n  * store selected state\n  *\n  * @public\n  * @method onSelectState\n  */\n\t\tonSelectState: function onSelectState(val) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('state', val);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event saveForm\n    */\n\t\t\tsaveForm: function saveForm() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\treturn this.onSaveForm().then(function () {\n\t\t\t\t\treturn _this4.sendAction('onUpdate');\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSelectCountry\n    * @param evt {object} DOM event\n    */\n\t\t\tonSelectCountry: function onSelectCountry(evt) {\n\t\t\t\tthis.onSelectCountry(this.getEventValue(evt));\n\t\t\t\tevt.target.blur();\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSelectState\n    * @param evt {object} DOM event\n    */\n\t\t\tonSelectState: function onSelectState(evt) {\n\t\t\t\tthis.onSelectState(this.getEventValue(evt));\n\t\t\t\tevt.target.blur();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/edit-payment-method', ['exports', 'busy-app/utils/logger', '@busy-web/utils'], function (exports, _logger, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tstripe: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\t\tvalidation: Ember.inject.service(),\n\n\t\tisLoading: false,\n\n\t\tcardMonthOptions: null,\n\t\tcardYearOptions: null,\n\n\t\tbillingDetails: null,\n\n\t\tcardHolderName: null,\n\t\tcardNumber: null,\n\t\tcardMonth: null,\n\t\tcardYear: null,\n\t\tcardCVC: null,\n\n\t\t// from Stripe\n\t\tstripeToken: null,\n\t\tstripeCardId: null,\n\t\tstripeCardFingerprint: null,\n\n\t\t// these fields are not editible here, but need to be passed along with the cardholder data\n\t\taddress: null,\n\t\taddress2: null,\n\t\tcity: null,\n\t\tstate: null,\n\t\tzip: null,\n\t\tcountry: null,\n\t\t// phone: null,\n\n\t\tisCardHolderNameInvalid: false,\n\t\tisCardNumberInvalid: false,\n\t\tisCardMonthInvalid: false,\n\t\tisCardYearInvalid: false,\n\t\tisCardCVCInvalid: false,\n\n\t\tcardHolderNameInvalid: (0, _utils.loc)('This is a required field'),\n\t\tcardNumberInvalid: (0, _utils.loc)('This is a required field'),\n\t\tcardMonthInvalid: (0, _utils.loc)('This is a required field'),\n\t\tcardYearInvalid: (0, _utils.loc)('This is a required field'),\n\t\tcardCVCInvalid: (0, _utils.loc)('This is a required field'),\n\t\terrorMsgMissingBillingAddress: (0, _utils.loc)('You must first provide your billing address before you can update your payment method'),\n\n\t\thasDataChanged: Ember.computed('cardHolderName', 'cardNumber', 'cardMonth', 'cardYear', 'cardCVC', function () {\n\t\t\treturn this.getHasDataChanged();\n\t\t}),\n\n\t\tneedsBillingAddress: Ember.computed('address', 'city', 'country', 'postalCode', 'state', function () {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['address', 'city', 'country', 'postalCode', 'state']),\n\t\t\t    address = _EmberGetProperties.address,\n\t\t\t    city = _EmberGetProperties.city,\n\t\t\t    country = _EmberGetProperties.country,\n\t\t\t    postalCode = _EmberGetProperties.postalCode,\n\t\t\t    state = _EmberGetProperties.state;\n\n\t\t\tvar needsBillingAddress = Ember.isEmpty(address) || Ember.isEmpty(city) || Ember.isEmpty(country) || Ember.isEmpty(postalCode) || Ember.isEmpty(state);\n\n\t\t\treturn needsBillingAddress;\n\t\t}),\n\n\t\t/**\n   * COMPONENT INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\t_logger.default.info(this, 'init');\n\n\t\t\tthis._super();\n\n\t\t\tthis.initForm();\n\t\t\tthis.initData();\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @constructor\n   * @method initData\n   */\n\t\tinitData: function initData() {\n\t\t\t_logger.default.info(this, 'initData');\n\n\t\t\t// create a new billingDetails object to store on this component duplicating the provided object\n\t\t\tvar billingDetails = Object.assign({}, this.get('billingDetails'));\n\t\t\t_logger.default.info(this, 'initData', billingDetails);\n\n\t\t\t// ensure all fields are a string for the loc() helper\n\t\t\t// if a value is undefined or null, set it to an empty string instead\n\t\t\tfor (var key in billingDetails) {\n\t\t\t\tif (billingDetails.hasOwnProperty(key) && Ember.isNone(billingDetails[key])) {\n\t\t\t\t\tbillingDetails[key] = '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setProperties(billingDetails);\n\t\t},\n\n\n\t\t/**\n   * FORM INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * setup form validation and selection options\n   *\n   * @public\n   * @method initForm\n   */\n\t\tinitForm: function initForm() {\n\t\t\t_logger.default.info(this, 'initForm');\n\n\t\t\tthis.initFormValidation();\n\t\t\tthis.setCardMonths();\n\t\t\tthis.setCardYears();\n\t\t},\n\n\n\t\t/**\n   * setup form validation\n   *\n   * @public\n   * @method initFormValidation\n   */\n\t\tinitFormValidation: function initFormValidation() {\n\t\t\t_logger.default.info(this, 'initFormValidation');\n\n\t\t\tthis.set('isCardHolderNameInvalid', false);\n\t\t\tthis.set('isCardNumberInvalid', false);\n\t\t\tthis.set('isCardMonthInvalid', false);\n\t\t\tthis.set('isCardYearInvalid', false);\n\t\t\tthis.set('isCardCVCInvalid', false);\n\t\t},\n\n\n\t\t/**\n   * setup selection options for credit card expi months\n   *\n   * @public\n   * @method setCardMonths\n   */\n\t\tsetCardMonths: function setCardMonths() {\n\t\t\tvar startOfYear = _utils.Time.date().startOf('year');\n\t\t\tvar months = [];\n\n\t\t\tfor (var i = 0; i < 12; i++) {\n\t\t\t\tmonths.push({\n\t\t\t\t\tvalue: i + 1,\n\t\t\t\t\tlabel: startOfYear.clone().add(i, 'month').format('MM - MMM')\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.set('monthOptions', months);\n\t\t},\n\n\n\t\t/**\n   * setup selection options for credit card expiration years\n   *\n   * @public\n   * @method setCardYears\n   */\n\t\tsetCardYears: function setCardYears() {\n\t\t\tvar startYear = _utils.Time.date().year();\n\t\t\tvar numYears = 32;\n\t\t\tvar years = [];\n\n\t\t\tfor (var i = 0; i < numYears; i++) {\n\t\t\t\tyears.push(startYear + i);\n\t\t\t}\n\n\t\t\tthis.set('yearOptions', years);\n\t\t},\n\n\n\t\t/**\n   * FORM PROCESSING\n   *\n   */\n\n\t\t/**\n   * Handle form submission:\n   *  - Reset validation errors\n   *  - Check if any data has changed\n   *  - Cleanup form data\n   *  - Validate data\n   *  - Send data to API\n   *\n   * @public\n   * @async\n   * @method onSaveForm\n   * @return {EmberPromise}\n   */\n\t\tonSaveForm: function onSaveForm() {\n\t\t\t_logger.default.info(this, 'onSaveForm');\n\n\t\t\tthis.initFormValidation();\n\n\t\t\tif (!this.get('hasDataChanged')) {\n\t\t\t\tthrow (0, _utils.loc)('There are no changes to save!');\n\t\t\t} else {\n\t\t\t\tthis.cleanupPaymentInformation();\n\n\t\t\t\tif (Ember.get(this, 'needsBillingAddress')) {\n\t\t\t\t\tthrow Ember.get(this, 'errorMsgMissingBillingAddress');\n\t\t\t\t} else if (this.isMissingRequireds()) {\n\t\t\t\t\tthrow (0, _utils.loc)('Missing required fields...');\n\t\t\t\t} else if (this.isInvalidData()) {\n\t\t\t\t\tthrow (0, _utils.loc)('Provided information is not valid...');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.savePaymentMethod();\n\t\t},\n\n\n\t\t/**\n   * Send form data to API\n   *\n   * @public\n   * @async\n   * @method savePaymentMethod\n   * @return {EmberPromise}\n   */\n\t\tsavePaymentMethod: function savePaymentMethod() {\n\t\t\t_logger.default.info(this, 'savePaymentMethod');\n\n\t\t\tvar cardMonth = parseInt(this.get('cardMonth'), 10);\n\t\t\tvar cardYear = parseInt(this.get('cardYear'), 10);\n\n\t\t\tvar newPaymentInformation = Ember.Object.create({\n\t\t\t\tcardNumber: this.get('cardNumber'),\n\t\t\t\tcardCVC: this.get('cardCVC'),\n\t\t\t\tcardMonth: cardMonth,\n\t\t\t\tcardYear: cardYear,\n\n\t\t\t\tcardHolderName: this.get('cardHolderName'),\n\t\t\t\taddress: this.get('address'),\n\t\t\t\taddress2: this.get('address2'),\n\t\t\t\tpostalCode: this.get('postalCode'),\n\t\t\t\tcity: this.get('city'),\n\t\t\t\tstate: this.get('state'),\n\t\t\t\tcountry: this.get('country')\n\t\t\t});\n\n\t\t\treturn this.get('subscription').savePaymentMethod(newPaymentInformation);\n\t\t},\n\n\n\t\t/**\n   * FORM VALIDATION\n   *\n   */\n\n\t\t/**\n   * Check if any data has been modified\n   *\n   * @public\n   * @method getHasDataChanged\n   * @return {boolean}\n   */\n\t\tgetHasDataChanged: function getHasDataChanged() {\n\t\t\tvar _this = this;\n\n\t\t\tvar billingDetails = this.get('billingDetails');\n\n\t\t\tif (Ember.isNone(billingDetails) || Ember.isEmpty(billingDetails)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// cardNumber has to compare against maskedCardNumber\n\t\t\tvar hasCardNumberChanged = this.get('cardNumber') !== billingDetails.get('maskedCardNumber');\n\n\t\t\tvar hasDataChanged = ['cardHolderName', 'cardMonth', 'cardYear', 'cardCVC'].reduce(function (result, key) {\n\t\t\t\treturn result || _this.get(key) !== billingDetails.get(key);\n\t\t\t}, hasCardNumberChanged);\n\n\t\t\treturn hasDataChanged;\n\t\t},\n\n\n\t\t/**\n   * Ensure form data is formatted as expected\n   *  - Strip non-numeric from Cardnumber and CVC\n   *  - Trim white space on all fields\n   *\n   * @public\n   * @method cleanupPaymentInformation\n   */\n\t\tcleanupPaymentInformation: function cleanupPaymentInformation() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar cardNumber = this.get('cardNumber') || '';\n\t\t\tvar cleanCardNumber = cardNumber.replace(/[^\\d]/gi, '');\n\t\t\tthis.set('cardNumber', cleanCardNumber);\n\n\t\t\tvar cardCVC = this.get('cardCVC') || '';\n\t\t\tvar cleanCardCVC = cardCVC.replace(/[^\\d]/gi, '');\n\t\t\tthis.set('cardCVC', cleanCardCVC);\n\n\t\t\t['cardHolderName', 'cardNumber', 'cardCVC'].forEach(function (fieldName) {\n\t\t\t\t_this2.set(fieldName, (_this2.get(fieldName) || '').trim());\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Ensure required form data has been provided.\n   * Indicate any missing data to the usser.\n   *\n   * @public\n   * @method isMissingRequireds\n   * @return {boolean}\n   */\n\t\tisMissingRequireds: function isMissingRequireds() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar isInvalid = false;\n\n\t\t\tvar requiredFields = ['cardHolderName', 'cardNumber', 'cardMonth', 'cardYear', 'cardCVC'];\n\n\t\t\trequiredFields.forEach(function (key) {\n\t\t\t\tvar value = _this3.get(key);\n\t\t\t\t_this3.set(('is-' + key + '-invalid').camelize(), false);\n\n\t\t\t\tif (Ember.isEmpty(value)) {\n\t\t\t\t\tisInvalid = true;\n\t\t\t\t\t_this3.set(('is-' + key + '-invalid').camelize(), true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Validate payment information\n   *  - Valid card number\n   *  - Valid card date, not expired\n   *  - Valid CVC\n   *\n   * @public\n   * @method isInvalidData\n   * @return {boolean}\n   */\n\t\tisInvalidData: function isInvalidData() {\n\t\t\tvar invalidNumber = this.isInvalidCardNumber(this.get('cardNumber'));\n\t\t\tvar invalidDate = this.isInvalidCardDate(this.get('cardMonth'), this.get('cardYear'));\n\t\t\tvar invalidCVC = this.isInvalidCardCVC(this.get('cardCVC'));\n\n\t\t\treturn invalidNumber || invalidDate || invalidCVC;\n\t\t},\n\n\n\t\t/**\n   * Validate Card Number.\n   * Indicate to user if value is invalid.\n   *\n   * @public\n   * @method isInvalidCardNumber\n   * @return {boolean}\n   */\n\t\tisInvalidCardNumber: function isInvalidCardNumber(cardNumber) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardNumber)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set('cardNumberInvalid', (0, _utils.loc)('Required Field'));\n\t\t\t} else if (this.get('validation').isInvalidCardNumber(cardNumber)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set('cardNumberInvalid', (0, _utils.loc)('Invalid Input'));\n\t\t\t}\n\n\t\t\tthis.set('isCardNumberInvalid', isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Validate Card Expiration Date.\n   * Indicate to user if value is invalid.\n   *\n   * @public\n   * @method isInvalidCardDate\n   * @return {boolean}\n   */\n\t\tisInvalidCardDate: function isInvalidCardDate(cardMonth, cardYear) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardMonth) || Ember.isEmpty(cardYear)) {\n\t\t\t\tisInvalid = true;\n\n\t\t\t\tif (Ember.isEmpty(cardMonth)) {\n\t\t\t\t\tthis.set('isCardMonthInvalid', true);\n\t\t\t\t\tthis.set('cardMonthInvalid', (0, _utils.loc)('Required Field'));\n\t\t\t\t}\n\n\t\t\t\tif (Ember.isEmpty(cardYear)) {\n\t\t\t\t\tthis.set('isCardYearInvalid', true);\n\t\t\t\t\tthis.set('cardYearInvalid', (0, _utils.loc)('Required Field'));\n\t\t\t\t}\n\t\t\t} else if (this.get('validation').isInvalidCardDate(cardMonth, cardYear)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set('isCardMonthInvalid', true);\n\t\t\t\tthis.set('cardMonthInvalid', (0, _utils.loc)('Expired Card'));\n\t\t\t} else {\n\t\t\t\tthis.set('isCardMonthInvalid', false);\n\t\t\t\tthis.set('isCardYearInvalid', false);\n\t\t\t}\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Validate Card CVC.\n   * Indicate to user if value is invalid.\n   *\n   * @public\n   * @method isInvalidCardCVC\n   * @return {boolean}\n   */\n\t\tisInvalidCardCVC: function isInvalidCardCVC(cardCVC) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardCVC)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set('cardCVCInvalid', (0, _utils.loc)('Required Field'));\n\t\t\t} else if (this.get('validation').isInvalidCardCVC(cardCVC)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set('cardCVCInvalid', (0, _utils.loc)('Invalid Input'));\n\t\t\t}\n\n\t\t\tthis.set('isCardCVCInvalid', isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * UTILITY\n   *\n   */\n\n\t\t/**\n   * retrieve value selected from DOM event\n   *\n   * @public\n   * @method getEventValue\n   */\n\t\tgetEventValue: function getEventValue(evt) {\n\t\t\treturn evt.target ? evt.target.value : evt.srcElement.value;\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event selectExp\n    * @param key {string} key of the property to be set\n    * @param evt {object} DOM event\n    */\n\t\t\tselectExp: function selectExp(key, evt) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set(key, val);\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\treturn this.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event saveForm\n    */\n\t\t\tsaveForm: function saveForm() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t_logger.default.info(this, 'saveForm');\n\n\t\t\t\treturn this.onSaveForm().then(function () {\n\t\t\t\t\treturn _this4.sendAction('onUpdate');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/edit-plan', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\n\t\tbillingCycle: null,\n\t\tactiveUserEstimate: null,\n\n\t\tinitialBillingCycle: null,\n\t\tinitialActiveUserEstimate: null,\n\n\t\tagreeToTerms: false,\n\t\terrorMessage: null,\n\n\t\tinvoiceDueDateFormatted: null,\n\t\tinvoiceDueDate: null,\n\t\tinvoiceId: null,\n\n\t\tisSubmitting: false,\n\t\tshowConfirmation: false,\n\n\t\t/**\n   * COMPUTEDS & OBSERVERS\n   *\n   */\n\n\t\tmonthlyCostPerUserMonth: Ember.computed.alias('subscription.costPerActiveUserMonthly'),\n\t\tmonthlyCostPerUserYear: Ember.computed.alias('subscription.costPerActiveUserMonthlyPerYear'),\n\n\t\tannualCostPerUserMonth: Ember.computed.alias('subscription.costPerActiveUserAnnual'),\n\t\tannualCostPerUserYear: Ember.computed.alias('subscription.costPerActiveUserAnnualPerYear'),\n\n\t\tplanOptions: Ember.computed('billingCycle', 'monthlyCostPerUserMonth', 'monthlyCostPerUserYear', 'annualCostPerUserMonth', 'annualCostPerUserYear', function () {\n\t\t\treturn [{\n\t\t\t\tkey: 'annual',\n\t\t\t\tlabel: (0, _utils.loc)('Annual Billing'),\n\t\t\t\tpricePerUserPerMonth: this.get('annualCostPerUserMonth'),\n\t\t\t\tpricePerUserPerYear: this.get('annualCostPerUserYear'),\n\t\t\t\tisSelected: this.get('isAnnual')\n\t\t\t}, {\n\t\t\t\tkey: 'monthly',\n\t\t\t\tlabel: (0, _utils.loc)('Monthly Billing'),\n\t\t\t\tpricePerUserPerMonth: this.get('monthlyCostPerUserMonth'),\n\t\t\t\tpricePerUserPerYear: this.get('monthlyCostPerUserYear'),\n\t\t\t\tisSelected: this.get('isMonthly')\n\t\t\t}];\n\t\t}),\n\n\t\tisAnnual: Ember.computed.equal('billingCycle', 'annual'),\n\t\tisMonthly: Ember.computed.equal('billingCycle', 'monthly'),\n\t\tisInvoiceRequired: Ember.computed('isAnnual', 'activeUserEstimate', 'annualCostPerUserYear', function () {\n\t\t\tvar annualCost = this.get('activeUserEstimate') * this.get('annualCostPerUserYear');\n\t\t\treturn this.get('isAnnual') && annualCost >= this.get('subscription.annualInvoiceThreshold');\n\t\t}),\n\n\t\tonChangeActiveUserEstimate: Ember.observer('activeUserEstimate', function () {\n\t\t\tvar _this = this;\n\n\t\t\t// reset `agreeToTerms` to false any time `activeUserEstimate` is changed\n\t\t\tthis.set('agreeToTerms', false);\n\n\t\t\t// catch and fix bad `activeUserEstimate` input\n\t\t\t// invalid inputs are reset in a run.next() so that the UI updates to the new value\n\t\t\tvar numUsers = parseInt(this.get('activeUserEstimate'), 10);\n\t\t\tif (numUsers <= 0 || !Number.isInteger(numUsers)) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\treturn _this.safeSet('activeUserEstimate', 1);\n\t\t\t\t});\n\t\t\t} else if (Number.isInteger(numUsers) && numUsers !== this.get('activeUserEstimate')) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\treturn _this.safeSet('activeUserEstimate', numUsers);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\thasChangedBillingCycle: Ember.computed('billingCycle', 'initialBillingCycle', function () {\n\t\t\treturn this.get('billingCycle') !== this.get('initialBillingCycle');\n\t\t}),\n\n\t\thasChangedActiveUsers: Ember.computed('activeUserEstimate', 'initialActiveUserEstimate', function () {\n\t\t\treturn this.get('activeUserEstimate') !== this.get('initialActiveUserEstimate');\n\t\t}),\n\n\t\thasDataChanged: Ember.computed.or('hasChangedBillingCycle', 'hasChangedActiveUsers'),\n\n\t\t// effective date shows when changing from annual to monthly, or when the number of active users on an annual subscription is changed\n\t\tshowEffectiveDateDisclaimer: Ember.computed('hasChangedActiveUsers', 'hasChangedBillingCycle', 'billingCycle', function () {\n\t\t\tif (!this.get('hasDataChanged')) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\t// annual plan, number of users changed, type of plan NOT changed\n\t\t\t\tvar changedAnnualActiveUsers = this.get('billingCycle') === 'annual' && this.get('hasChangedActiveUsers') && !this.get('hasChangedBillingCycle');\n\n\t\t\t\t// monthly plan, changed from annual plan, number of users not relevant\n\t\t\t\tvar changedFromAnnualToMonthly = this.get('billingCycle') === 'monthly' && this.get('hasChangedBillingCycle');\n\n\t\t\t\treturn changedAnnualActiveUsers || changedFromAnnualToMonthly;\n\t\t\t}\n\t\t}),\n\n\t\teffectiveDateFormatted: Ember.computed('property', function () {\n\t\t\treturn _utils.Time.date(this.get('subscription.subscriptionStatus.annualSubscriptionDate')).format('ll');\n\t\t}),\n\n\t\tsubscriptionType: Ember.computed('isAnnual', 'isMonthly', 'isInvoiceRequired', 'hasChangedBillingCycle', function () {\n\t\t\t// An invoice is *not* produced when an annual organization is resized.\n\t\t\t// If an organization has been resized above the invoicing threshold, it will be invoiced when the account renews.\n\n\t\t\tif (this.get('isInvoiceRequired') && this.get('hasChangedBillingCycle')) {\n\t\t\t\treturn 'annualInvoice';\n\t\t\t} else if (this.get('isAnnual')) {\n\t\t\t\treturn 'annualCredit';\n\t\t\t} else if (this.get('isMonthly')) {\n\t\t\t\treturn 'monthlyCredit';\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * COMPONENT INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\treturn this.initData();\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method initData\n   */\n\t\tinitData: function initData() {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.set('agreeToTerms', false);\n\t\t\tthis.set('showConfirmation', false);\n\t\t\tthis.set('billingCycle', null);\n\t\t\tthis.set('activeUserEstimate', 1);\n\n\t\t\tvar date = _utils.Time.date().startOf('day').add(1, 'month');\n\t\t\tthis.set('invoiceDueDate', date);\n\t\t\tthis.set('invoiceDueDateFormatted', date.format('LL'));\n\n\t\t\treturn this.loadData().then(function (props) {\n\t\t\t\tvar billingCycle = _this2.get('subscription.subscriptionStatus.isAnnualPlan') ? 'annual' : 'monthly';\n\t\t\t\tvar activeUserEstimate = billingCycle === 'annual' ? _this2.get('subscription.subscriptionStatus.annualSubscriptionCount') : props.memberCount;\n\n\t\t\t\t_this2.safeSet('billingCycle', billingCycle);\n\t\t\t\t_this2.safeSet('activeUserEstimate', activeUserEstimate);\n\n\t\t\t\t// check these to see if values have changed\n\t\t\t\t_this2.safeSet('initialBillingCycle', billingCycle);\n\t\t\t\t_this2.safeSet('initialActiveUserEstimate', activeUserEstimate);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method initData\n   */\n\t\tloadData: function loadData() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tsubscriptionPricing: this.get('subscription.subscriptionPricing'), // ensure `subscriptionPricing` is loaded\n\t\t\t\tsubscriptionStatus: this.get('subscription.subscriptionStatus'), // ensure `subscriptionStatus` is loaded\n\t\t\t\tmemberCount: this.get('auth.memberCount') // ensure `memberCount` is loaded\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this3.safeSet('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * FORM PROCESSING\n   *\n   */\n\n\t\t/**\n   * Handle form submission:\n   *  - Check if any data has changed\n   *  - Validate data\n   *  - Send data to API\n   *\n   * @public\n   * @async\n   * @method onSaveForm\n   * @return {EmberPromise}\n   */\n\t\tonSaveForm: function onSaveForm() {\n\t\t\tvar _this4 = this;\n\n\t\t\t_logger.default.info(this, 'onSaveForm');\n\n\t\t\tif (this.get('isInvoiceRequired') && !this.get('agreeToTerms')) {\n\t\t\t\tthis.safeSet('isAgreeToTermsInvalid', true);\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Must agree to terms...'));\n\t\t\t} else if (!this.get('hasDataChanged')) {\n\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('There are no changes to save!'));\n\t\t\t} else {\n\t\t\t\tthis.safeSet('isAgreeToTermsInvalid', false);\n\n\t\t\t\treturn this.updateSubscriptionPlan().then(function (res) {\n\t\t\t\t\treturn _this4.get('subscription.subscriptionStatus.content').reload().then(function () {\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Determine what about the plan has been changed and call the appropriate handler\n   *  - monthly to annual\n   *  - annual to monthly\n   *  - change size of annual plan\n   *\n   * @public\n   * @method updateSubscriptionPlan\n   * @return {EmberPromise}\n   */\n\t\tupdateSubscriptionPlan: function updateSubscriptionPlan() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar currentCycle = this.get('subscription.subscriptionStatus.isAnnualPlan') ? 'annual' : 'monthly';\n\n\t\t\t_logger.default.info(this, 'updateSubscriptionPlan');\n\n\t\t\tvar promisedUpdate = function promisedUpdate() {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t};\n\t\t\tif (this.get('hasChangedBillingCycle') && this.get('billingCycle') !== currentCycle) {\n\t\t\t\tif (this.get('billingCycle') === 'annual') {\n\t\t\t\t\tpromisedUpdate = function promisedUpdate() {\n\t\t\t\t\t\treturn _this5.convertMonthlyToAnnual();\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tpromisedUpdate = function promisedUpdate() {\n\t\t\t\t\t\treturn _this5.convertAnnualToMonthly();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else if (this.get('hasChangedActiveUsers') && this.get('billingCycle') === 'annual') {\n\t\t\t\tpromisedUpdate = function promisedUpdate() {\n\t\t\t\t\treturn _this5.changeAnnualSize();\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn promisedUpdate();\n\t\t},\n\n\n\t\t/**\n   * API Calls\n   *\n   */\n\n\t\t/**\n   * Convert the current plan from monthly to annual\n   *\n   * @public\n   * @async\n   * @method convertAnnualToMonthly\n   * @return {EmberPromise}\n   */\n\t\tconvertAnnualToMonthly: function convertAnnualToMonthly() {\n\t\t\t_logger.default.info(this, 'convertAnnualToMonthly');\n\n\t\t\treturn this.get('subscription').cancelAnnualSubscription();\n\t\t},\n\n\n\t\t/**\n   * Convert the current plan from annual to monthly.\n   * If the cost exceeds subscription.annualInvoiceThreshold, send an invoice, otherwise, charge the amount to the card on file.\n   *\n   * @public\n   * @async\n   * @method convertMonthlyToAnnual\n   * @return {EmberPromise}\n   */\n\t\tconvertMonthlyToAnnual: function convertMonthlyToAnnual() {\n\t\t\t_logger.default.info(this, 'convertMonthlyToAnnual');\n\n\t\t\tif (this.get('isInvoiceRequired')) {\n\t\t\t\treturn this.startSubscriptionAnnualInvoice();\n\t\t\t} else {\n\t\t\t\treturn this.startSubscriptionAnnual();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Attempt to charge the card for the requested number of users.\n   *\n   * @public\n   * @method startSubscriptionAnnual\n   * @async\n   * @return {EmberPromise}\n   */\n\t\tstartSubscriptionAnnual: function startSubscriptionAnnual() {\n\t\t\tvar activeUserEstimate = parseInt(this.get('activeUserEstimate'), 10);\n\t\t\t_logger.default.info(this, 'startSubscriptionAnnual', { activeUserEstimate: activeUserEstimate });\n\n\t\t\treturn this.get('subscription').chargeAnnualSubscription(activeUserEstimate);\n\t\t},\n\n\n\t\t/**\n   * Create an invoice for the balance due for the requested number of users.\n   * The created `invoiceId` is saved, so it can be passed to the `order-confirmation` component.\n   *\n   * @public\n   * @method startSubscriptionAnnualInvoice\n   * @async\n   * @return {EmberPromise}\n   */\n\t\tstartSubscriptionAnnualInvoice: function startSubscriptionAnnualInvoice() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar activeUserEstimate = parseInt(this.get('activeUserEstimate'), 10);\n\t\t\t_logger.default.info(this, 'startSubscriptionAnnualInvoice', { activeUserEstimate: activeUserEstimate });\n\n\t\t\treturn this.get('subscription').invoiceAnnualSubscription(activeUserEstimate).then(function (invoiceId) {\n\t\t\t\t_this6.safeSet('invoiceId', invoiceId);\n\t\t\t\treturn invoiceId;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Leave the plan on annual, changing the size of the account.\n   * This change is NOT immediately effective, the card is not charged or refunded.\n   * The change is effective as of the next annually scheduled recurring billing.\n   *\n   * @public\n   * @async\n   * @method changeAnnualSize\n   * @return {EmberPromise}\n   */\n\t\tchangeAnnualSize: function changeAnnualSize() {\n\t\t\tvar activeUserEstimate = parseInt(this.get('activeUserEstimate'), 10);\n\t\t\t_logger.default.info(this, 'changeAnnualSize', { activeUserEstimate: activeUserEstimate });\n\n\t\t\treturn this.get('subscription').changeAnnualSubscriptionCount(activeUserEstimate);\n\t\t},\n\n\n\t\t/**\n   * Downgrade the account from pro to free.\n   * Works from both monthly and annual plans.\n   *\n   * @public\n   * @async\n   * @method downgradeToFree\n   * @return {EmberPromise}\n   */\n\t\tdowngradeToFree: function downgradeToFree() {\n\t\t\tvar _this7 = this;\n\n\t\t\t_logger.default.info(this, 'downgradeToFree');\n\n\t\t\tthis.set('isSubmitting', true);\n\t\t\treturn this.get('subscription').setSubscriptionStatusFree().catch(function (err) {\n\t\t\t\treturn _this7.handleApiError('downgradeToFree', err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this7.safeSet('isSubmitting', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * If the API returns an error code, try to turn it into a message useful to the end user.\n   *\n   * @public\n   * @method handleApiError\n   * @param err {object}\n   * @return {EmberPromise}\n   */\n\t\thandleApiError: function handleApiError(type, err) {\n\t\t\t_logger.default.error(this, type, typeof err === 'undefined' ? 'undefined' : _typeof(err), err);\n\n\t\t\tif ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object') {\n\t\t\t\terr = (0, _utils.loc)('Something went wrong, please try again later.');\n\t\t\t}\n\n\t\t\tthis.safeSet('errorMessage', err);\n\n\t\t\t// NOTE Ember RSVP reject will throw an error for\n\t\t\t// unhandled catch errors if the goal is to throw\n\t\t\t// the error then return is here and let it propagate\n\t\t\t// to all the handlers first then ember will throw it.\n\t\t\treturn Ember.RSVP.reject(err);\n\t\t},\n\t\tsafeSet: function safeSet(key, value) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set(key, value);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onUpdate\n    */\n\t\t\tonUpdate: function onUpdate() {\n\t\t\t\tthis.sendAction('onUpdate');\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event downgradeToFree\n    */\n\t\t\tdowngradeToFree: function downgradeToFree() {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\treturn this.downgradeToFree().then(function () {\n\t\t\t\t\t_this8.sendAction('onUpdate');\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * don't close the dialog after save, the confirmation page is shown instead\n    *\n    * @public\n    * @event saveForm\n    */\n\t\t\tsaveForm: function saveForm() {\n\t\t\t\tvar _this9 = this;\n\n\t\t\t\tthis.set('isSubmitting', true);\n\n\t\t\t\treturn this.onSaveForm().then(function () {\n\t\t\t\t\treturn _this9.safeSet('showConfirmation', true) && true;\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\treturn _this9.handleApiError('onSaveForm', err);\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this9.safeSet('isSubmitting', false);\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event selectBillingCycle\n    * @param billingCycle {string} 'annual' or 'monthly'\n    */\n\t\t\tselectBillingCycle: function selectBillingCycle(billingCycle) {\n\t\t\t\tthis.set('billingCycle', billingCycle);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onAgreeToTerms\n    * @param isChecked {boolean}\n    */\n\t\t\tonAgreeToTerms: function onAgreeToTerms(isChecked) {\n\t\t\t\tthis.safeSet('agreeToTerms', isChecked);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/landing-page', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\trefreshSubscriptionTabState: null,\n\n\t\tisLoading: false,\n\t\tshowUpgradeDialog: false,\n\t\tshowVerifiedEmailDialog: false,\n\n\t\t/**\n   * COMPUTEDS & OBSERVERS\n   *\n   */\n\n\t\tneedsEmailVerification: Ember.computed.not('auth.member.verifiedEmail'),\n\n\t\tcostPerActiveUserAnnualDollar: Ember.computed('subscription.costPerActiveUserAnnual', function () {\n\t\t\treturn !Ember.isNone(this.get('subscription.costPerActiveUserAnnual')) ? this.getDollars(this.get('subscription.costPerActiveUserAnnual')) : null;\n\t\t}),\n\n\t\tcostPerActiveUserAnnualCents: Ember.computed('subscription.costPerActiveUserAnnual', function () {\n\t\t\treturn !Ember.isNone(this.get('subscription.costPerActiveUserAnnual')) ? this.getCents(this.get('subscription.costPerActiveUserAnnual')) : null;\n\t\t}),\n\n\t\t/**\n   * COMPONENT INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.loadData();\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method initData\n   */\n\t\tloadData: function loadData() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn Ember.RSVP.resolve(this.get('subscription.subscriptionPricing')).catch(function (err) {\n\t\t\t\treturn _logger.default.error(_this, err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * UTILITY\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method getDollars\n   * @return {number}\n   */\n\t\tgetDollars: function getDollars(amount) {\n\t\t\treturn Math.floor(amount);\n\t\t},\n\n\n\t\t/**\n  * @public\n  * @method getCents\n  * @return {number}\n  */\n\t\tgetCents: function getCents(amount) {\n\t\t\treturn Math.floor((amount - this.getDollars(amount)) * 100);\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event openVerifiedEmailDialog\n    */\n\t\t\topenVerifiedEmailDialog: function openVerifiedEmailDialog() {\n\t\t\t\tthis.set('showVerifiedEmailDialog', true);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event closeVerifiedEmailDialog\n    */\n\t\t\tcloseVerifiedEmailDialog: function closeVerifiedEmailDialog() {\n\t\t\t\tthis.set('showVerifiedEmailDialog', false);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event openUpgradeDialog\n    */\n\t\t\topenUpgradeDialog: function openUpgradeDialog() {\n\t\t\t\tif (this.get('needsEmailVerification')) {\n\t\t\t\t\tthis.send('openVerifiedEmailDialog');\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('showUpgradeDialog', true);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event closeUpgradeDialog\n    */\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.sendAction('refreshSubscriptionTabState');\n\n\t\t\t\t\tthis.set('showUpgradeDialog', false);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event openAccountSettings\n    */\n\t\t\topenAccountSettings: function openAccountSettings() {\n\t\t\t\tEmber.getOwner(this).lookup('route:application').transitionTo('account-settings');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/order-confirmation', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kSupportedSubscriptionTypes = ['annualInvoice', 'annualCredit', 'monthlyCredit'];\n\n\t/**\n  * `Components/Subscriptions/OrderConfirmation`\n  *\n  * @class OrderConfirmation\n  * @namespace Components.Subscriptions\n  * @extends Component\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\n\t\tsubscriptionType: null,\n\t\tinvoiceId: null,\n\t\tinvoiceDueDate: null,\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tvar subscriptionType = this.get('subscriptionType');\n\n\t\t\t// ensure the specified `subscriptionType` is valid\n\t\t\t_utils.Assert.test('\\'' + subscriptionType + '\\' is not a supported subscriptionType', kSupportedSubscriptionTypes.includes(subscriptionType));\n\n\t\t\t// ensure invoiced sales include the additional required attributes\n\t\t\tif (subscriptionType === 'annualInvoice') {\n\t\t\t\t_utils.Assert.isInteger(this.get('invoiceDueDate'));\n\t\t\t\t_utils.Assert.isInteger(this.get('invoiceId'));\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.sendAction('onClose');\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event openInvoice\n    * @param invoiceId {number}\n    */\n\t\t\topenInvoice: function openInvoice(invoiceId) {\n\t\t\t\treturn this.get('subscription').openPdfInvoice(invoiceId);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/subscription-index', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-subscription'],\n\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\t// these can't be a computed or the upgrade-dialog will close unexpectedly during the signup process\n\t\tshowLandingPage: false, // LandingPage is only shown if the organization is a free account\n\t\tshowSubscriptionUI: false, // Subscripton Details are shown if the organization is NOT a free account\n\n\t\tselectedTab: null,\n\n\t\ttabOptions: Ember.computed(function () {\n\t\t\treturn [{ key: 'currentPlan', label: (0, _utils.loc)('Current Plan') },\n\t\t\t// { key: 'allPlans', label: loc('All Plans') },\n\t\t\t{ key: 'invoiceHistory', label: (0, _utils.loc)('History') }];\n\t\t}),\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.set('selectedTab', 'currentPlan');\n\n\t\t\treturn this.setSubscriptionState();\n\t\t},\n\n\n\t\t/**\n   * Refresh the accounts current subscription state to ensure it's up to date with any changes.\n   *\n   * This related `refreshSubscriptionState` action should be passed to child components and called as the final step whenever subscription state is changed.\n   *\n   * @public\n   * @method setSubscriptionState\n   */\n\t\tsetSubscriptionState: function setSubscriptionState() {\n\t\t\tvar _this = this;\n\n\t\t\t_logger.default.info(this, 'setSubscriptionState');\n\n\t\t\treturn this.get('subscription').refreshStatus(function () {\n\t\t\t\treturn true;\n\t\t\t}).then(function () {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\tvar showLandingPage = _this.get('subscription.subscriptionStatus.isFreeAccount') || _this.get('subscription.subscriptionStatus.isFreeTrial') && !_this.get('subscription.subscriptionStatus.isFreeTrialUpgraded');\n\n\t\t\t\t\t_this.set('showLandingPage', showLandingPage);\n\t\t\t\t\t_this.set('showSubscriptionUI', !showLandingPage);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event refreshSubscriptionState\n    * @param tabKey {string} tabOptions key of the tab to be selected\n    */\n\t\t\tselectTab: function selectTab(tabKey) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('selectedTab', tabKey);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event refreshSubscriptionState\n    */\n\t\t\trefreshSubscriptionState: function refreshSubscriptionState() {\n\t\t\t\t_logger.default.info(this, 'refreshSubscriptionState', {});\n\t\t\t\treturn this.setSubscriptionState();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/subscription-invoice-history', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kDefaultShowCount = 6; // including current month, if more than 12 ensure getChartLabel() includes the year\n\n\t/**\n  * `Components/Subscriptions/SubscriptionInvoiceHistory`\n  *\n  * @class InvoiceHistory\n  * @namespace Components.Company\n  * @extends Component\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-invoice-history'],\n\n\t\t// services\n\t\tauth: Ember.inject.service('auth'),\n\t\tstore: Ember.inject.service('store'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\t// public properties\n\t\tstatements: null,\n\n\t\treportCount: kDefaultShowCount,\n\t\tpageNumber: 1,\n\n\t\tisLoadingStatements: false,\n\t\tisLoadingPdf: false,\n\n\t\tactiveUsers: Ember.computed('statements.[]', function () {\n\t\t\tvar list = this.get('statements') || [];\n\t\t\treturn this.generateActiveUserList(list);\n\t\t}),\n\n\t\thasUsage: Ember.computed('activeUsers', function () {\n\t\t\treturn this.get('activeUsers').any(function (row) {\n\t\t\t\treturn row.getWithDefault('usage', 0) > 0;\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * @public\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setInvoices();\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method setInvoices\n   */\n\t\tsetInvoices: function setInvoices() {\n\t\t\tvar _this = this;\n\n\t\t\tif (Ember.isNone(this.get('statements'))) {\n\t\t\t\tthis.set('isLoadingStatements', true);\n\n\t\t\t\treturn this.getInvoices().then(function (results) {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.set('statements', results);\n\t\t\t\t\t}\n\t\t\t\t}).finally(function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.set('isLoadingStatements', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method getInvoices\n  \t * @param {Number} count number of statements to get\n   * @return {Array}\n   */\n\t\tgetInvoices: function getInvoices() {\n\t\t\treturn this.get('store').query('chargify-customer-statement', {\n\t\t\t\treport_count: this.get('reportCount'),\n\t\t\t\tpage_number: this.get('pageNumber')\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * generates a unique data set to render a bar chart of activeUsers per month\n   *\n   * @public\n   * @method generateActiveUserList\n   * @param list {object[]}\n   * @return {object[]}\n   */\n\t\tgenerateActiveUserList: function generateActiveUserList(list) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isArray(list);\n\n\t\t\tvar today = _utils.Time.date();\n\t\t\tvar statements = [];\n\t\t\tlist.forEach(function (item) {\n\t\t\t\tvar date = _utils.Time.date(item.get('periodEndDate'));\n\t\t\t\tvar format = today.year() === date.year() ? 'MMM.' : 'MMM. YYYY';\n\n\t\t\t\t// create a chart object with a month and year field for\n\t\t\t\t// comparison operations\n\t\t\t\tvar chartObj = Ember.Object.create({\n\t\t\t\t\tchartLabel: date.format(format),\n\t\t\t\t\tperiodEndDate: item.get('periodEndDate'),\n\t\t\t\t\tusage: item.get('usage'),\n\t\t\t\t\tmonth: date.month(),\n\t\t\t\t\tyear: date.year()\n\t\t\t\t});\n\n\t\t\t\t// find any matching data for the same month and year\n\t\t\t\t// and reduce them to a single object with the largest usage record\n\t\t\t\tvar hasMonth = statements.findBy('month', chartObj.get('month'));\n\n\t\t\t\t// check for a month match\n\t\t\t\tif (!Ember.isNone(hasMonth)) {\n\t\t\t\t\t// check for a year match on the month match\n\t\t\t\t\tif (hasMonth.get('year') === chartObj.get('year')) {\n\t\t\t\t\t\t// if the new chart object has a larger usage then\n\t\t\t\t\t\t// remove the old object and insert the new object\n\t\t\t\t\t\t// order does not matter here so push it to the end\n\t\t\t\t\t\tif (hasMonth.get('usage') < chartObj.get('usage')) {\n\t\t\t\t\t\t\tstatements.removeObject(hasMonth);\n\t\t\t\t\t\t\tstatements.pushObject(chartObj);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// no matching year so push it to the end\n\t\t\t\t\t\tstatements.pushObject(chartObj);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// no matching month so push it to the end\n\t\t\t\t\tstatements.pushObject(chartObj);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// return the list of unique months sorted by year and month\n\t\t\treturn statements.sortBy('year', 'month').slice(-6);\n\t\t},\n\n\n\t\tactions: {\n\n\t\t\t/**\n    * Open the billing policy in a new tab\n    *\n    * @public\n    * @event openBillingPolicy\n    */\n\t\t\topenBillingPolicy: function openBillingPolicy() {\n\t\t\t\treturn window.open('https://busybusy.com/fair-billing/');\n\t\t\t},\n\t\t\topenStatementPdf: function openStatementPdf(item) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tthis.set('isLoadingPdf', true);\n\n\t\t\t\t// open window before async call as workaround for popup blocking\n\t\t\t\tvar invoiceWindow = window.open();\n\n\t\t\t\tthis.get('store').query('chargify-customer-statement-pdf', { statement_id: item.get('id') }).then(function (results) {\n\t\t\t\t\tif (!Ember.isNone(results) && !Ember.isNone(results.get('firstObject'))) {\n\t\t\t\t\t\tinvoiceWindow.location = results.get('firstObject.url');\n\t\t\t\t\t\tinvoiceWindow.focus();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinvoiceWindow.close();\n\t\t\t\t\t}\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\tinvoiceWindow.close();\n\t\t\t\t\twindow.console.error(err);\n\t\t\t\t}).finally(function () {\n\t\t\t\t\tif (!_this2.get('isDestroyed')) {\n\t\t\t\t\t\t_this2.set('isLoadingPdf', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/subscription-manager', ['exports', '@busy-web/utils', 'busy-app/utils/chargify', 'busy-app/utils/logger'], function (exports, _utils, _chargify, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-subscriptions-subscription-manager'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tslideMenuState: false,\n\t\tslidePaymentActive: false,\n\t\tshowAnnualPlanDialog: false,\n\n\t\tcouponCode: '',\n\t\tcouponValid: false,\n\n\t\tcurrentPlan: '',\n\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\tcardNumber: '',\n\t\texpMonth: '',\n\t\texpYear: '',\n\t\tcvvCode: '',\n\n\t\tisLoading: false,\n\n\t\terrorMessage: '',\n\t\tsuccessMessage: '',\n\t\tnoChangeMessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setMenus();\n\t\t\tthis.setPlan();\n\t\t\tthis.setCardOwner();\n\t\t},\n\n\n\t\tsetPlan: Ember.observer('subscription.subscriptionStatus.id', function () {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (!Ember.isNone(this.get('subscription.subscriptionStatus.id'))) {\n\t\t\t\t\tthis.set('currentPlan', this.get('subscription.subscriptionStatus.planType'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(this.get('subscription.subscriptionStatus.cardLastFour'))) {\n\t\t\t\t\tthis.set('cardNumberPlaceholder', '************' + this.get('subscription.subscriptionStatus.cardLastFour'));\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tsetCardOwner: Ember.observer('auth.owner.id', function () {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (!Ember.isNone(this.get('auth.owner.id'))) {\n\t\t\t\t\tthis.set('firstName', this.get('auth.owner.firstName') || '');\n\t\t\t\t\tthis.set('lastName', this.get('auth.owner.lastName') || '');\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tcostPerUser: Ember.computed('subscription.costPerActiveUser', function () {\n\t\t\tvar cost = this.get('subscription.costPerActiveUser');\n\t\t\treturn cost.toFixed(2);\n\t\t}),\n\n\t\tbillingPeriodStarts: Ember.computed('subscription.subscriptionStatus.trialEndedAt', function () {\n\t\t\treturn _utils.Time.dateFormat(_utils.Time.date(this.get('subscription.subscriptionStatus.trialEndedAt')).local(), 'MMM DD, YYYY');\n\t\t}),\n\n\t\tfirstPayment: Ember.computed('subscription.subscriptionStatus.trialEndedAt', function () {\n\t\t\treturn _utils.Time.dateFormat(_utils.Time.date(this.get('subscription.subscriptionStatus.trialEndedAt')).local().add(1, 'months'), 'MMM DD, YYYY');\n\t\t}),\n\n\t\tupdatePaymentUrl: Ember.computed('subscription.subscriptionStatus.subscriptionId', function () {\n\t\t\treturn _chargify.default.generateUrl('update_payment', this.get('subscription.subscriptionStatus.subscriptionId'));\n\t\t}),\n\n\t\tplanChoices: Ember.computed('currentPlan', 'subscription.subscriptionStatus.planType', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (Ember.isEmpty(this.get('currentPlan'))) {\n\t\t\t\tthis.set('currentPlan', this.get('subscription.subscriptionStatus.planType'));\n\t\t\t}\n\n\t\t\tvar planChoices = this.get('subscription.availablePlans');\n\n\t\t\t// cannot select free if the user in in the free trial, or if they have not submitted payment information\n\t\t\tif (!this.get('subscription.isFreeAccount') && (!this.get('hasCard') || this.get('subscription.isFreeTrial'))) {\n\t\t\t\tplanChoices = planChoices.reject(function (plan) {\n\t\t\t\t\treturn plan.get('key') === 'free';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// don't let user \"dowgrade\" from an Annual account to a Monthly account\n\t\t\tif (this.get('subscription.subscriptionStatus.isAnnualPlan')) {\n\t\t\t\tplanChoices = planChoices.reject(function (plan) {\n\t\t\t\t\treturn plan.get('key') === 'pro';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn planChoices.map(function (planOption) {\n\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\tkey: planOption.get('key'),\n\t\t\t\t\tvalue: planOption.get('name'),\n\t\t\t\t\t_selected: _this.get('currentPlan') === planOption.get('key')\n\t\t\t\t});\n\t\t\t});\n\t\t}),\n\n\t\tcurrentPlanDetails: Ember.computed('currentPlan', 'subscription.availablePlans', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.get('currentPlan')) && !Ember.isNone(this.get('subscription.availablePlans'))) {\n\t\t\t\treturn this.get('subscription.availablePlans').find(function (plan) {\n\t\t\t\t\treturn plan.get('key') === _this2.get('currentPlan');\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tisFreePlan: Ember.computed('currentPlan', function () {\n\t\t\treturn this.get('currentPlan') === 'free';\n\t\t}),\n\n\t\thasCard: Ember.computed('subscription.subscriptionStatus.hasCard', function () {\n\t\t\treturn this.get('subscription.subscriptionStatus.hasCard');\n\t\t}),\n\n\t\tsetMenus: function setMenus() {\n\t\t\tvar curMonth = _utils.Time.date().month();\n\t\t\tvar curYear = _utils.Time.date().year();\n\t\t\tvar months = [];\n\t\t\tvar years = [];\n\t\t\tfor (var i = 1; i <= 12; i++) {\n\t\t\t\tvar year = _utils.Time.date().add(i - 1, 'years').year();\n\t\t\t\tvar month = i < 10 ? '0' + i : '' + i;\n\t\t\t\tyears.pushObject(Ember.Object.create({ key: year, value: year, _selected: year === curYear }));\n\t\t\t\tmonths.pushObject(Ember.Object.create({ key: month, value: month, _selected: i - 1 === curMonth }));\n\t\t\t}\n\n\t\t\tthis.set('expMonth', months.get('firstObject.value'));\n\t\t\tthis.set('expYear', years.get('firstObject.value'));\n\n\t\t\tthis.set('yearMenu', years);\n\t\t\tthis.set('monthMenu', months);\n\t\t},\n\t\tresetSlider: function resetSlider() {\n\t\t\tthis.resetErrors();\n\t\t\tthis.set('slideMenuState', false);\n\t\t\tthis.set('showUpdatePayment', false);\n\t\t\tthis.set('isPaymentLoading', false);\n\t\t\tthis.set('nextStep', false);\n\t\t},\n\t\tresetErrors: function resetErrors() {\n\t\t\tthis.showError('');\n\t\t\tthis.showSuccess('', 0);\n\t\t\tthis.showNoChange('', 0);\n\t\t\tthis.set('isNameInvalid', false);\n\t\t\tthis.set('isCardInvalid', false);\n\t\t\tthis.set('isExpMonthInvalid', false);\n\t\t\tthis.set('isExpYearInvalid', false);\n\t\t\tthis.set('isCvvInvalid', false);\n\t\t},\n\n\n\t\tfNameInvalid: (0, _utils.loc)('first Name is required'),\n\t\tisFNameInvalid: false,\n\n\t\tlNameInvalid: (0, _utils.loc)('Last name is required'),\n\t\tisLNameInvalid: false,\n\n\t\tcardNumberInvalid: (0, _utils.loc)(\"Card # is invalid\"),\n\t\tisCardInvalid: false,\n\n\t\texpMonthInvalid: (0, _utils.loc)('Expiration month is required'),\n\t\tisExpMonthInvalid: false,\n\n\t\texpYearInvalid: (0, _utils.loc)('Expiration year is required'),\n\t\tisExpYearInvalid: false,\n\n\t\tcvvInvalid: (0, _utils.loc)('CVV code is required'),\n\t\tisCvvInvalid: false,\n\n\t\tvalidateCard: function validateCard(firstName, lastName, cardNumber, expMonth, expYear, cvv) {\n\t\t\tvar valid = true;\n\t\t\tthis.set('cardNumberInvalid', (0, _utils.loc)('Card # is invalid'));\n\t\t\tthis.set('expMonthInvalid', (0, _utils.loc)('Expiration month is required'));\n\n\t\t\tthis.set('isCardInvalid', false);\n\t\t\tthis.set('isFNameInvalid', false);\n\t\t\tthis.set('isLNameInvalid', false);\n\t\t\tthis.set('isExpMonthInvalid', false);\n\t\t\tthis.set('isExpYearInvalid', false);\n\t\t\tthis.set('isCardInvalid', false);\n\n\t\t\tif (Ember.isEmpty(firstName)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isFNameInvalid', true);\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(lastName)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isLNameInvalid', true);\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(cardNumber)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('cardNumberInvalid', (0, _utils.loc)('Card # is required'));\n\t\t\t\tthis.set('isCardInvalid', true);\n\t\t\t} else if (!/^(([3]\\d{14})|([456]\\d{15}))$/.test(cardNumber)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isCardInvalid', true);\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(expYear)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isExpYearInvalid', true);\n\t\t\t}\n\n\t\t\tvar exp = _utils.Time.date().local().startOf('month').year(expYear).month(expMonth - 1);\n\t\t\tif (Ember.isEmpty(expMonth)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isExpMonthInvalid', true);\n\t\t\t} else if (_utils.Time.date().isAfter(exp)) {\n\t\t\t\tthis.set('isExpMonthInvalid', true);\n\t\t\t\tthis.set('expMonthInvalid', (0, _utils.loc)('Card is expired'));\n\t\t\t}\n\n\t\t\tif (Ember.isEmpty(cvv)) {\n\t\t\t\tvalid = false;\n\t\t\t\tthis.set('isCvvInvalid', true);\n\t\t\t}\n\n\t\t\treturn valid;\n\t\t},\n\n\n\t\t/**\n   * Updates the credit card if the cardNumber property is set\n   *\n   * returns a truthy promise on success or if the org already has\n   * a valid card on file.\n   *\n   * returns a non truthy value if the org does not have a card on file and the card info is not valid\n   *\n   * @public\n   * @method updateCard\n   * @return {EmberPromise}\n   */\n\t\tupdateCard: function updateCard() {\n\t\t\tvar _this3 = this;\n\n\t\t\t// if a card is not set on the subscription status or a new card number is set then try to update the card\n\t\t\tif (!Ember.isEmpty(this.get('cardNumber').trim())) {\n\t\t\t\tvar firstName = this.get('firstName').trim();\n\t\t\t\tvar lastName = this.get('lastName').trim();\n\t\t\t\tvar cardNumber = this.get('cardNumber').trim();\n\t\t\t\tvar expMonth = parseInt(this.get('expMonth'), 10);\n\t\t\t\tvar expYear = parseInt(this.get('expYear'), 10);\n\t\t\t\tvar cvv = this.get('cvvCode').trim();\n\n\t\t\t\t// make sure the card info is valid\n\t\t\t\tif (this.validateCard(firstName, lastName, cardNumber, expMonth, expYear, cvv)) {\n\t\t\t\t\t// update card returns a true or false on success if the credit card was submitted\n\t\t\t\t\treturn this.get('subscription').updateCard(firstName, lastName, cardNumber, expMonth, expYear, cvv).then(function () {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\tvar errStr = (0, _utils.loc)('There was an error updating your subscription.');\n\t\t\t\t\t\tif (err.code) {\n\t\t\t\t\t\t\tif (err.code[0] === 597) {\n\t\t\t\t\t\t\t\terrStr = (0, _utils.loc)(\"Card number is invalid.\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_this3.showError(errStr);\n\t\t\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// validation failed so return a falsy promise\n\t\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// return hasCard so accounts with card info are still valid or return !hasTrialed for free trial customers\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * set the coupon code for the subscription.\n   *\n   * coupon codes must be valid, to validate a coupon use getCouponCode.\n   *\n   * @public\n   * @method setCouponCode\n   */\n\t\tsetCouponCode: function setCouponCode() {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar code = this.get('couponCode').trim();\n\t\t\t// coupon must be set to non empty string that does not match a current couponCode and it must be a valid coupon set by chargify.\n\t\t\tif (!Ember.isEmpty(code) && this.get('subscription.subscriptionStatus.couponCode') !== code) {\n\t\t\t\tif (this.get('couponValid') === true) {\n\t\t\t\t\t// save the coupon\n\t\t\t\t\treturn this.get('subscription').setCouponCode(code);\n\t\t\t\t} else {\n\t\t\t\t\t// validate and save coupon\n\t\t\t\t\treturn this.getCouponCode(code).then(function (isValid) {\n\t\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\t\treturn _this4.get('subscription').setCouponCode(code).then(function () {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * validates a coupon code so it can be sent to the api by setting this.couponValid to true if valid\n   * false if invalid.\n   *\n   * sets subscription error message when the coupon is invalid\n   * sets couponName to the description of the coupon when the coupon is valid\n   *\n   * returns an empty promise to notify the caller when `this.couponValid` can be checked\n   *\n   * @public\n   * @method getCouponCode\n   * @param code {string}\n   * @return {EmberPromise}\n   */\n\t\tgetCouponCode: function getCouponCode(code) {\n\t\t\tvar _this5 = this;\n\n\t\t\tthis.set('couponValid', false);\n\t\t\tthis.showError('');\n\t\t\tthis.set('couponName', '');\n\n\t\t\t// return invalid coupon state with out setting subscription error\n\t\t\t// then the coupon is an empty string\n\t\t\tif (!Ember.isEmpty(code)) {\n\t\t\t\treturn this.get('subscription').getCouponCode(code).then(function (res) {\n\t\t\t\t\tif (!_this5.get('isDestroyed')) {\n\t\t\t\t\t\t// make sure view is not destroyed\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t// coupon is valid\n\t\t\t\t\t\t\t_this5.set('couponValid', true);\n\t\t\t\t\t\t\t_this5.set('couponName', res.name);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// coupon is invalid\n\t\t\t\t\t\t\t_this5.showError((0, _utils.loc)(\"The coupon code is invalid.\"));\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * upgrade subscription can only be set after the trial if the org is sending in credit card info\n   * or already has credit card info.\n   *\n   * before the trial credit card info is not required\n   *\n   * @public\n   * @method updateSubscription\n   * @param hasCard {boolean}\n   * @return {EmberPromise}\n   */\n\t\tupgradeSubscription: function upgradeSubscription(hasCard) {\n\t\t\tvar _this6 = this;\n\n\t\t\t// make sure subscriptionStatus is not already pro\n\t\t\tif (this.get('subscription.subscriptionStatus.planType') !== 'pro') {\n\t\t\t\tif (hasCard || this.get('subscription.subscriptionStatus.hasCard') || !this.get('subscription.subscriptionStatus.hasTrialed')) {\n\t\t\t\t\treturn this.get('subscription').setSubscriptionStatusPro().then(function () {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t_logger.default.error('<Components::Sliders::SubscriptionManager.updateSubscription> ', err);\n\t\t\t\t\t\t_this6.showError((0, _utils.loc)('There was an error updating your subscription.'));\n\t\t\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Ember.RSVP.resolve(false);\n\t\t},\n\n\n\t\t/**\n   * downgrade subscription for an org that is currently on a pro account and is going to a free account\n   *\n   * @public\n   * @method downgradeSubscription\n   * @return {EmberPromise}\n   */\n\t\tdowngradeSubscription: function downgradeSubscription() {\n\t\t\tvar _this7 = this;\n\n\t\t\t// make sure subscriptionStatus is not already free\n\t\t\tif (this.get('subscription.subscriptionStatus.planType') !== 'free') {\n\t\t\t\t// call downgrade method on subscription service\n\t\t\t\treturn this.get('subscription').setSubscriptionStatusFree().then(function () {\n\t\t\t\t\treturn true;\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t_logger.default.error('<Components::Sliders::SubscriptionManager.downgradeSubscription> ', err);\n\t\t\t\t\t_this7.showError((0, _utils.loc)('There was an error updating your subscription.'));\n\t\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\t\t},\n\t\ttoggleLoading: function toggleLoading() {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tif (this.get('isLoading') === true) {\n\t\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t\tthis.set('isLoading', false);\n\t\t\t\t\t}, 300);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('isLoading', true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tshowSuccess: function showSuccess(message) {\n\t\t\tvar timer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3000;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('successMessage', message);\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.set('successMessage', '');\n\t\t\t\t}, timer);\n\t\t\t}\n\t\t},\n\t\tshowNoChange: function showNoChange(message) {\n\t\t\tvar timer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3000;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('noChangeMessage', message);\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.set('noChangeMessage', '');\n\t\t\t\t}, timer);\n\t\t\t}\n\t\t},\n\t\tshowError: function showError(message) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('errorMessage', message);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcheckCoupon: function checkCoupon(coupon) {\n\t\t\t\t// get and validate coupon\n\t\t\t\tthis.getCouponCode(coupon.trim());\n\t\t\t},\n\t\t\tchangePlan: function changePlan(evt) {\n\t\t\t\tvar val = void 0;\n\t\t\t\tif (evt.target) {\n\t\t\t\t\tval = evt.target.value;\n\t\t\t\t} else {\n\t\t\t\t\tval = evt.srcElement.value;\n\t\t\t\t}\n\n\t\t\t\tif (val === 'pro-annual') {\n\t\t\t\t\tthis.set('showAnnualPlanDialog', true);\n\t\t\t\t\tthis.send('closeAction');\n\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('currentPlan', val);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectExp: function selectExp(type, evt) {\n\t\t\t\tvar val = void 0;\n\t\t\t\tif (evt.target) {\n\t\t\t\t\tval = evt.target.value;\n\t\t\t\t} else {\n\t\t\t\t\tval = evt.srcElement.value;\n\t\t\t\t}\n\t\t\t\tthis.set(type, val);\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.resetSlider();\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\ttoggleUpdatePayment: function toggleUpdatePayment(isOpen) {\n\t\t\t\tthis.set('slidePaymentActive', isOpen);\n\t\t\t},\n\t\t\tupdateSubscription: function updateSubscription() {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\t// reset subscription error message\n\t\t\t\tthis.showError('');\n\n\t\t\t\t// show loading animation\n\t\t\t\tthis.toggleLoading();\n\n\t\t\t\tif (this.get('isFreePlan')) {\n\t\t\t\t\t// free plan is selected\n\t\t\t\t\tthis.downgradeSubscription().finally(function () {\n\t\t\t\t\t\treturn _this8.toggleLoading();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// pro plan is selected\n\t\t\t\t\t// set coupon code\n\t\t\t\t\tthis.setCouponCode().then(function (couponChanged) {\n\t\t\t\t\t\t// update credit card information\n\t\t\t\t\t\treturn _this8.updateCard().then(function (hasCard) {\n\t\t\t\t\t\t\t// submit the subscription upgrade if a card has has passed\n\t\t\t\t\t\t\t// one of the following pre checks:\n\t\t\t\t\t\t\t//  - org has a valid card on file\n\t\t\t\t\t\t\t//  - org is setting up a new card\n\t\t\t\t\t\t\t//  - org is allowed to start free trial\n\t\t\t\t\t\t\treturn _this8.upgradeSubscription(hasCard).then(function (upgraded) {\n\t\t\t\t\t\t\t\tif (upgraded) {\n\t\t\t\t\t\t\t\t\t_this8.showSuccess((0, _utils.loc)('Subscription has been upgraded.'));\n\t\t\t\t\t\t\t\t} else if (hasCard && couponChanged) {\n\t\t\t\t\t\t\t\t\t_this8.showSuccess((0, _utils.loc)('Payment Info and Coupon Code have been updated.'));\n\t\t\t\t\t\t\t\t} else if (hasCard) {\n\t\t\t\t\t\t\t\t\t_this8.showSuccess((0, _utils.loc)('Payment Info has been updated.'));\n\t\t\t\t\t\t\t\t} else if (couponChanged) {\n\t\t\t\t\t\t\t\t\t_this8.showSuccess((0, _utils.loc)('Coupon Code has been updated.'));\n\t\t\t\t\t\t\t\t} else if (Ember.isEmpty(_this8.get('errorMessage'))) {\n\t\t\t\t\t\t\t\t\t_this8.showNoChange('No changes have been made.');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}).finally(function () {\n\t\t\t\t\t\t_this8.toggleLoading();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tlearnMore: function learnMore() {\n\t\t\t\twindow.open('https://busybusy.com/fair-billing/');\n\t\t\t},\n\t\t\topenAnnualPlanDialog: function openAnnualPlanDialog() {\n\t\t\t\tthis.set('showAnnualPlanDialog', true);\n\t\t\t},\n\t\t\tcloseAnnualPlanDialog: function closeAnnualPlanDialog() {\n\t\t\t\tthis.set('showAnnualPlanDialog', false);\n\t\t\t},\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\tvar busyNav = Ember.getOwner(this).lookup('component:busy-nav');\n\t\t\t\tbusyNav.send('openIntercom');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/subscription-plan-info', ['exports', 'busy-app/utils/logger', 'busy-app/utils/string'], function (exports, _logger, _string) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-company-settings-subscription-plan-info'],\n\n\t\t//features: service(),\n\t\tsubscription: Ember.inject.service(),\n\t\t// stripe: service(),\n\t\t//auth: service(),\n\n\t\tisLoading: false,\n\t\tselectTab: null,\n\n\t\tshowUpgradeDialog: false,\n\t\tshowEditPlan: false,\n\t\tshowEditBillingAddress: false,\n\t\tshowEditPaymentMethod: false,\n\t\tshowAnnualInvoiceWarning: false,\n\n\t\t/*\n   * Computeds\n   */\n\n\t\t// a plan is considered custom if it has an account balanceInCents and `subscribedThroughProduct` is not true\n\t\t// if `OrganizationSubscriptionStatus` has values set for `annualSubscriptionCount`, it isn't a custom plan created by CS in Chargify\n\t\t// The `subscribedThroughProduct` is set to true by the web services during the `subscription.upgradeToPro` RPC\n\t\t// these are legacy annual billing plans, which display a custom  message to the user instead of show incorrecc versions subscription details\n\t\tisCustomPlan: Ember.computed('subscriptionDetails.balanceInCents', 'subscription.subscriptionStatus.{isAnnualPlan,subscribedThroughProduct}', function () {\n\t\t\tvar isAnnual = this.get('subscription.subscriptionStatus.isAnnualPlan');\n\t\t\tvar isCustom = this.get('subscriptionDetails.balanceInCents') && !this.get('subscription.subscriptionStatus.subscribedThroughProduct');\n\n\t\t\treturn !isAnnual && isCustom;\n\t\t}),\n\n\t\tisLoadingBillingDetails: Ember.computed.not('subscriptionDetails'),\n\n\t\tshowUpdateText: Ember.computed('subscription.{isProAccount,hasPaymentMethod}', function () {\n\t\t\treturn this.get('subscription.isProAccount') && this.get('subscription.hasPaymentMethod');\n\t\t}),\n\n\t\taccountBalance: Ember.computed('subscriptionDetails.balanceInCents', function () {\n\t\t\tvar balanceInCents = parseInt(this.get('subscriptionDetails.balanceInCents'), 10) * -1;\n\n\t\t\treturn !Ember.isNone(balanceInCents) ? balanceInCents : 0;\n\t\t}),\n\n\t\tshowAccountBalance: Ember.computed.or('accountBalance', 'subscription.subscriptionStatus.isAnnualPlan'),\n\n\t\tisBalanceDue: Ember.computed('accountBalance', function () {\n\t\t\tvar accountBalance = this.get('accountBalance');\n\n\t\t\treturn !Ember.isNone(accountBalance) && accountBalance < 0;\n\t\t}),\n\n\t\tisCreditAvailable: Ember.computed('accountBalance', function () {\n\t\t\tvar accountBalance = this.get('accountBalance');\n\n\t\t\treturn !Ember.isNone(accountBalance) && accountBalance > 0;\n\t\t}),\n\n\t\taccountBalanceFormatted: Ember.computed('accountBalance', function () {\n\t\t\tvar accountBalance = this.get('accountBalance');\n\n\t\t\treturn !Ember.isNone(accountBalance) ? (0, _string.centsToDollarFormat)(Math.abs(accountBalance)) : '';\n\t\t}),\n\n\t\tcostPerActiveUserText: Ember.computed('subscription.{subscriptionStatus.isAnnualPlan,isPaidAccount,costPerActiveUserMonthlyText,costPerActiveUserPerYearText}', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isAnnualPlan')) {\n\t\t\t\treturn this.get('subscription.costPerActiveUserPerYearText');\n\t\t\t} else {\n\t\t\t\treturn this.get('subscription.costPerActiveUserMonthlyText');\n\t\t\t}\n\t\t}),\n\n\t\teffectiveDateText: null,\n\t\t// effectiveDateText: computed('subscription.subscriptionStatus.{hasAnnualSubscriptionChanged,nextAssessmentAt}', function() {\n\t\t// \tif (this.get('subscription.subscriptionStatus.hasAnnualSubscriptionChanged') && this.get('subscription.subscriptionStatus.nextAssessmentAt')) {\n\t\t// \t\tconst formattedDate = Time.date(this.get('subscription.subscriptionStatus.nextAssessmentAt')).format('ll');\n\t\t//\n\t\t// \t\treturn loc(`(Effective %@)`, [formattedDate]);\n\t\t// \t} else {\n\t\t// \t\treturn null;\n\t\t// \t}\n\t\t// }),\n\n\t\t/*\n   * Observers\n   */\n\n\t\tonChangeSubscriptionStatus: Ember.observer('subscription.subscriptionStatusVersion', function () {\n\t\t\t_logger.default.info(this, 'onChangeSubscriptionStatus');\n\t\t\treturn this.loadData();\n\t\t}),\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.loadData();\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method loadData\n   */\n\t\tloadData: function loadData() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tbillingDetails: this.get('subscription').getBillingDetails(),\n\t\t\t\tsubscriptionDetails: this.get('subscription').getSubscriptionDetails(),\n\t\t\t\tsubscriptionPricing: this.get('subscription.subscriptionPricing'), // ensure `subscriptionPricing` is loaded\n\t\t\t\tsubscriptionStatus: this.get('subscription.subscriptionStatus') // ensure `subscriptionStatus` is loaded\n\t\t\t}).then(function (props) {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t_this.set('billingDetails', props.billingDetails);\n\t\t\t\t\t_this.set('subscriptionDetails', props.subscriptionDetails);\n\t\t\t\t}\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this, err);\n\t\t\t}).finally(function () {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t_this.set('isLoading', false);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event openModal\n    */\n\t\t\topenModal: function openModal(dialogName) {\n\t\t\t\t_logger.default.info(this, 'openModal', { dialogName: dialogName });\n\n\t\t\t\tthis.set('show' + dialogName, true);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event closeModal\n    * @param dialogName {string} which dialog to close (EditPlan / EditBillingAddress / EditPaymentMethod)\n    */\n\t\t\tcloseModal: function closeModal(dialogName) {\n\t\t\t\t_logger.default.info(this, 'closeModal', { dialogName: dialogName });\n\n\t\t\t\tthis.set('show' + dialogName, false);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event closeModalAndRefresh\n    * @param dialogName {string} which dialog to close (EditPlan / EditBillingAddress / EditPaymentMethod)\n    */\n\t\t\tcloseModalAndRefresh: function closeModalAndRefresh(dialogName) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\t_logger.default.info(this, 'closeModalAndRefresh', { dialogName: dialogName });\n\n\t\t\t\treturn this.loadData().finally(function () {\n\t\t\t\t\tif (!_this2.get('isDestroyed')) {\n\t\t\t\t\t\t_this2.sendAction('refreshSubscriptionTabState'); // action lives in subscription-index\n\t\t\t\t\t\treturn _this2.send('closeModal', dialogName);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event return\n    * @param invoiceId {number}\n    */\n\t\t\topenInvoice: function openInvoice(invoiceId) {\n\t\t\t\treturn this.get('subscription').openPdfInvoice(invoiceId);\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event openUpgradeDialog\n    */\n\t\t\topenUpgradeDialog: function openUpgradeDialog() {\n\t\t\t\t_logger.default.info(this, 'openUpgradeDialog', {});\n\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tif (this.get('subscription.subscriptionStatus.isInvoice')) {\n\t\t\t\t\t\tthis.send('openModal', ['AnnualInvoiceWarning']);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.send('openModal', ['UpgradeDialog']);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event closeUpgradeDialog\n    */\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\t_logger.default.info(this, 'closeUpgradeDialog', {});\n\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.sendAction('refreshSubscriptionTabState');\n\n\t\t\t\t\tthis.set('showUpgradeDialog', false);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event selectTab\n    */\n\t\t\tselectTab: function selectTab(tabName) {\n\t\t\t\t_logger.default.info(this, 'selectTab', {});\n\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.sendAction('selectTab', tabName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/subscriptions/subscription-plans', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-company-subscription-plans'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\torganization: Ember.computed.alias('auth.organization'),\n\n\t\t// component attributes\n\t\tselectSubscriptionTab: function selectSubscriptionTab() {\n\t\t\treturn null;\n\t\t},\n\n\t\t// component properties\n\t\tfeatureGrid: null,\n\n\t\tshowHelpDialog: false,\n\t\tshowSubscriptionManager: false,\n\n\t\tisLoading: false,\n\n\t\tuserPricePerMonth: Ember.computed.alias('subscription.costPerActiveUserMonthly'),\n\t\tuserPriceAnnualPerMonth: Ember.computed.alias('subscription.costPerActiveUserAnnual'),\n\t\tuserPriceAnnualPerYear: Ember.computed('userPriceAnnualPerMonth', function () {\n\t\t\treturn (this.get('userPriceAnnualPerMonth') * 12).toFixed(2);\n\t\t}),\n\n\t\tuserPricePerMonthDollar: Ember.computed('userPricePerMonth', function () {\n\t\t\treturn !Ember.isNone(this.get('userPricePerMonth')) ? this.getDollars(this.get('userPricePerMonth')) : null;\n\t\t}),\n\n\t\tuserPricePerMonthCents: Ember.computed('userPricePerMonth', 'userPricePerMonthDollar', function () {\n\t\t\treturn !Ember.isNone(this.get('userPricePerMonth')) ? this.getCents(this.get('userPricePerMonth')) : null;\n\t\t}),\n\n\t\tuserPriceAnnualPerMonthDollar: Ember.computed('userPriceAnnualPerMonth', function () {\n\t\t\treturn !Ember.isNone(this.get('userPriceAnnualPerMonth')) ? this.getDollars(this.get('userPriceAnnualPerMonth')) : null;\n\t\t}),\n\n\t\tuserPriceAnnualPerMonthCents: Ember.computed('userPriceAnnualPerMonth', 'userPriceAnnualPerMonthDollar', function () {\n\t\t\treturn !Ember.isNone(this.get('userPriceAnnualPerMonth')) ? this.getCents(this.get('userPriceAnnualPerMonth')) : null;\n\t\t}),\n\n\t\tneedsPaymentMethod: Ember.computed.not('subscription.hasPaymentMethod'),\n\t\tshowPaymentMethodPrompt: Ember.computed.and('subscription.isTrialAccount', 'needsPaymentMethod'),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.set('featureGrid', []);\n\n\t\t\t// this.getPlanDefinitions();\n\t\t\tthis.setupFeatureGrid();\n\t\t},\n\n\n\t\t// getPlanDefinitions() {\n\t\t//\n\t\t// \treturn resolve(this.setProperties({\n\t\t// \t\tuserPricePerMonth: USER_PRICE_PER_MONTH,\n\t\t// \t\tuserLimitFree: USER_LIMIT_FREE,\n\t\t// \t\tuserLimitPro: USER_LIMIT_PRO,\n\t\t// \t}));\n\t\t// },\n\n\t\tgetDollars: function getDollars(amount) {\n\t\t\treturn Math.floor(amount);\n\t\t},\n\t\tgetCents: function getCents(amount) {\n\t\t\treturn Math.floor((amount - this.getDollars(amount)) * 100);\n\t\t},\n\t\tsetupFeatureGrid: function setupFeatureGrid() {\n\t\t\t// free, pro, enterprise, featureLabel\n\t\t\t// don't localize featureLabel here\n\t\t\tvar featureGrid = [this.createGridRow(1, 1, 1, 'Time Tracking'), this.createGridRow(1, 1, 1, 'Projects, Cost Codes, & Equipment'), this.createGridRow(1, 1, 1, 'Overtime Calculation'), this.createGridRow(1, 1, 1, 'Event-Based GPS Tracking'), this.createGridRow(1, 1, 1, 'Basic Reporting'), this.createGridRow(1, 1, 1, 'Digital Time Card Signatures'), this.createGridRow(1, 1, 1, 'Equipment App Integration'), this.createGridRow(1, 1, 1, 'Online Support'), this.createGridRow(1, 1, 1, 'Location-Based Reminders'), this.createGridRow(0, 1, 1, 'Labor Budgets'), this.createGridRow(0, 1, 1, 'Advanced Reporting'), this.createGridRow(0, 1, 1, 'Custom User Permissions'), this.createGridRow(0, 1, 1, 'Job Photos'), this.createGridRow(0, 1, 1, 'Priority Phone & Web Support'), this.createGridRow(0, 1, 1, 'Time Entry Logs'), this.createGridRow(0, 1, 1, 'Time Entry Conflict Resolutions'), this.createGridRow(0, 1, 1, 'QuickBooks Desktop Integration')];\n\n\t\t\tthis.set('featureGrid', featureGrid);\n\t\t},\n\t\tcreateGridRow: function createGridRow(free, pro, enterprise, featureLabel) {\n\t\t\treturn { featureLabel: featureLabel, free: free, pro: pro, enterprise: enterprise };\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenCurrentPlan: function openCurrentPlan() {\n\t\t\t\t// call the selectSubscriptionTab method provided to this component by the parent\n\t\t\t\tthis.get('selectSubscriptionTab')('currentPlan');\n\t\t\t},\n\t\t\topenAllPlans: function openAllPlans() {\n\t\t\t\t// call the selectSubscriptionTab method provided to this component by the parent\n\t\t\t\tthis.get('selectSubscriptionTab')('allPlans');\n\t\t\t},\n\t\t\topenInvoiceHistory: function openInvoiceHistory() {\n\t\t\t\t// call the selectSubscriptionTab method provided to this component by the parent\n\t\t\t\tthis.get('selectSubscriptionTab')('invoiceHistory');\n\t\t\t},\n\t\t\topenSubscriptionManager: function openSubscriptionManager() {\n\t\t\t\tthis.set('showSubscriptionManager', true);\n\t\t\t},\n\t\t\tcloseSubscriptionManager: function closeSubscriptionManager() {\n\t\t\t\tthis.set('showSubscriptionManager', false);\n\t\t\t},\n\t\t\tstartTrial: function startTrial() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tthis.set('isLoading', true);\n\t\t\t\tthis.get('subscription').startTrial().finally(function () {\n\t\t\t\t\t_this.set('isLoading', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdowngradeAccount: function downgradeAccount() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tthis.set('isLoading', true);\n\t\t\t\tthis.get('subscription').setSubscriptionStatusFree().finally(function () {\n\t\t\t\t\t_this2.set('isLoading', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\topenHelpDialog: function openHelpDialog() {\n\t\t\t\tthis.set('showIntercom', true);\n\t\t\t\tthis.set('showReceptive', false);\n\t\t\t\tthis.set('showHelpDialog', true);\n\t\t\t},\n\t\t\tcloseHelpDialog: function closeHelpDialog() {\n\t\t\t\tthis.set('showHelpDialog', false);\n\t\t\t},\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\tvar busyNav = Ember.getOwner(this).lookup('component:busy-nav');\n\t\t\t\tbusyNav.send('openIntercom');\n\t\t\t},\n\t\t\topenFaq: function openFaq() {\n\t\t\t\tvar busyNav = Ember.getOwner(this).lookup('component:busy-nav');\n\t\t\t\tbusyNav.send('openFaq');\n\t\t\t}\n\t\t}\n\t});\n});","define(\"busy-app/components/subscriptions/upgrade-dialog\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/geo\", \"busy-app/utils/logger\", \"busy-app/utils/string\"], function (exports, _utils, _geo, _logger, _string) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/***/\n\tvar kDefaultSubscriptionPreview = {\n\t\tsubtotal: null,\n\t\ttax: null,\n\t\ttotal: null,\n\t\tbalance: null,\n\t\tstartDate: _utils.Time.date().add(1, \"months\").unix(),\n\t\tendDate: null,\n\t\tnextPaymentDate: _utils.Time.date().add(2, \"months\").unix()\n\t};\n\n\t/**\n  * `Components/Subscriptions/UpgradeDialog`\n  *\n  * @class UpgradeDialog\n  * @namespace Components.Subscriptions\n  * @extends Component\n  */\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tstripe: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\t\tvalidation: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\n\t\t// determine page state\n\t\tisLoading: null,\n\t\tisSubscriptionPreviewLoading: false,\n\t\tisFormProcessing: false,\n\n\t\tactiveUserEstimate: null,\n\t\tpaymentCycle: null, // monthly or annual\n\t\tisPaymentAccepted: false,\n\t\tinvoiceId: null,\n\t\tsubscriptionPreview: Ember.RSVP.resolve(kDefaultSubscriptionPreview),\n\n\t\t// billing information selection collections\n\t\tcountryOptions: null,\n\t\tstateOptions: null,\n\t\tcardMonths: null,\n\t\tcardYears: null,\n\n\t\t/*\n   * IMPORTANT: Form validation makes assumptions that the associated properties are named according to the following pattern: `name`, `nameInvalid`, `isNameInvalid`\n   *\n   * Form fields must be accessible as this.get(key), for example, this.get('address').\n   * Error messages must be accessible as this.get('{key}Invalid'), for example, this.get('addressInvalid').\n   * Error indicators must be accessible as this.get('is{key}Invalid}'), for example, this.get('isAddressInvalid').\n   *\n   */\n\n\t\t// billing information state\n\t\taddress: null,\n\t\taddress2: null,\n\t\tcountry: null,\n\t\tcity: null,\n\t\tstate: null,\n\t\tpostalCode: null,\n\t\tphone: null,\n\t\tcardHolderName: null,\n\t\tcardNumber: null,\n\t\tcardMonth: null,\n\t\tcardYear: null,\n\t\tcardCVC: null,\n\t\tagreeToTerms: false,\n\n\t\t// billing information validation\n\t\tisFormInvalid: false,\n\t\tisAddressInvalid: false,\n\t\tisAddress2Invalid: false,\n\t\tisCountryInvalid: false,\n\t\tisCityInvalid: false,\n\t\tisStateInvalid: false,\n\t\tisPostalCodeInvalid: false,\n\t\tisPhoneInvalid: false,\n\t\tisCardHolderNameInvalid: false,\n\t\tisCardNumberInvalid: false,\n\t\tisCardMonthInvalid: false,\n\t\tisCardYearInvalid: false,\n\t\tisCardDateInvalid: false,\n\t\tisCardCVCInvalid: false,\n\t\tisAgreeToTermsInvalid: false,\n\n\t\t// error messages displayed beneath the input field\n\t\taddressInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcityInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcountryInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tstateInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tpostalCodeInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tphoneInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcardHolderNameInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcardNumberInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcardMonthInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcardYearInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tcardCVCInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tagreeToTermsInvalid: (0, _utils.loc)(\"Required Field\"),\n\t\tformInvalidDefault: (0, _utils.loc)(\"There are problems with the provided information. Please double check your entries and try again.\"),\n\t\tformInvalid: (0, _utils.loc)(\"There are problems with the provided information. Please double check your entries and try again.\"),\n\n\t\t/**\n   * COMPUTEDS\n   *\n   */\n\n\t\tisCountryUS: Ember.computed.equal(\"country\", \"US\"),\n\n\t\tneedsPaymentCycle: Ember.computed.empty(\"paymentCycle\"),\n\t\thasPaymentCycle: Ember.computed.notEmpty(\"paymentCycle\"),\n\n\t\tisPaymentCycleMonthly: Ember.computed.equal(\"paymentCycle\", \"monthly\"),\n\t\tisPaymentCycleAnnual: Ember.computed.equal(\"paymentCycle\", \"annual\"),\n\n\t\tisPaymentMethodCredit: Ember.computed.equal(\"paymentMethod\", \"credit\"),\n\t\tisPaymentMethodInvoice: Ember.computed.equal(\"paymentMethod\", \"invoice\"),\n\n\t\tshowCloseButton: Ember.computed(\"paymentCycle\", function () {\n\t\t\treturn Ember.isEmpty(this.get(\"paymentCycle\"));\n\t\t}),\n\t\tshowBackButton: Ember.computed(\"paymentCycle\", \"isPaymentAccepted\", function () {\n\t\t\treturn !Ember.isEmpty(this.get(\"paymentCycle\")) && !this.get(\"isPaymentAccepted\");\n\t\t}),\n\n\t\t// plan calculation computeds\n\t\tcostPerActiveUserAnnual: Ember.computed.alias(\"subscription.costPerActiveUserAnnual\"),\n\t\tcostPerActiveUserMonthly: Ember.computed.alias(\"subscription.costPerActiveUserMonthly\"),\n\n\t\testimatedCostPerActiveUserAnnual: Ember.computed(\"subscription.costPerActiveUserAnnualPerYear\", \"activeUserEstimate\", function () {\n\t\t\treturn this.get(\"activeUserEstimate\") * this.get(\"subscription.costPerActiveUserAnnualPerYear\");\n\t\t}),\n\n\t\testimatedCostPerActiveUserMonthly: Ember.computed(\"subscription.costPerActiveUserMonthly\", \"activeUserEstimate\", function () {\n\t\t\treturn this.get(\"activeUserEstimate\") * this.get(\"subscription.costPerActiveUserMonthly\");\n\t\t}),\n\n\t\testimatedCostPerActiveUserMonthlyYear: Ember.computed(\"subscription.costPerActiveUserMonthlyPerYear\", \"activeUserEstimate\", function () {\n\t\t\treturn this.get(\"activeUserEstimate\") * this.get(\"subscription.costPerActiveUserMonthlyPerYear\");\n\t\t}),\n\n\t\testimatedCostPerActiveUserAnnualSavings: Ember.computed(\"estimatedCostPerActiveUserAnnual\", \"estimatedCostPerActiveUserMonthlyYear\", function () {\n\t\t\treturn this.get(\"estimatedCostPerActiveUserMonthlyYear\") - this.get(\"estimatedCostPerActiveUserAnnual\");\n\t\t}),\n\n\t\tpaymentMethod: Ember.computed(\"isPaymentCycleAnnual\", \"estimatedCostPerActiveUserAnnual\", function () {\n\t\t\treturn this.get(\"isPaymentCycleAnnual\") && this.get(\"estimatedCostPerActiveUserAnnual\") > this.get(\"subscription.annualInvoiceThreshold\") ? \"invoice\" : \"credit\";\n\t\t}),\n\n\t\tsubscriptionType: Ember.computed(\"isPaymentCycleMonthly\", \"isPaymentCycleAnnual\", \"isPaymentMethodInvoice\", function () {\n\t\t\tif (this.get(\"isPaymentMethodInvoice\")) {\n\t\t\t\treturn \"annualInvoice\";\n\t\t\t} else if (this.get(\"isPaymentCycleAnnual\")) {\n\t\t\t\treturn \"annualCredit\";\n\t\t\t} else if (this.get(\"isPaymentCycleMonthly\")) {\n\t\t\t\treturn \"monthlyCredit\";\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}),\n\n\t\tisValidUSState: Ember.computed(\"state\", \"stateOptions\", function () {\n\t\t\tvar _this = this;\n\n\t\t\treturn !!this.get(\"stateOptions\").find(function (stateOption) {\n\t\t\t\treturn stateOption.key === _this.get(\"state\");\n\t\t\t});\n\t\t}),\n\n\t\t/*\n   * WARNING: Magic numbers to calculate payment dates as modified by trial periods\n   * \tAll trials are assumed to be 1 month long\n   * \tAll annual/invoice subscriptions are assumed to be 1 year long\n   *\n   * An annual invoice is normally due 30 days from the creation time\n   * \tIf the user is in a free trial, the invoice is due 30 days from the end of the trial period\n   * Annual subscriptions are charged immediately\n   * Monthly subscription is normally assessed 30 days from the creation time\n   * \tIf the user is in a free trial, the assessment will occur 30 days from the end of the trial period\n   *\n   */\n\t\tfirstPaymentDate: Ember.computed(\"subscriptionPreview\", \"isPaymentCycleAnnual\", \"isPaymentMethodInvoice\", \"subscription.subscriptionStatus\", function () {\n\t\t\tif (this.get(\"isPaymentCycleAnnual\")) {\n\t\t\t\tif (this.get(\"isPaymentMethodInvoice\")) {\n\t\t\t\t\tif (this.get(\"subscription.subscriptionStatus.isFreeTrial\")) {\n\t\t\t\t\t\treturn _utils.Time.date(this.get(\"subscription.subscriptionStatus.trialEndedAt\")).add(1, \"months\").unix();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _utils.Time.date().add(1, \"months\").unix();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn _utils.Time.date().unix();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.get(\"subscription.subscriptionStatus.isFreeTrial\")) {\n\t\t\t\t\treturn _utils.Time.date(this.get(\"subscription.subscriptionStatus.trialEndedAt\")).add(1, \"months\").unix();\n\t\t\t\t} else {\n\t\t\t\t\treturn _utils.Time.date().add(1, \"months\").unix();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/*\n   * An annual subscription's next payment date is 1 year after the previous payment date\n   * A  monthly subscription's next payment date is 1 month after the previous payment date *\n   */\n\t\tnextPaymentDate: Ember.computed(\"firstPaymentDate\", \"isPaymentCycleAnnual\", function () {\n\t\t\tif (this.get(\"isPaymentCycleAnnual\")) {\n\t\t\t\treturn _utils.Time.date(this.get(\"firstPaymentDate\")).add(1, \"years\").unix();\n\t\t\t} else {\n\t\t\t\treturn _utils.Time.date(this.get(\"firstPaymentDate\")).add(1, \"months\").unix();\n\t\t\t}\n\t\t}),\n\n\t\taccountBalance: Ember.computed(\"subscriptionDetails.balanceInCents\", function () {\n\t\t\tvar balanceInCents = parseInt(this.get(\"subscriptionDetails.balanceInCents\"), 10) * -1;\n\n\t\t\treturn !Ember.isNone(balanceInCents) ? balanceInCents : 0;\n\t\t}),\n\n\t\tisBalanceDue: Ember.computed(\"accountBalance\", function () {\n\t\t\tvar accountBalance = this.get(\"accountBalance\");\n\n\t\t\treturn !Ember.isNone(accountBalance) && accountBalance < 0;\n\t\t}),\n\n\t\tisCreditAvailable: Ember.computed(\"accountBalance\", function () {\n\t\t\tvar accountBalance = this.get(\"accountBalance\");\n\n\t\t\treturn !Ember.isNone(accountBalance) && accountBalance > 0;\n\t\t}),\n\n\t\tshowAccountBalance: Ember.computed.or(\"isCreditAvailable\", \"isPaymentCycleAnnual\"),\n\n\t\taccountBalanceFormatted: Ember.computed(\"accountBalance\", function () {\n\t\t\tvar accountBalance = this.get(\"accountBalance\");\n\n\t\t\treturn !Ember.isNone(accountBalance) ? (0, _string.centsToDollarFormat)(Math.abs(accountBalance)) : \"\";\n\t\t}),\n\n\t\t/**\n   * OBSERVERS\n   *\n   */\n\n\t\t// initialize activeUserEstimate\n\t\tobserveMemberMeta: Ember.observer(\"auth.memberCount\", function () {\n\t\t\tif (Ember.isEmpty(this.get(\"activeUserEstimate\")) && !Ember.isEmpty(\"auth.memberCount\") && !this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"activeUserEstimate\", this.get(\"auth.memberCount\"));\n\t\t\t}\n\t\t}),\n\n\t\tonFormInputsChange: Ember.observer(\"activeUserEstimate\", \"paymentCycle\", \"country\", \"state\", \"city\", \"postalCode\", \"address\", function () {\n\t\t\tthis.getProperties(this.onFormInputsChange.__ember_observes__); // get all the obprops to make sure they're fresh\n\n\t\t\tEmber.run.debounce(this, this.setSubscriptionPreview, 500);\n\t\t}),\n\n\t\t// catch and fix bad `activeUserEstimate` input\n\t\t// invalid inputs are reset in a run.next() so that the UI updates to the new value\n\t\tonChangeActiveUserEstimate: Ember.observer(\"activeUserEstimate\", function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar numUsers = parseInt(this.get(\"activeUserEstimate\"), 10);\n\n\t\t\tif (numUsers <= 0 || !Number.isInteger(numUsers)) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tif (!_this2.get(\"isDestroyed\")) {\n\t\t\t\t\t\t_this2.set(\"activeUserEstimate\", 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (Number.isInteger(numUsers) && numUsers !== this.get(\"activeUserEstimate\")) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tif (!_this2.get(\"isDestroyed\")) {\n\t\t\t\t\t\t_this2.set(\"activeUserEstimate\", numUsers);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * COMPONENT INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis._super();\n\t\t\tthis.set(\"cardMonths\", []);\n\t\t\tthis.set(\"cardYears\", []);\n\n\t\t\treturn this.loadData().then(function (data) {\n\t\t\t\treturn _this3.initForm(data);\n\t\t\t});\n\n\t\t\t// this.fillTestData();\n\t\t},\n\n\n\t\t/**\n   * Get pricing information, and the number of currently active users in the organization\n   *\n   * @public\n   * @method loadData\n   * @async\n   */\n\t\tloadData: function loadData() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.set(\"isLoading\", true);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tsubscriptionPricing: this.get(\"subscription.subscriptionPricing\"),\n\t\t\t\tmemberCount: Ember.RSVP.resolve(this.get(\"auth\").get(\"memberCount\")),\n\t\t\t\tbillingDetails: Ember.RSVP.resolve(this.get(\"subscription\").getBillingDetails()),\n\t\t\t\tsubscriptionDetails: Ember.RSVP.resolve(this.get(\"subscription\").getSubscriptionDetails()),\n\t\t\t\torganizationInfo: Ember.RSVP.resolve(this.get(\"auth.organization.organizationInfo\"))\n\t\t\t}).then(function (props) {\n\t\t\t\tif (!_this4.get(\"isDestroyed\")) {\n\t\t\t\t\t_this4.set(\"activeUserEstimate\", props.memberCount);\n\t\t\t\t\t_this4.set(\"subscriptionDetails\", props.subscriptionDetails);\n\n\t\t\t\t\treturn props;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn _logger.default.error(_this4, err);\n\t\t\t}).finally(function () {\n\t\t\t\tif (!_this4.get(\"isDestroyed\")) {\n\t\t\t\t\t_this4.set(\"isLoading\", false);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t// fillTestData() {\n\t\t// \tthis.setProperties({\n\t\t// \t\taddress: '1234 River Parkway',\n\t\t// \t\taddress2: null,\n\t\t// \t\tcountry: 'US',\n\t\t// \t\tcity: 'St George',\n\t\t// \t\tstate: 'UT',\n\t\t// \t\tpostalCode: '84790',\n\t\t// \t\tphone: '4355551234',\n\t\t// \t\tcardHolderName: 'fname lname',\n\t\t// \t\tcardNumber: '4111 1111 1111 1111',\n\t\t// \t\tcardMonth: 12,\n\t\t// \t\tcardYear: 2020,\n\t\t// \t\tcardCVC: '123',\n\t\t// \t\tagreeToTerms: true,\n\t\t// \t});\n\t\t// },\n\n\t\t/**\n   * FORM INITIALIZATION\n   *\n   */\n\n\t\t/**\n   * Setup the form\n   *  - reset all properties to blank\n   *  - clear any validation errors\n   *  - initialize Observers\n   *  - initialize select collections\n   *\n   * @public\n   * @method initForm\n   */\n\t\tinitForm: function initForm(initialData) {\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.setProperties({\n\t\t\t\t\taddress: null,\n\t\t\t\t\taddress2: null,\n\t\t\t\t\tcountry: null,\n\t\t\t\t\tcity: null,\n\t\t\t\t\tstate: null,\n\t\t\t\t\tpostalCode: null,\n\t\t\t\t\tphone: null,\n\t\t\t\t\tcardHolderName: null,\n\t\t\t\t\tcardNumber: null,\n\t\t\t\t\tcardMonth: null,\n\t\t\t\t\tcardYear: null,\n\t\t\t\t\tcardCVC: null,\n\t\t\t\t\tagreeToTerms: false\n\t\t\t\t});\n\n\t\t\t\tthis.initPaymentInformation(initialData);\n\t\t\t\tthis.initFormValidation();\n\n\t\t\t\t// manually trigger observers\n\t\t\t\tthis.observeMemberMeta();\n\t\t\t\tthis.onFormInputsChange();\n\n\t\t\t\t// initialize select collections\n\t\t\t\tthis.setCardMonths();\n\t\t\t\tthis.setCardYears();\n\t\t\t\tthis.setupCountryOptions();\n\t\t\t\tthis.setupStateOptions();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Initialize/Pre-Populate the form with other known data\n   *\n   * @public\n   * @method initPaymentInformation\n   * @param initialData {Object}\n   * @param initialData.billingDetails {Object}\n   * @param initialData.organizationInfo {Object}\n   */\n\t\tinitPaymentInformation: function initPaymentInformation(initialData) {\n\t\t\tvar billingDetails = initialData.billingDetails,\n\t\t\t    organizationInfo = initialData.organizationInfo;\n\n\t\t\t// simplify logic by ensuring billingDetails and organizationInfo exist and are valid Ember objects\n\n\t\t\tif (Ember.isNone(billingDetails)) {\n\t\t\t\tbillingDetails = Ember.Object.create({});\n\t\t\t}\n\n\t\t\tif (Ember.isNone(organizationInfo)) {\n\t\t\t\torganizationInfo = Ember.Object.create({});\n\t\t\t}\n\n\t\t\t_logger.default.info(this, \"billingDetails\", billingDetails);\n\t\t\t_logger.default.info(this, \"organizationInfo\", organizationInfo);\n\n\t\t\tthis.initFromFirst(\"address\", [billingDetails.get(\"address\"), organizationInfo.get(\"address1\")]);\n\t\t\tthis.initFromFirst(\"address2\", [billingDetails.get(\"address2\"), organizationInfo.get(\"address2\")]);\n\t\t\tthis.initFromFirst(\"city\", [billingDetails.get(\"city\"), organizationInfo.get(\"city\")]);\n\t\t\tthis.initFromFirst(\"postalCode\", [billingDetails.get(\"postalCode\"), organizationInfo.get(\"postalCode\")]);\n\t\t\tthis.initFromFirst(\"state\", [billingDetails.get(\"state\"), organizationInfo.get(\"state\")]);\n\t\t\tthis.initFromFirst(\"country\", [billingDetails.get(\"country\"), organizationInfo.get(\"country\")]);\n\t\t\tthis.initFromFirst(\"phone\", [billingDetails.get(\"phone\"), organizationInfo.get(\"phone\")]);\n\t\t\tthis.initFromFirst(\"cardHolderName\", [billingDetails.get(\"cardHolderName\"), (this.get(\"auth.member.firstName\") + \" \" + this.get(\"auth.member.lastName\")).trim()]);\n\t\t\tthis.initFromFirst(\"maskedCardNumber\", [billingDetails.get(\"maskedCardNumber\")]);\n\t\t\tthis.initFromFirst(\"cardMonth\", [billingDetails.get(\"cardMonth\")]);\n\t\t\tthis.initFromFirst(\"cardYear\", [billingDetails.get(\"cardYear\")]);\n\t\t},\n\n\n\t\t/**\n   * If the specified property does not already have a value, set it to the first non-blank element of the provided array\n   *\n   * @public\n   * @method initFromFirst\n   * @param property {String}\n   * @param sources {String[]}\n   */\n\t\tinitFromFirst: function initFromFirst(property, sources) {\n\t\t\tif (Ember.isBlank(this.get(property))) {\n\t\t\t\tthis.set(property, sources.find(function (val) {\n\t\t\t\t\treturn !Ember.isBlank(val);\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get and prepare data collection for the country selection\n   *\n   * @public\n   * @method setupCountryOptions\n   */\n\t\tsetupCountryOptions: function setupCountryOptions() {\n\t\t\tvar countries = (0, _geo.getCountries)();\n\t\t\tvar countryOptions = countries.map(function (country) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: country.code,\n\t\t\t\t\tlabel: country.name\n\t\t\t\t};\n\t\t\t});\n\n\t\t\t// pull out US and re-insert at top of collection\n\t\t\tvar optionUS = countryOptions.findBy(\"key\", \"US\");\n\t\t\tcountryOptions = countryOptions.rejectBy(\"key\", \"US\");\n\t\t\tcountryOptions.unshift(optionUS);\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"countryOptions\", countryOptions);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get and prepare data collection for the state selection\n   *\n   * @public\n   * @method setupStateOptions\n   */\n\t\tsetupStateOptions: function setupStateOptions() {\n\t\t\tvar states = (0, _geo.getStates)();\n\t\t\tvar stateOptions = states.map(function (state) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: state.code,\n\t\t\t\t\tlabel: state.name\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"stateOptions\", stateOptions);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get and prepare data collection for the credit card month selection\n   *\n   * @public\n   * @method setCardMonths\n   */\n\t\tsetCardMonths: function setCardMonths() {\n\t\t\tvar startOfYear = _utils.Time.date().startOf(\"year\");\n\t\t\tvar months = [];\n\n\t\t\tfor (var i = 0; i < 12; i++) {\n\t\t\t\tmonths.push({\n\t\t\t\t\tvalue: i + 1,\n\t\t\t\t\tlabel: startOfYear.clone().add(i, \"month\").format(\"MM - MMM\")\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"cardMonths\", months);\n\t\t\t}\n\t\t},\n\n\n\t\tcardMonthOptions: Ember.computed(\"cardMonths\", \"cardMonth\", function () {\n\t\t\tvar cardMonth = parseInt(this.get(\"cardMonth\"), 10);\n\n\t\t\treturn this.get(\"cardMonths\").map(function (month) {\n\t\t\t\treturn Object.assign({}, month, {\n\t\t\t\t\t_isSelected: month.value === cardMonth\n\t\t\t\t});\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * Get and prepare data collection for the credit card year selection\n   *\n   * @public\n   * @method setCardYears\n   */\n\t\tsetCardYears: function setCardYears() {\n\t\t\tvar startYear = _utils.Time.date().year();\n\t\t\tvar numYears = 32;\n\t\t\tvar years = [];\n\n\t\t\tfor (var i = 0; i < numYears; i++) {\n\t\t\t\tyears.push(startYear + i);\n\t\t\t}\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"cardYears\", years);\n\t\t\t}\n\t\t},\n\n\n\t\tcardYearOptions: Ember.computed(\"cardYears\", \"cardYear\", function () {\n\t\t\tvar cardYear = parseInt(this.get(\"cardYear\"), 10);\n\n\t\t\treturn this.get(\"cardYears\").map(function (year) {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: year,\n\t\t\t\t\t_isSelected: year === cardYear\n\t\t\t\t};\n\t\t\t});\n\t\t}),\n\n\t\t/**\n   * FORM VALIDATION\n   *\n   */\n\n\t\t/**\n   * clear any validation errors\n   *\n   * @public\n   * @method initFormValidation\n   */\n\t\tinitFormValidation: function initFormValidation() {\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.setProperties({\n\t\t\t\t\tisAddressInvalid: false,\n\t\t\t\t\tisAddress2Invalid: false,\n\t\t\t\t\tisCountryInvalid: false,\n\t\t\t\t\tisCityInvalid: false,\n\t\t\t\t\tisStateInvalid: false,\n\t\t\t\t\tisPostalCodeInvalid: false,\n\t\t\t\t\tisPhoneInvalid: false,\n\t\t\t\t\tisCardHolderNameInvalid: false,\n\t\t\t\t\tisCardNumberInvalid: false,\n\t\t\t\t\tisCardMonthInvalid: false,\n\t\t\t\t\tisCardYearInvalid: false,\n\t\t\t\t\tisCardDateInvalid: false,\n\t\t\t\t\tisCardCVCInvalid: false,\n\t\t\t\t\tisAgreeToTermsInvalid: false,\n\t\t\t\t\tisFormInvalid: false,\n\t\t\t\t\tisFormProcessing: false\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * ensure provided data is formatted as expected\n   *  - all fiends trimmed of whitespace\n   *  - strip all non-numeric from CardNumber and CardCVC\n   *\n   * @public\n   * @method cleanupPaymentInformation\n   */\n\t\tcleanupPaymentInformation: function cleanupPaymentInformation() {\n\t\t\tvar _this5 = this;\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t[\"address\", \"address2\", \"city\", \"state\", \"postalCode\", \"cardNumber\", \"cardHolderName\"].forEach(function (fieldName) {\n\t\t\t\t\t_this5.set(fieldName, (_this5.get(fieldName) || \"\").trim());\n\t\t\t\t});\n\n\t\t\t\tvar cardNumber = this.get(\"cardNumber\") || \"\";\n\t\t\t\tvar cardNumeric = cardNumber.replace(/[^\\d]/gi, \"\");\n\t\t\t\tthis.set(\"cardNumber\", cardNumeric);\n\n\t\t\t\tvar cardCVC = this.get(\"cardCVC\") || \"\";\n\t\t\t\tvar cardCVCNumeric = cardCVC.replace(/[^\\d]/gi, \"\");\n\t\t\t\tthis.set(\"cardCVC\", cardCVCNumeric);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Validate provided form data\n   *\n   * @public\n   * @method validatePaymentInformation\n   * @async\n   * @return {Boolean}\n   */\n\t\tvalidatePaymentInformation: function validatePaymentInformation() {\n\t\t\tvar _this6 = this;\n\n\t\t\tthis.initFormValidation();\n\n\t\t\treturn Ember.RSVP.all([this.validateSimpleRequired(\"address\"), this.validateSimpleRequired(\"city\"), this.validateSimpleRequired(\"country\"), this.validateSimpleRequired(\"state\"), this.validateSimpleRequired(\"postalCode\"),\n\t\t\t// this.get('isPaymentMethodInvoice') ? this.validateSimpleRequired('phone') : false, // FIXME: re-enable this when chargify fixes their partial update bug\n\t\t\tthis.validateSimpleRequired(\"cardHolderName\"), this.isInvalidCardNumber(this.get(\"cardNumber\")), this.isInvalidCardDate(this.get(\"cardMonth\"), this.get(\"cardYear\")), this.isInvalidCardCVC(this.get(\"cardCVC\")), this.get(\"isPaymentMethodInvoice\") ? this.validateCheckbox(\"agreeToTerms\") : false]).then(function (hasInvalidData) {\n\t\t\t\tif (hasInvalidData.includes(true)) {\n\t\t\t\t\tthrow _this6.get(\"formInvalidDefault\");\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Check if a field does NOT have a provided value\n   *\n   * @public\n   * @method validateSimpleRequired\n   * @return {Boolean}\n   */\n\t\tvalidateSimpleRequired: function validateSimpleRequired(key) {\n\t\t\tvar value = this.get(key);\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(value)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set((key + \"-invalid\").camelize(), (0, _utils.loc)(\"Required Field\"));\n\t\t\t}\n\n\t\t\tthis.set((\"is-\" + key + \"-invalid\").camelize(), isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Check if a checkbox has NOT been checked\n   *\n   * @public\n   * @method validateCheckbox\n   * @return {Boolean}\n   */\n\t\tvalidateCheckbox: function validateCheckbox(key) {\n\t\t\tvar value = this.get(key);\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(value) || value !== true) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set((key + \"-invalid\").camelize(), (0, _utils.loc)(\"Required Field\"));\n\t\t\t}\n\n\t\t\tthis.set((\"is-\" + key + \"-invalid\").camelize(), isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Check if the Credit Card Number is NOT valid\n   *\n   * @public\n   * @method isInvalidCardNumber\n   * @return {Boolean}\n   */\n\t\tisInvalidCardNumber: function isInvalidCardNumber(cardNumber) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardNumber)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set(\"cardNumberInvalid\", (0, _utils.loc)(\"Required Field\"));\n\t\t\t} else if (this.get(\"validation\").isInvalidCardNumber(cardNumber)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set(\"cardNumberInvalid\", (0, _utils.loc)(\"Invalid Input\"));\n\t\t\t}\n\n\t\t\tthis.set(\"isCardNumberInvalid\", isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Check if the Credit Card Expiration Date is NOT valid\n   *\n   * @public\n   * @method isInvalidCardDate\n   * @param cardMonth {String}\n   * @param cardYear {String}\n   * @return {Boolean}\n   */\n\t\tisInvalidCardDate: function isInvalidCardDate(cardMonth, cardYear) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardMonth) || Ember.isEmpty(cardYear)) {\n\t\t\t\tisInvalid = true;\n\n\t\t\t\tif (Ember.isEmpty(cardMonth)) {\n\t\t\t\t\tthis.set(\"isCardMonthInvalid\", true);\n\t\t\t\t\tthis.set(\"cardMonthInvalid\", (0, _utils.loc)(\"Required Field\"));\n\t\t\t\t}\n\n\t\t\t\tif (Ember.isEmpty(cardYear)) {\n\t\t\t\t\tthis.set(\"isCardYearInvalid\", true);\n\t\t\t\t\tthis.set(\"cardYearInvalid\", (0, _utils.loc)(\"Required Field\"));\n\t\t\t\t}\n\t\t\t} else if (this.get(\"validation\").isInvalidCardDate(cardMonth, cardYear)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set(\"isCardMonthInvalid\", true);\n\t\t\t\tthis.set(\"cardMonthInvalid\", (0, _utils.loc)(\"Expired Card\"));\n\t\t\t} else {\n\t\t\t\tthis.set(\"isCardMonthInvalid\", false);\n\t\t\t\tthis.set(\"isCardYearInvalid\", false);\n\t\t\t}\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * Check if the Credit Card CVC is NOT valid\n   *\n   * @public\n   * @method isInvalidCardDate\n   * @param cardCVC {String}\n   * @return {Boolean}\n   */\n\t\tisInvalidCardCVC: function isInvalidCardCVC(cardCVC) {\n\t\t\tvar isInvalid = false;\n\n\t\t\tif (Ember.isEmpty(cardCVC)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set(\"cardCVCInvalid\", (0, _utils.loc)(\"Required Field\"));\n\t\t\t} else if (this.get(\"validation\").isInvalidCardCVC(cardCVC)) {\n\t\t\t\tisInvalid = true;\n\t\t\t\tthis.set(\"cardCVCInvalid\", (0, _utils.loc)(\"Invalid Input\"));\n\t\t\t}\n\n\t\t\tthis.set(\"isCardCVCInvalid\", isInvalid);\n\n\t\t\treturn isInvalid;\n\t\t},\n\n\n\t\t/**\n   * SUBSCRIPTION PREVIEW  / TAX AND ORDER TOTALS\n   *\n   */\n\n\t\t/**\n   * @public\n   * @method setSubscriptionPreview\n   * @async\n   * @return {Object}\n   */\n\t\tsetSubscriptionPreview: function setSubscriptionPreview() {\n\t\t\tvar _this7 = this;\n\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(\"subscriptionPreview\", kDefaultSubscriptionPreview);\n\t\t\t\tthis.set(\"isSubscriptionPreviewLoading\", true);\n\t\t\t}\n\n\t\t\treturn this.getSubscriptionPreview().then(function (subscriptionPreview) {\n\t\t\t\tif (!_this7.get(\"isDestroyed\")) {\n\t\t\t\t\t_this7.set(\"subscriptionPreview\", subscriptionPreview);\n\t\t\t\t\t_this7.set(\"isSubscriptionPreviewLoading\", false);\n\n\t\t\t\t\treturn subscriptionPreview;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Get the taxes and order totals from the payment processor\n   *\n   * @public\n   * @method getSubscriptionPreview\n   * @async\n   * @returns {Promise|Object}\n   */\n\t\tgetSubscriptionPreview: function getSubscriptionPreview() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar requiredFields = [\"activeUserEstimate\", \"paymentCycle\", \"country\", \"state\", \"city\", \"postalCode\", \"address\"];\n\t\t\tvar isMissingValue = requiredFields.any(function (key) {\n\t\t\t\treturn Ember.isEmpty(_this8.get(key));\n\t\t\t});\n\n\t\t\t// Logger.info(this, 'getSubscriptionPreview', {isMissingValue}, this.getProperties(requiredFields));\n\n\t\t\tif (isMissingValue) {\n\t\t\t\treturn Ember.RSVP.resolve(kDefaultSubscriptionPreview);\n\t\t\t}\n\n\t\t\tvar quantity = parseInt(this.get(\"activeUserEstimate\"), 10);\n\n\t\t\tvar previewLocation = Ember.Object.create({\n\t\t\t\tallocatedQuantity: quantity,\n\t\t\t\tsubscriptionType: this.get(\"paymentCycle\") === \"annual\" ? \"annually\" : \"monthly\",\n\t\t\t\tbillingCountry: this.get(\"country\"),\n\t\t\t\tbillingState: this.get(\"state\"),\n\t\t\t\tbillingCity: this.get(\"city\"),\n\t\t\t\tbillingZip: this.get(\"postalCode\"),\n\t\t\t\tbillingAddress: this.get(\"address\")\n\t\t\t});\n\n\t\t\treturn this.get(\"subscription\").getSubscriptionPreview(previewLocation);\n\t\t},\n\n\n\t\t/**\n   * DATA SUBMISSION\n   *\n   */\n\n\t\t/**\n   * Process the steps required to start a subscription\n   *  - Cleanup data formattting\n   *  - Perform data validation\n   *  - Save the payment information\n   *  - Start the subscription\n   *\n   * @public\n   * @method submitForm\n   * @async\n   * @return {Promise|Boolean}\n   */\n\t\tsubmitForm: function submitForm() {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.set(\"isLoading\", true);\n\t\t\tthis.cleanupPaymentInformation();\n\n\t\t\treturn this.validatePaymentInformation().then(function () {\n\t\t\t\treturn _this9.savePaymentInformation();\n\t\t\t}).then(function () {\n\t\t\t\treturn _this9.updateSubscription();\n\t\t\t}).then(function () {\n\t\t\t\tif (!_this9.get(\"isDestroyed\")) {\n\t\t\t\t\t/**\n      * A sucessful submission does not close this modal.\n      * Setting isPaymentAccepted=true causes this modal to display the `order-confirmation` component\n      */\n\t\t\t\t\t_this9.set(\"isPaymentAccepted\", true);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this9, \"submitForm\", err);\n\n\t\t\t\tvar errMsg = typeof err === \"string\" ? err : (0, _utils.loc)(\"Something went wrong, please try again later.\");\n\n\t\t\t\tthrow errMsg;\n\t\t\t}).finally(function () {\n\t\t\t\t_this9.set(\"isLoading\", false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @async\n   * @method savePaymentInformation\n   * @return {Promise}\n   */\n\t\tsavePaymentInformation: function savePaymentInformation() {\n\t\t\tvar cardMonth = parseInt(this.get(\"cardMonth\"), 10);\n\t\t\tvar cardYear = parseInt(this.get(\"cardYear\"), 10);\n\n\t\t\tvar paymentInformation = Ember.Object.create({\n\t\t\t\tcardHolderName: this.get(\"cardHolderName\"),\n\t\t\t\taddress: this.get(\"address\"),\n\t\t\t\taddress2: this.get(\"address2\"),\n\t\t\t\tpostalCode: this.get(\"postalCode\"),\n\t\t\t\tcity: this.get(\"city\"),\n\t\t\t\tstate: this.get(\"state\"),\n\t\t\t\tcountry: this.get(\"country\"),\n\n\t\t\t\tcardNumber: this.get(\"cardNumber\"),\n\t\t\t\tcardCVC: this.get(\"cardCVC\"),\n\t\t\t\tcardMonth: cardMonth,\n\t\t\t\tcardYear: cardYear\n\t\t\t});\n\n\t\t\treturn this.get(\"subscription\").savePaymentMethod(paymentInformation);\n\t\t},\n\n\n\t\t/**\n   * Determine which type of subscription is being requested and hand off the request to the appropriate handler.\n   *\n   * @public\n   * @method updateSubscription\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscription: function updateSubscription() {\n\t\t\t_logger.default.info(this, \"updateSubscription\");\n\n\t\t\tif (this.get(\"isPaymentCycleAnnual\")) {\n\t\t\t\tif (this.get(\"isPaymentMethodInvoice\")) {\n\t\t\t\t\treturn this.updateSubscriptionToAnnualInvoice();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.updateSubscriptionToAnnual();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this.updateSubscriptionToMonthly();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Update the subscription to a monthly plan accounting for the state the plan is already in\n   *\n   * @public\n   * @method updateSubscriptionToMonthly\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToMonthly: function updateSubscriptionToMonthly() {\n\t\t\t_logger.default.info(this, \"updateSubscriptionToMonthly\");\n\n\t\t\t// no change if going from trial to monthly or monthly to monthly\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isMonthlyPlan\") && this.get(\"subscription.subscriptionStatus.isProAccount\")) {\n\t\t\t\treturn this.noOpPromise();\n\t\t\t}\n\t\t\t// from annual or annualInvoice\n\t\t\telse if (this.get(\"subscription.subscriptionStatus.isAnnualPlan\")) {\n\t\t\t\t\treturn this.updateSubscriptionToMonthlyFromAnnual();\n\t\t\t\t}\n\t\t\t\t// default state (free) to monthly\n\t\t\t\telse {\n\t\t\t\t\t\treturn this.updateSubscriptionToMonthlyFromFree();\n\t\t\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method updateSubscriptionToMonthlyFromFree\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToMonthlyFromFree: function updateSubscriptionToMonthlyFromFree() {\n\t\t\t_logger.default.info(this, \"updateSubscriptionToMonthlyFromFree\");\n\n\t\t\tvar includeTrialPeriod = false;\n\n\t\t\treturn this.get(\"subscription\").setSubscriptionStatusPro(includeTrialPeriod);\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method updateSubscriptionToMonthlyFromAnnual\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToMonthlyFromAnnual: function updateSubscriptionToMonthlyFromAnnual() {\n\t\t\t_logger.default.info(this, \"subscriptionToMonthlyFromAnnual\");\n\n\t\t\treturn this.get(\"subscription\").cancelAnnualSubscription();\n\t\t},\n\n\n\t\t/**\n   * If the organization is not already Pro, upgrade it to pro, then attempt to charge the card for the requested number of users.\n   *\n   * @public\n   * @method updateSubscriptionToAnnual\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToAnnual: function updateSubscriptionToAnnual() {\n\t\t\t_logger.default.info(this, \"updateSubscriptionToAnnual\");\n\n\t\t\tvar activeUserEstimate = parseInt(this.get(\"activeUserEstimate\"), 10);\n\n\t\t\t// if the account is already pro, charge the account for the requested users\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isProAccount\")) {\n\t\t\t\treturn this.chargeAnnualSubscription(activeUserEstimate);\n\t\t\t}\n\t\t\t// from default (free) to annual, upgrade the account to pro, then add the credits\n\t\t\telse {\n\t\t\t\t\treturn this.updateSubscriptionToAnnualFromFree(activeUserEstimate);\n\t\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method updateSubscriptionToAnnualFromFree\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToAnnualFromFree: function updateSubscriptionToAnnualFromFree(activeUserEstimate) {\n\t\t\tvar _this10 = this;\n\n\t\t\tvar includeTrialPeriod = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t_logger.default.info(this, \"updateSubscriptionToAnnualFromFree\", {\n\t\t\t\tactiveUserEstimate: activeUserEstimate,\n\t\t\t\tincludeTrialPeriod: includeTrialPeriod\n\t\t\t});\n\n\t\t\treturn this.get(\"subscription\").setSubscriptionStatusPro(includeTrialPeriod).then(function () {\n\t\t\t\treturn _this10.chargeAnnualSubscription(activeUserEstimate);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Upgrade the organization to pro, then create an invoice for the balance due for the requested number of users.\n   * The created `invoiceId` is saved, so it can be passed to the `order-confirmation` component.\n   *\n   * @public\n   * @method updateSubscriptionToAnnualInvoice\n   * @async\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToAnnualInvoice: function updateSubscriptionToAnnualInvoice() {\n\t\t\t_logger.default.info(this, \"updateSubscriptionToAnnualInvoice\");\n\n\t\t\tvar activeUserEstimate = parseInt(this.get(\"activeUserEstimate\"), 10);\n\n\t\t\t// if the account is already pro, create an invoice for the requested additional users\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isProAccount\")) {\n\t\t\t\treturn this.invoiceAnnualSubscription(activeUserEstimate);\n\t\t\t}\n\t\t\t// from default (free) to annual, upgrade the account to pro, then add the credits\n\t\t\telse {\n\t\t\t\t\treturn this.updateSubscriptionToAnnualInvoiceFromFree(activeUserEstimate);\n\t\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method updateSubscriptionToAnnualInvoiceFromFree\n   * @async\n   * @param activeUserEstimate {Int}\n   * @param [includeTrialPeriod=false] {Boolean}\n   * @return {Promise}\n   */\n\t\tupdateSubscriptionToAnnualInvoiceFromFree: function updateSubscriptionToAnnualInvoiceFromFree(activeUserEstimate) {\n\t\t\tvar _this11 = this;\n\n\t\t\tvar includeTrialPeriod = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t_logger.default.info(this, \"updateSubscriptionToAnnualFromFree\", {\n\t\t\t\tactiveUserEstimate: activeUserEstimate,\n\t\t\t\tincludeTrialPeriod: includeTrialPeriod\n\t\t\t});\n\n\t\t\treturn this.get(\"subscription\").setSubscriptionStatusPro(includeTrialPeriod).then(function () {\n\t\t\t\treturn _this11.invoiceAnnualSubscription(activeUserEstimate);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * charge the account to produce additional annual credits\n   * side effects are the `annualSubscriptionDate` and `annualSubscriptionCount` properties on OrganizationSubscriptionStatus will change\n   *\n   * @public\n   * @method updateSubscriptionToAnnualInvoiceFromFree\n   * @async\n   * @param userCount {Int}\n   * @return {Promise}\n   */\n\t\tchargeAnnualSubscription: function chargeAnnualSubscription(userCount) {\n\t\t\t_logger.default.info(this, \"chargeAnnualSubscription\", { userCount: userCount });\n\n\t\t\treturn this.get(\"subscription\").chargeAnnualSubscription(userCount);\n\t\t},\n\n\n\t\t/**\n   * invoice the account to produce additional annual credits\n   * side effects are the `annualSubscriptionDate` and `annualSubscriptionCount` properties on OrganizationSubscriptionStatus will change\n   *\n   * @public\n   * @method updateSubscriptionToAnnualInvoiceFromFree\n   * @async\n   * @return {Promise}\n   */\n\t\tinvoiceAnnualSubscription: function invoiceAnnualSubscription(userCount) {\n\t\t\tvar _this12 = this;\n\n\t\t\t_logger.default.info(this, \"invoiceAnnualSubscription\", { userCount: userCount });\n\n\t\t\treturn this.get(\"subscription\").invoiceAnnualSubscription(userCount).then(function (invoiceId) {\n\t\t\t\tif (!_this12.get(\"isDestroyed\")) {\n\t\t\t\t\t_this12.set(\"invoiceId\", invoiceId);\n\t\t\t\t}\n\n\t\t\t\treturn invoiceId;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Downgrade the account from pro to free.\n   * Works for trial, monthly, and annual plans.\n   *\n   * @public\n   * @async\n   * @method downgradeToFree\n   * @return {Promise}\n   */\n\t\tdowngradeToFree: function downgradeToFree() {\n\t\t\tvar _this13 = this;\n\n\t\t\t_logger.default.info(this, \"downgradeToFree\");\n\n\t\t\tthis.set(\"isFormProcessing\", true);\n\t\t\treturn this.get(\"subscription\").setSubscriptionStatusFree().catch(function (err) {\n\t\t\t\treturn _this13.handleApiError(\"downgradeToFree\", err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this13.safeSet(\"isFormProcessing\", false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * UTILITY\n   *\n   */\n\n\t\t/**\n   * retrieve value selected from DOM event\n   *\n   * @public\n   * @param evt {Object}\n   * @method getEventValue\n   */\n\t\tgetEventValue: function getEventValue(evt) {\n\t\t\treturn evt.target ? evt.target.value : evt.srcElement.value;\n\t\t},\n\n\n\t\t/**\n   * Only attempt to set to `this` if it has not been destroyed\n   *\n   * @public\n   * @chainable\n   * @param key {String}\n   * @param value {any}\n   * @method safeSet\n   */\n\t\tsafeSet: function safeSet(key, value) {\n\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\tthis.set(key, value);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\n\t\t/**\n   * Utilty to return a promise that does nothing\n   *\n   * @public\n   * @method noOpPromise\n   */\n\t\tnoOpPromise: function noOpPromise() {\n\t\t\t_logger.default.info(this, \"noOpPromise\");\n\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\n\n\t\t/**\n   * If the API returns an error code, try to turn it into a message useful to the end user.\n   *\n   * @public\n   * @method handleApiError\n   * @param type {Object}\n   * @param err {object}\n   * @return {Promise}\n   */\n\n\t\thandleApiError: function handleApiError(type, err) {\n\t\t\t_logger.default.error(this, type, typeof err === \"undefined\" ? \"undefined\" : _typeof(err), err);\n\n\t\t\tif ((typeof err === \"undefined\" ? \"undefined\" : _typeof(err)) === \"object\") {\n\t\t\t\terr = (0, _utils.loc)(\"Something went wrong, please try again later.\");\n\t\t\t}\n\n\t\t\tthis.safeSet(\"errorMessage\", err);\n\n\t\t\t// NOTE Ember RSVP reject will throw an error for\n\t\t\t// unhandled catch errors if the goal is to throw\n\t\t\t// the error then return is here and let it propagate\n\t\t\t// to all the handlers first then ember will throw it.\n\t\t\treturn Ember.RSVP.reject(err);\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * @public\n    * @event onClose\n    */\n\t\t\tonClose: function onClose() {\n\t\t\t\t_logger.default.info(this, \"onClose\");\n\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tthis.sendAction(\"onClose\");\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * There are 3 \"pages\"\n    *  - Hitting back on the first page where plan type is selected closes the modal\n    *  - Hitting back on the payment form returns to the plan page\n    *  - The order confirmation page does not allow a \"back\" action\n    *\n    * @public\n    * @event onBack\n    */\n\t\t\tonBack: function onBack() {\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tif (Ember.isEmpty(this.get(\"paymentCycle\"))) {\n\t\t\t\t\t\tthis.send(\"onClose\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.send(\"selectPaymentCycle\", null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event selectPaymentCycle\n    * @param paymentCycle {string} 'annual' or 'monthly'\n    */\n\t\t\tselectPaymentCycle: function selectPaymentCycle(paymentCycle) {\n\t\t\t\t// console.log('selectPaymentCycle');\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tthis.initFormValidation();\n\t\t\t\t\tthis.set(\"paymentCycle\", paymentCycle);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSelectCountry\n    * @param evt {object} DOM event\n    */\n\t\t\tonSelectCountry: function onSelectCountry(evt) {\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set(\"country\", val);\n\t\t\t\t\tthis.set(\"state\", null);\n\t\t\t\t\tthis.set(\"postalCode\", null);\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSelectState\n    * @param evt {object} DOM event\n    */\n\t\t\tonSelectState: function onSelectState(evt) {\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set(\"state\", val);\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSelectState\n    * @param key {string} key of the property to be set (cardYear or cardMonth)\n    * @param evt {object} DOM event\n    */\n\t\t\tselectExp: function selectExp(key, evt) {\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tvar val = this.getEventValue(evt);\n\n\t\t\t\t\tthis.set(key, val);\n\n\t\t\t\t\tevt.target.blur();\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onAgreeToTerms\n    * @param isChecked {boolean} new state for the agree to terms checkbox\n    */\n\t\t\tonAgreeToTerms: function onAgreeToTerms(isChecked) {\n\t\t\t\t// console.log('onAgreeToTerms', isChecked);\n\t\t\t\tif (!this.get(\"isDestroyed\")) {\n\t\t\t\t\tthis.set(\"agreeToTerms\", isChecked);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event onSubmitPaymentInformation\n    */\n\t\t\tonSubmitPaymentInformation: function onSubmitPaymentInformation() {\n\t\t\t\tvar _this14 = this;\n\n\t\t\t\tthis.set(\"isFormInvalid\", false);\n\t\t\t\tthis.set(\"isFormProcessing\", true);\n\n\t\t\t\treturn this.submitForm().catch(function (err) {\n\t\t\t\t\tif (!_this14.get(\"isDestroyed\")) {\n\t\t\t\t\t\t_this14.set(\"formInvalid\", err);\n\t\t\t\t\t\t_this14.set(\"isFormInvalid\", true);\n\t\t\t\t\t}\n\t\t\t\t}).finally(function () {\n\t\t\t\t\tif (!_this14.get(\"isDestroyed\")) {\n\t\t\t\t\t\t_this14.set(\"isFormProcessing\", false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * @public\n    * @event downgradeToFree\n    */\n\t\t\tdowngradeToFree: function downgradeToFree() {\n\t\t\t\tvar _this15 = this;\n\n\t\t\t\tthis.set(\"isLoading\", true);\n\t\t\t\treturn this.downgradeToFree().then(function () {\n\t\t\t\t\t_this15.safeSet(\"isLoading\", false);\n\t\t\t\t\t_this15.sendAction(\"onClose\");\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/sync-status', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\t/*** CONSTANTS ***/\n\t/**\n  * @module Components\n  *\n  */\n\tvar MIN_TIMER = 1000;\n\n\t/*** private ***/\n\tvar __dirty = false;\n\tvar __resolved = false;\n\tvar __syncstamp = null;\n\tvar __timeout = null;\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-sync-status', 'page-hide'],\n\n\t\t__dirty: false,\n\t\t__resolved: false,\n\n\t\tshowHide: Ember.observer('__dirty', '__resolved', 'message', 'actionMessage', function () {\n\t\t\tvar container = Ember.$('#c-sync-status-container');\n\t\t\tcontainer.find('.action').html(this.get('actionText'));\n\t\t\tcontainer.find('.action-message').html(this.get('actionMessage'));\n\t\t\tcontainer.find('.message').html(this.get('message'));\n\n\t\t\tif (this.get('__dirty')) {\n\t\t\t\tif (!container.hasClass('active')) {\n\t\t\t\t\tcontainer.addClass('active');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontainer.removeClass('active');\n\t\t\t}\n\n\t\t\tif (this.get('__resolved')) {\n\t\t\t\tif (!container.hasClass('resolve')) {\n\t\t\t\t\tcontainer.addClass('resolve');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontainer.removeClass('resolve');\n\t\t\t}\n\t\t}),\n\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmemberId: null,\n\t\tstart: null,\n\t\tend: null,\n\t\tsyncing: false,\n\t\tsyncTries: 0,\n\n\t\tmessage: (0, _utils.loc)('Updating totals'),\n\t\tactionMessage: (0, _utils.loc)('Update ready'),\n\t\tactionText: (0, _utils.loc)('RELOAD'),\n\n\t\tinitializeSync: function initializeSync() {\n\t\t\tvar _this = this;\n\n\t\t\t// get the latest time entry sync stamp\n\t\t\tvar promise = this.getLastEntry().then(function (entry) {\n\t\t\t\tif (!Ember.isNone(entry)) {\n\t\t\t\t\t// get the latest aggregate sync stamp\n\t\t\t\t\treturn _this.getLastAggregate(entry.get('memberId')).then(function (aggregate) {\n\t\t\t\t\t\tif (!Ember.isNone(aggregate)) {\n\t\t\t\t\t\t\t// set sync stamp if it has never been set\n\t\t\t\t\t\t\tif (Ember.isNone(__syncstamp)) {\n\t\t\t\t\t\t\t\t__syncstamp = entry.get('updatedOn');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// return true if isDirty false if not\n\t\t\t\t\t\t\treturn _this.compareTime(entry, aggregate);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false; // return not dirty because no aggregate was found\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false; // return not dirty because no entry was found\n\t\t\t});\n\n\t\t\tpromise.then(function (isDirty) {\n\t\t\t\t// set dirty state\n\t\t\t\t_this.setState(isDirty);\n\n\t\t\t\t// update timer callbacks\n\t\t\t\t_this.updateTimer();\n\t\t\t});\n\t\t},\n\t\tgetLastEntry: function getLastEntry() {\n\t\t\t// sync with latest closed time entry\n\t\t\tvar query = { _desc: ['updated_on'], page: 1, page_size: 1, end_time: '!_-NULL-_', deleted_on: '_-DISABLE-_' };\n\t\t\tif (!Ember.isEmpty(this.get('memberId'))) {\n\t\t\t\tquery.member_id = this.get('memberId');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tquery._lte = { start_time: this.get('end') };\n\t\t\t\tquery._gte = { end_time: this.get('start') };\n\t\t\t}\n\n\t\t\tvar timeEntryQuery = this.get('store').query('time-entry', query);\n\t\t\tvar breakQuery = this.get('store').query('time-entry-break', query).then(function (breakModels) {\n\t\t\t\tif (Ember.isNone(breakModels)) {\n\t\t\t\t\treturn breakModels;\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.allSettled(breakModels.map(function (breakModel) {\n\t\t\t\t\t\treturn Ember.RSVP.resolve(breakModel.get('time-entry'));\n\t\t\t\t\t})).then(function () {\n\t\t\t\t\t\treturn breakModels;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.allSettled([timeEntryQuery, breakQuery]).then(function (models) {\n\t\t\t\tvar _models = _slicedToArray(models, 2),\n\t\t\t\t    timeEntryModels = _models[0],\n\t\t\t\t    breakModels = _models[1];\n\n\t\t\t\tvar firstTimeEntryModel = Ember.get(timeEntryModels, 'firstObject');\n\t\t\t\tvar firstTimeEntryModelUpdatedOn = Ember.get(timeEntryModels, 'firstObject.updatedOn');\n\n\t\t\t\tvar firstBreakModel = Ember.get(breakModels, 'firstObject');\n\t\t\t\tvar firstBreakModelUpdatedOn = Ember.get(breakModels, 'firstObject.updatedOn');\n\t\t\t\tvar firstBreakEntryIsClosed = !!Ember.get(firstBreakModel || {}, 'timeEntry.endTime');\n\n\t\t\t\tvar hasValidTimeEntry = !Ember.isNone(firstTimeEntryModel);\n\t\t\t\tvar hasNewValidBreak = !Ember.isNone(firstBreakModel) && firstBreakEntryIsClosed; // open time entries don't trigger aggregate updates\n\n\t\t\t\tif (!hasValidTimeEntry && !hasNewValidBreak) {\n\t\t\t\t\t// neither\n\t\t\t\t\treturn firstTimeEntryModel;\n\t\t\t\t} else if (hasValidTimeEntry && !hasNewValidBreak) {\n\t\t\t\t\t// only firstTimeEntryModel\n\t\t\t\t\treturn firstTimeEntryModel;\n\t\t\t\t} else if (!hasValidTimeEntry && hasNewValidBreak) {\n\t\t\t\t\t// only firstBreakModel, return dummy object\n\t\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\t\tupdatedOn: Ember.get(firstBreakModel, 'updatedOn'),\n\t\t\t\t\t\tmemberId: Ember.get(firstBreakModel, 'timeEntry.memberId')\n\t\t\t\t\t});\n\t\t\t\t} else if (firstTimeEntryModelUpdatedOn > firstBreakModelUpdatedOn) {\n\t\t\t\t\t// both are valid, but firstTimeEntryModel is newer\n\t\t\t\t\treturn firstTimeEntryModel;\n\t\t\t\t} else {\n\t\t\t\t\t// both are valid, but firstBreakModel is newer, return dummy object\n\t\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\t\tupdatedOn: Ember.get(firstBreakModel, 'updatedOn'),\n\t\t\t\t\t\tmemberId: Ember.get(firstBreakModel, 'timeEntry.memberId')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tgetLastAggregate: function getLastAggregate(memberId) {\n\t\t\t_utils.Assert.isUUID(memberId);\n\t\t\tvar query = { _desc: ['updated_on'], page_size: 1, member_id: memberId };\n\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tquery._lte = { start_time: this.get('end') };\n\t\t\t\tquery._gte = { end_time: this.get('start') };\n\t\t\t}\n\n\t\t\treturn this.get('store').query('pay-period-member-cost', query).then(function (model) {\n\t\t\t\treturn model.get('firstObject');\n\t\t\t});\n\t\t},\n\t\tcompareTime: function compareTime(entry, aggregate) {\n\t\t\tif (!Ember.isNone(entry.get('updatedOn')) && !Ember.isNone(aggregate.get('updatedOn'))) {\n\t\t\t\tif (entry.get('updatedOn') > aggregate.get('updatedOn') || entry.get('updatedOn') !== __syncstamp) {\n\t\t\t\t\t__syncstamp = entry.get('updatedOn');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tupdateTimer: function updateTimer() {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (this.get('syncing')) {\n\t\t\t\t// quit after a minute of trying if the record is not updated yet\n\t\t\t\tif (this.get('syncTries') < 30) {\n\t\t\t\t\t__timeout = window.setTimeout(function () {\n\t\t\t\t\t\tif (!_this2.get('isDestroyed')) {\n\t\t\t\t\t\t\t_this2.set('syncTries', _this2.get('syncTries') + 1);\n\t\t\t\t\t\t\t_this2.initializeSync();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, MIN_TIMER);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setState(false);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetState: function setState(isDirty) {\n\t\t\tif (!this.get('isDestroyed') && __dirty !== isDirty) {\n\t\t\t\t// set isDirty\n\t\t\t\t__dirty = isDirty;\n\t\t\t\tthis.set('__dirty', __dirty);\n\n\t\t\t\tif (this.get('onResolve')) {\n\t\t\t\t\t// set resolved to not isDirty\n\t\t\t\t\t__resolved = !isDirty;\n\t\t\t\t\tthis.set('__resolved', __resolved);\n\t\t\t\t}\n\n\t\t\t\t// only set syncing when syncing is already true\n\t\t\t\t// and isDirty is false\n\t\t\t\tif (this.get('syncing') && !isDirty) {\n\t\t\t\t\tthis.set('syncing', false);\n\n\t\t\t\t\t// if onResolve listener is not set then fire\n\t\t\t\t\t// onSync listener\n\t\t\t\t\tif (this.get('onSync')) {\n\t\t\t\t\t\tthis.sendAction('onSync');\n\t\t\t\t\t}\n\t\t\t\t} else if (!this.get('syncing') && isDirty) {\n\t\t\t\t\tthis.set('syncing', true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tif (!Ember.isNone(__timeout)) {\n\t\t\t\twindow.clearTimeout(__timeout);\n\t\t\t}\n\n\t\t\tif (this.get('syncing')) {\n\t\t\t\tthis.setState(true);\n\t\t\t}\n\n\t\t\tthis.set('syncTries', 0);\n\t\t\tthis.updateTimer();\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-sync-status-container');\n\n\t\t\tvar action = container.find('.action');\n\t\t\taction.unbind('click.' + viewId);\n\t\t\taction.bind('click.' + viewId, function () {\n\t\t\t\treturn _this3.send('clickAction');\n\t\t\t});\n\t\t\taction.html(this.get('actionText'));\n\n\t\t\tvar close = container.find('.close');\n\t\t\tclose.unbind('click.' + viewId);\n\t\t\tclose.bind('click.' + viewId, function () {\n\t\t\t\treturn _this3.send('closeAction');\n\t\t\t});\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-sync-status-container');\n\t\t\tcontainer.removeClass('active');\n\t\t\tcontainer.removeClass('resolve');\n\n\t\t\tvar action = container.find('.action');\n\t\t\taction.unbind('click.' + viewId);\n\n\t\t\tvar close = container.find('.close');\n\t\t\tclose.unbind('click.' + viewId);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclickAction: function clickAction() {\n\t\t\t\tthis.set('__resolved', false);\n\t\t\t\tthis.sendAction('onResolve');\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.set('__resolved', false);\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/tether-dialog', ['exports', 'ember-modal-dialog/components/deprecated-tether-dialog'], function (exports, _deprecatedTetherDialog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _deprecatedTetherDialog.default;\n    }\n  });\n});","define('busy-app/components/text-box', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-text-box'],\n\t\tclassNameBindings: ['__multiLine:multi-line:single-line'],\n\n\t\tvalue: '',\n\t\tdefaultValue: '',\n\n\t\t__value: null,\n\t\t__multiLine: false,\n\n\t\tdidReceiveAttrs: function didReceiveAttrs() {\n\t\t\tvar value = Ember.get(this, 'value');\n\t\t\tif (Ember.isEmpty(value)) {\n\t\t\t\tvalue = Ember.get(this, 'defaultValue');\n\t\t\t}\n\n\t\t\tvalue = htmlize(value);\n\n\t\t\tvar lines = value.split(/<p><\\/p>/);\n\t\t\tif (lines.length > 1) {\n\t\t\t\tEmber.set(this, '__multiLine', true);\n\t\t\t}\n\n\t\t\tEmber.set(this, '__value', Ember.String.htmlSafe(value));\n\t\t}\n\t});\n\n\n\tvar htmlize = function htmlize(value) {\n\t\tif (typeof value !== 'string') {\n\t\t\treturn value;\n\t\t}\n\n\t\tvalue = value.replace(/(\\r\\n)/g, '</p><p>');\n\t\tvalue = value.replace(/\\n/g, '</p><p>');\n\t\tvalue = value.replace(/\\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');\n\t\tvalue = value.replace(/[ ]{2}/g, '&nbsp;&nbsp;');\n\n\t\treturn '<p>' + value + '</p>';\n\t};\n});","define('busy-app/components/text-field', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.TextField.extend({\n\t\tattributeBindings: ['value'],\n\n\t\tvaluePath: '',\n\t\tmodel: null,\n\n\t\tvalue: Ember.computed('model', function () {\n\t\t\treturn this.getValue();\n\t\t}),\n\n\t\tgetValue: function getValue() {\n\t\t\tvar path = this.get('valuePath');\n\t\t\tvar value = this.get('model');\n\t\t\tif (!Ember.isEmpty(path)) {\n\t\t\t\tvalue = this.get('model.' + path);\n\t\t\t}\n\n\t\t\tif (Ember.isNone(value)) {\n\t\t\t\tvalue = '';\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tsetValue: function setValue(value) {\n\t\t\tvar path = this.get('valuePath');\n\t\t\tif (!Ember.isEmpty(path)) {\n\t\t\t\tthis.set('model.' + path, value);\n\t\t\t} else {\n\t\t\t\tthis.set('model', value);\n\t\t\t}\n\t\t},\n\t\tclick: function click(e) {\n\t\t\te.stopPropagation();\n\t\t\tvar val = this.get('value');\n\t\t\tthis.sendAction('onClick', val);\n\t\t\treturn false;\n\t\t},\n\t\tkeyUp: function keyUp(e) {\n\t\t\tif (e.keyCode === 13 && !Ember.isNone(this.get('enter'))) {\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar val = this.get('value');\n\t\t\tthis.setValue(val);\n\t\t\tif (!Ember.isNone(this.get('onKeyUp'))) {\n\t\t\t\tthis.sendAction('onKeyUp', e.keyCode || e.which, val);\n\t\t\t}\n\t\t},\n\t\tkeyDown: function keyDown(e) {\n\t\t\tvar val = this.get('value');\n\t\t\tif (e.keyCode === 13 && !Ember.isNone(this.get('enter'))) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.sendAction('enter', val);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('onKeyDown'))) {\n\t\t\t\tthis.sendAction('onKeyDown', e.keyCode || e.which, val);\n\t\t\t}\n\t\t},\n\t\tkeyPress: function keyPress(e) {\n\t\t\tif (e.keyCode === 13 && !Ember.isNone(this.get('enter'))) {\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar val = this.get('value');\n\t\t\tif (!Ember.isNone(this.get('onKeyPress'))) {\n\t\t\t\tthis.sendAction('onKeyPress', e.keyCode || e.which, val);\n\t\t\t}\n\t\t},\n\t\tfocusOut: function focusOut(evt) {\n\t\t\tthis.sendAction('onBlur', evt);\n\t\t},\n\t\tfocusIn: function focusIn(evt) {\n\t\t\tthis.sendAction('onFocus', evt);\n\t\t}\n\t});\n});","define('busy-app/components/time/break-entry/add-edit-input', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-break-entry-add-edit-input'],\n\n\t\tmodel: null,\n\t\teditModel: null,\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tshowList: false,\n\t\tshowEdit: false,\n\n\t\thasBreaks: Ember.computed('model.timeEntryBreaks.[]', function () {\n\t\t\treturn this.get('model.timeEntryBreaks.length') > 0;\n\t\t}),\n\n\t\taddNewBreak: function addNewBreak() {\n\t\t\tvar startTime = _utils.Time.date(this.get('model.startTime')).startOf('minute').unix();\n\t\t\tvar endTime = this.get('model.endTime');\n\t\t\tif (Ember.isNone(endTime)) {\n\t\t\t\tendTime = _utils.Time.nistTimestamp();\n\t\t\t}\n\n\t\t\tvar duration = this.get('auth.organization.breakDurationSeconds');\n\t\t\tvar timeRoundingInterval = 1;\n\t\t\tif (this.get('auth.organization.timeRounding') && Ember.isNone(this.get('auth.organization.breakDurationSeconds'))) {\n\t\t\t\ttimeRoundingInterval = this.get('auth.organization.timeRoundingInterval');\n\t\t\t\tduration = timeRoundingInterval;\n\t\t\t}\n\n\t\t\t// convert rounding to minutes\n\t\t\ttimeRoundingInterval = parseInt(timeRoundingInterval / 60, 10);\n\n\t\t\tif (endTime - startTime < duration) {\n\t\t\t\tduration = endTime - startTime - 1;\n\t\t\t}\n\n\t\t\t// set the break to the begining of the\n\t\t\t// time entry and round up to avoid rounding to\n\t\t\t// less than the start time of the entry\n\t\t\tvar breakStart = (0, _roundTime.roundTime)(startTime, timeRoundingInterval, 'up');\n\t\t\tvar breakEnd = (0, _roundTime.roundTime)(breakStart + duration, timeRoundingInterval, 'up');\n\n\t\t\t// try to find a breaktime that does not overlap other breaktimes\n\t\t\tif (this.get('model.timeEntryBreaks')) {\n\t\t\t\tvar breaks = this.get('model.timeEntryBreaks').sortBy('startTime');\n\t\t\t\tbreaks.forEach(function (item) {\n\t\t\t\t\tif (item.get('startTime') <= breakStart && item.get('endTime') >= breakStart || item.get('startTime') <= breakEnd && item.get('endTime') >= breakEnd) {\n\t\t\t\t\t\t// set the start time to the endtime of the last break and round the time up to avoid\n\t\t\t\t\t\t// conflicting with the last entry\n\t\t\t\t\t\tbreakStart = (0, _roundTime.roundTime)(item.get('endTime'), timeRoundingInterval, 'up');\n\t\t\t\t\t\tbreakEnd = (0, _roundTime.roundTime)(breakStart + duration, timeRoundingInterval, 'up');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// if the break is outside the time entry then\n\t\t\t// set it to the end of the time entry and\n\t\t\t// let it overlap another break\n\t\t\tif (breakStart >= endTime || breakEnd >= endTime) {\n\t\t\t\t// set the end time to the time enrty end time and round down to avoid goin over the endtime\n\t\t\t\tbreakEnd = (0, _roundTime.roundTime)(endTime, timeRoundingInterval, 'down');\n\t\t\t\tbreakStart = (0, _roundTime.roundTime)(breakEnd - duration, timeRoundingInterval, 'down');\n\t\t\t}\n\n\t\t\tif (breakStart < startTime) {\n\t\t\t\tbreakStart = (0, _roundTime.roundTime)(startTime, timeRoundingInterval, 'up');\n\t\t\t}\n\n\t\t\tthis.set('editModel', this.get('model').createBreak(breakStart, breakEnd));\n\t\t},\n\n\n\t\tactions: {\n\t\t\tclickAction: function clickAction() {\n\t\t\t\tif (this.get('hasBreaks')) {\n\t\t\t\t\t// show list\n\t\t\t\t\tthis.set('showList', true);\n\t\t\t\t} else {\n\t\t\t\t\t// show add new\n\t\t\t\t\tthis.addNewBreak();\n\t\t\t\t\tthis.set('showEdit', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseListAction: function closeListAction() {\n\t\t\t\tthis.set('showList', false);\n\t\t\t},\n\t\t\tcreateNewAction: function createNewAction() {\n\t\t\t\t// show add new\n\t\t\t\tthis.addNewBreak();\n\t\t\t\tthis.set('showEdit', true);\n\t\t\t},\n\t\t\teditBreakAction: function editBreakAction(item) {\n\t\t\t\titem.set('_isEdit', true);\n\n\t\t\t\t// open edit break dialog\n\t\t\t\tthis.set('editModel', item);\n\t\t\t\tthis.set('showList', false);\n\t\t\t\tthis.set('showEdit', true);\n\t\t\t},\n\t\t\tcloseEditAction: function closeEditAction() {\n\t\t\t\tvar editModel = this.get('editModel');\n\t\t\t\tif (!Ember.isNone(this.get('model')) && !Ember.isNone(editModel) && !editModel.get('isDestroyed')) {\n\t\t\t\t\tif (!editModel.get('_isEdit')) {\n\t\t\t\t\t\tthis.get('model').calculateTime();\n\n\t\t\t\t\t\tvar _break = this.get('model.timeEntryBreaks').findBy('id', editModel.id);\n\t\t\t\t\t\tif (!Ember.isNone(_break)) {\n\t\t\t\t\t\t\t_break.set('_isValid', editModel.get('_isValid'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!editModel.get('_isValid')) {\n\t\t\t\t\t\t\tthis.get('model').removeBreak(editModel);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\teditModel.set('_isEdit', false);\n\t\t\t\t}\n\t\t\t\tthis.set('editModel', null);\n\t\t\t\tthis.set('showEdit', false);\n\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t},\n\t\t\teditSavedAction: function editSavedAction() {//model, dialog) {\n\t\t\t\t//this.validateBreak(timeEntryBreak, dialog);\n\t\t\t},\n\t\t\teditDeleteAction: function editDeleteAction() {}\n\t\t}\n\t});\n});","define('busy-app/components/time/break-entry/edit', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-break-entry-edit'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tmodel: null,\n\t\ttimeEntry: null,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\tstartBreakTime: null,\n\t\tendBreakTime: null,\n\t\ttotalBreakTime: 0,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setTimeRoundingInterval();\n\n\t\t\tthis.set('endBreakTime', (0, _roundTime.roundOrgTime)(this.get('auth.organization'), this.get('model.endTime') || _utils.Time.date().startOf('minute').unix(), { isBreak: true }));\n\t\t\tthis.set('startBreakTime', (0, _roundTime.roundOrgTime)(this.get('auth.organization'), this.get('model.startTime'), { isBreak: true }));\n\n\t\t\tthis.set('minDate', _utils.Time.date().subtract(89, 'days').unix());\n\t\t\tthis.set('maxDate', _utils.Time.date().add(1, 'days').unix());\n\n\t\t\tthis.totalBreakTimeObserver();\n\n\t\t\tvar headerTitle = (0, _utils.loc)('Edit Break');\n\t\t\tvar deleteText = (0, _utils.loc)('Delete');\n\t\t\tif (this.get('model.isNew')) {\n\t\t\t\tdeleteText = (0, _utils.loc)('Remove');\n\t\t\t\tif (!this.get('model._isEdit')) {\n\t\t\t\t\theaderTitle = (0, _utils.loc)('Add Break');\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.set('headerTitle', headerTitle);\n\t\t\tthis.set('deleteText', deleteText);\n\t\t},\n\t\tsetTimeRoundingInterval: function setTimeRoundingInterval() {\n\t\t\tvar interval = 1;\n\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\tinterval = this.get('auth.organization.timeRoundingInterval') / 60;\n\t\t\t}\n\n\t\t\tthis.set('timeRoundingInterval', interval);\n\t\t},\n\n\n\t\t/**\n    * updates the end time when the totalTime is adjusted\n    *\n    * @public\n    * @method adjustNewEndTime\n    * @returns {void}\n    */\n\t\tadjustNewEndTime: Ember.observer('totalBreakTime', 'startBreakTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startBreakTime')) && !Ember.isNone(this.get('endBreakTime'))) {\n\t\t\t\tvar start = this.get('startBreakTime');\n\t\t\t\tvar end = this.get('endBreakTime');\n\t\t\t\tvar total = this.get('totalBreakTime');\n\n\t\t\t\tif (end - start !== total) {\n\t\t\t\t\tvar newTotal = total - (end - start);\n\t\t\t\t\tthis.set('endBreakTime', _utils.Time.date(end).add(newTotal, 'seconds').unix());\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/**\n    * sets up and updates the total time for adding a break\n    *\n    * @public\n    * @method totalBreakTimeObserver\n    * @returns {void}\n    */\n\t\ttotalBreakTimeObserver: Ember.observer('startBreakTime', 'endBreakTime', function () {\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isNone(this.get('startBreakTime')) && !Ember.isNone(this.get('endBreakTime'))) {\n\t\t\t\tvar startTime = this.get('startBreakTime');\n\t\t\t\tvar endTime = this.get('endBreakTime');\n\n\t\t\t\tthis.set('model.startTime', startTime);\n\t\t\t\tthis.set('model.endTime', endTime);\n\n\t\t\t\tseconds = endTime - startTime;\n\t\t\t}\n\n\t\t\tthis.set('totalBreakTime', seconds);\n\t\t}),\n\n\t\t/**\n    * validates the break to make sure it can be saved later\n    *\n    * @public\n    * @method validate\n    * @param model {DS.Model}\n    * @param dialog {Component}\n    */\n\t\tvalidate: function validate(model) {\n\t\t\treturn model.get('timeEntry').then(function (entry) {\n\t\t\t\treturn model.validate(entry);\n\t\t\t});\n\t\t},\n\t\toverrideWarning: function overrideWarning(model) {\n\t\t\tvar forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tEmber.set(model, '_isValid', forceSave);\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tsaveAction: function saveAction(dialog) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t\tvar model = this.get('model');\n\t\t\t\treturn this.overrideWarning(model, forceSave).then(function () {\n\t\t\t\t\tif (!forceSave) {\n\t\t\t\t\t\tvar startTime = _this.get('startBreakTime');\n\t\t\t\t\t\tvar endTime = _this.get('endBreakTime');\n\n\t\t\t\t\t\tif (_this.get('features.paidBreak')) {\n\t\t\t\t\t\t\tvar paid = _this.get('currentBreakPaidBreak');\n\t\t\t\t\t\t\tmodel.set('paid', paid);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.get('startTime') !== startTime) {\n\t\t\t\t\t\t\tmodel.set('startTime', startTime);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.get('endTime') !== endTime) {\n\t\t\t\t\t\t\tmodel.set('endTime', endTime);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.get('hasDirtyAttributes')) {\n\t\t\t\t\t\t\treturn _this.validate(model);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\tvar model = this.get('model');\n\t\t\t\treturn Ember.RSVP.resolve(this.get('model.timeEntry')).then(function (entry) {\n\t\t\t\t\tif (!Ember.isNone(entry) && !Ember.isNone(model)) {\n\t\t\t\t\t\treturn entry.removeBreak(model);\n\t\t\t\t\t}\n\t\t\t\t\treturn entry;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/break-entry/list', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-break-entry-list'],\n\n\t\tmodel: null,\n\n\t\tactions: {\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\taddNewAction: function addNewAction() {\n\t\t\t\tthis.sendAction('onCreate');\n\t\t\t},\n\t\t\teditAction: function editAction(item) {\n\t\t\t\tif (!Ember.isNone(item.get('endTime'))) {\n\t\t\t\t\tthis.sendAction('onEdit', item);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/full-report/signature-notification-bar', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\n\t\tmemberTimeDocument: null,\n\t\tpayPeriod: null,\n\t\tisTimecardMine: null,\n\t\tisSupervisor: null,\n\n\t\tshowResignInfo: false,\n\n\t\tneedsEitherSignature: Ember.computed.or('needsEmployeeSignature', 'needsSupervisorSignature'),\n\t\tneedsBothSignature: Ember.computed.and('needsEmployeeSignature', 'needsSupervisorSignature'),\n\t\tneedsEmployeeSignature: Ember.computed.and('signature.isTimecardSigningEnabled', 'memberTimeDocument.needsSelfSignature'),\n\t\tneedsSupervisorSignature: Ember.computed.and('signature.isTimecardSupervisorSigningEnabled', 'memberTimeDocument.needsAuthoritativeSignature'),\n\n\t\tneedsEitherSignatureResign: Ember.computed.or('needsEmployeeSignatureResign', 'needsSupervisorSignatureResign'),\n\t\tneedsBothSignatureResign: Ember.computed.and('needsEmployeeSignatureResign', 'needsSupervisorSignatureResign'),\n\t\tneedsEmployeeSignatureResign: Ember.computed.and('signature.isTimecardSigningEnabled', 'memberTimeDocument.needsSelfSignatureResign'),\n\t\tneedsSupervisorSignatureResign: Ember.computed.and('signature.isTimecardSupervisorSigningEnabled', 'memberTimeDocument.needsAuthoritativeSignatureResign'),\n\n\t\tisSupervisorMode: Ember.computed('isSupervisor', 'features.signatures-supervisor', 'signature.isTimecardSupervisorSigningEnabled', function () {\n\t\t\treturn this.get('isSupervisor') && this.get('features.signatures-supervisor') && this.get('signature.isTimecardSupervisorSigningEnabled');\n\t\t}),\n\n\t\tsignatureState: Ember.computed('isTimecardMine', 'isSupervisor', 'payPeriod', 'features', 'signature', 'memberTimeDocument', function () {\n\t\t\treturn this.get('signature').getSignatureState(this.get('isTimecardMine'), this.get('isSupervisor'), this.get('payPeriod'), this.get('features'), this.get('signature'), this.get('memberTimeDocument'));\n\t\t}),\n\n\t\t// possible states\n\t\t//\n\t\t// \t- features.signatures disabled (!features.signatures)\n\t\t// \t\t- no notifications displayed\n\t\t//\n\t\t// \t- no signature needed (!needsEitherSignature)\n\t\t// \t\t- no notifications displayed\n\t\t//\n\t\t// \t- features.signatures-supervisor disabled (!features.signatures-supervisor)\n\t\t// \t\t- no employee signature needed (!needsEmployeeSignature)\n\t\t// \t\t\t- no notifications displayed\n\t\t// \t\t- employee viewing own time card (isTimecardMine)\n\t\t// \t  \t- no signature needed (!needsEmployeeSignature)\n\t\t// \t\t  \t\t- no notification\n\t\t// \t  \t- needs signature, NO previous signatures (needsEmployeeSignature && !needsEmployeeSignatureResign)\n\t\t// \t  \t\t- \"Ready to sign below\"\n\t\t// \t  \t- needs signature, has previous signatures (needsEmployeeSignature && needsEmployeeSignatureResign)\n\t\t// \t  \t\t- \"Please re-sign below\"\n\t\t//\n\t\t//\n\t\t// \t- features.signatures-supervisor enabled (features.signatures-supervisor)\n\t\t// \t\t- employee viewing own time card (isTimecardMine)\n\t\t// \t\t  - can NOT edit own time (!isSupervisor)\n\t\t// \t\t  \t- no signature needed (!needsEmployeeSignature)\n\t\t// \t\t\t  \t\t- no notification\n\t\t// \t\t  \t- needs signature, NO previous signatures (needsEmployeeSignature && !needsEmployeeSignatureResign)\n\t\t// \t\t  \t\t- \"Ready to sign below\"\n\t\t// \t\t  \t- needs signature, has previous signatures (needsEmployeeSignature && needsEmployeeSignatureResign)\n\t\t// \t\t  \t\t- \"Please re-sign below\"\n\t\t// \t\t  - can edit own time (isSupervisor)\n\t\t// \t\t  \t- no signature needed (!needsEitherSignature)\n\t\t// \t\t\t  \t- no notification\n\t\t// \t\t  \t- needs both employee and supervisor signature (needsBothSignature)\n\t\t// \t\t  \t\t- \"Ready to sign below\"\n\t\t// \t\t  \t- needs only employee signature (needsEmployeeSignature)\n\t\t// \t\t  \t\t- \"Ready for employee signature below\"\n\t\t// \t\t  \t- needs only supervisor signature (needsSupervisorSignature)\n\t\t// \t\t  \t\t- \"Ready for supervisor signature below\"\n\t\t//\n\n\t\tnotificationText: Ember.computed('features.{signatures}', 'signature.{isTimecardSigningEnabled}', 'signatureState', 'isSupervisorMode', 'needsBothSignature', 'needsEmployeeSignature', 'needsSupervisorSignature', function () {\n\t\t\tvar resignText = (0, _utils.loc)('Please re-sign below');\n\t\t\tvar signText = (0, _utils.loc)('Ready to sign below');\n\t\t\tvar employeeSignText = (0, _utils.loc)('Ready for employee signature below');\n\t\t\tvar supervisorSignText = (0, _utils.loc)('Ready for supervisor signature below');\n\t\t\tvar isSigningEnabled = this.get('features.signatures') && this.get('signature.isTimecardSigningEnabled');\n\t\t\tvar isSignatureNeeded = this.get('signatureState') === 'Sign' || this.get('signatureState') === 'Re-Sign';\n\n\t\t\tvar notificationText = null;\n\n\t\t\t// Logger.info(this, 'notificationText', {isSigningEnabled, isSignatureNeeded});\n\n\t\t\t// feature is not enabled, or no signature is needed\n\t\t\tif (!isSigningEnabled || !isSignatureNeeded) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Logger.info(this, 'notificationText', this.getProperties(\n\t\t\t// \t'features.signatures',\n\t\t\t// \t'signature.isTimecardSigningEnabled',\n\t\t\t// \t'signatureState', 'isSupervisorMode',\n\t\t\t// \t'needsBothSignature', 'needsEmployeeSignature', 'needsSupervisorSignature',\n\t\t\t// ));\n\n\t\t\t// supervisor mode is disabled, or not allowed\n\t\t\tif (!this.get('isSupervisorMode')) {\n\t\t\t\tif (this.get('signatureState') === 'Sign') {\n\t\t\t\t\tnotificationText = signText;\n\t\t\t\t} else if (this.get('signatureState') === 'Re-Sign') {\n\t\t\t\t\tnotificationText = resignText;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// supervisor mode enabled and allowed\n\t\t\telse {\n\t\t\t\t\tif (this.get('signatureState') === 'Re-Sign') {\n\t\t\t\t\t\tnotificationText = resignText;\n\t\t\t\t\t} else if (this.get('signatureState') === 'Sign') {\n\t\t\t\t\t\tif (this.get('needsBothSignature')) {\n\t\t\t\t\t\t\tnotificationText = signText;\n\t\t\t\t\t\t} else if (this.get('needsEmployeeSignature')) {\n\t\t\t\t\t\t\tnotificationText = employeeSignText;\n\t\t\t\t\t\t} else if (this.get('needsSupervisorSignature')) {\n\t\t\t\t\t\t\tnotificationText = supervisorSignText;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\treturn notificationText;\n\t\t}),\n\n\t\tactions: {\n\t\t\topenResignInfo: function openResignInfo() {\n\t\t\t\tthis.set('showResignInfo', true);\n\t\t\t},\n\t\t\tcloseResignInfo: function closeResignInfo() /* dialog */{\n\t\t\t\tthis.set('showResignInfo', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/full-report/signatures', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tauth: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\n\t\tmodel: null,\n\t\tisSupervisor: null,\n\n\t\tshowSignaturePad: false,\n\t\tshowSupervisorSignaturePad: false,\n\t\tsignatureSvg: null,\n\t\tsignaturePadCommand: null,\n\n\t\thasOpenTimeEntries: Ember.computed.bool('model.hasOpenTime'),\n\n\t\tshowEmployeeSignature: Ember.computed.bool('model.memberTimeDocument.hasValidSelfSignature'),\n\t\trequestEmployeeSignature: Ember.computed('signature.isTimecardSigningEnabled', 'model.{currentPeriod.isSignable,memberTimeDocument.hasValidSelfSignature}', function () {\n\t\t\treturn this.get('signature.isTimecardSigningEnabled') && this.get('model.currentPeriod.isSignable') && !this.get('model.memberTimeDocument.hasValidSelfSignature');\n\t\t}),\n\n\t\tshowSupervisorSignature: Ember.computed.bool('model.memberTimeDocument.hasValidAuthoritativeSignature'),\n\t\trequestSupervisorSignature: Ember.computed('isSupervisor', 'signature.isTimecardSigningEnabled', 'model.{currentPeriod.isSignable,memberTimeDocument.hasValidAuthoritativeSignature}', function () {\n\t\t\treturn this.get('isSupervisor') && this.get('signature.isTimecardSigningEnabled') && this.get('model.currentPeriod.isSignable') && !this.get('model.memberTimeDocument.hasValidAuthoritativeSignature');\n\t\t}),\n\n\t\tshowOpenTimeEntriesWarning: Ember.computed('hasOpenTimeEntries', 'showSignaturePad', 'showSupervisorSignaturePad', function () {\n\t\t\treturn this.get('hasOpenTimeEntries') && (this.get('showSignaturePad') || this.get('showSupervisorSignaturePad'));\n\t\t}),\n\n\t\tacceptSignature: function acceptSignature(dialog, signatureType) {\n\t\t\tvar _this = this;\n\n\t\t\tvar signatureSvg = this.get('signatureSvg');\n\t\t\tvar model = this.get('model');\n\t\t\tvar memberTimeDocument = this.get('model.memberTimeDocument');\n\n\t\t\t_logger.default.log(this, 'acceptSignature', { dialog: dialog, signatureType: signatureType, signatureSvg: signatureSvg, memberTimeDocument: memberTimeDocument, model: model });\n\n\t\t\t// Assert.isString(signatureSvg);\n\t\t\t_utils.Assert.isObject(memberTimeDocument);\n\n\t\t\tvar signatureObject = this.get('signature').createSignature(signatureType, memberTimeDocument, signatureSvg);\n\n\t\t\tdialog.showSavingMessage();\n\n\t\t\tif (Ember.isNone(signatureSvg)) {\n\t\t\t\treturn dialog.showErrorMessage((0, _utils.loc)('Please sign the above pad.'));\n\t\t\t} else {\n\t\t\t\tvar saveMethod = signatureType === 'selfSignature' ? 'attachSignatureAndSave' : 'attachSupervisorSignatureAndSave';\n\n\t\t\t\treturn this.get('signature')[saveMethod](memberTimeDocument, signatureObject).catch(function (err) {\n\t\t\t\t\t_logger.default.error(_this, { err: err });\n\n\t\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn dialog.showSavedMessage('', 0);\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn _this.sendAction('refreshRoute');\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn _this.send('closeSignaturePad');\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenSignaturePad: function openSignaturePad() {\n\t\t\t\tthis.set('showSignaturePad', true);\n\t\t\t},\n\t\t\tacceptSignature: function acceptSignature(dialog) {\n\t\t\t\treturn this.acceptSignature(dialog, 'selfSignature');\n\t\t\t},\n\t\t\topenSupervisorSignaturePad: function openSupervisorSignaturePad() {\n\t\t\t\tthis.set('showSupervisorSignaturePad', true);\n\t\t\t},\n\t\t\tacceptSupervisorSignature: function acceptSupervisorSignature(dialog) {\n\t\t\t\treturn this.acceptSignature(dialog, 'authoritativeSignature');\n\t\t\t},\n\t\t\tcloseSignaturePad: function closeSignaturePad() {\n\t\t\t\tthis.set('showSignaturePad', false);\n\t\t\t\tthis.set('showSupervisorSignaturePad', false);\n\t\t\t},\n\t\t\tclearSignaturePad: function clearSignaturePad() {\n\t\t\t\tthis.set('signaturePadCommand', { command: 'clear' });\n\t\t\t},\n\t\t\tonSignatureData: function onSignatureData(signatureSvg) {\n\t\t\t\tthis.set('signatureSvg', signatureSvg);\n\t\t\t}\n\t\t}\n\n\t});\n});","define('busy-app/components/time/pay-period/list', ['exports', '@busy-web/utils', 'busy-app/mixins/pay-period-loader'], function (exports, _utils, _payPeriodLoader) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend(_payPeriodLoader.default, {\n\t\tclassNames: ['c-time-card-list'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\t//payPeriods: service('pay-period'),\n\t\tsignature: Ember.inject.service('signature'),\n\n\t\tmember: null,\n\t\tscrollElement: '.index-scrolling-list > section',\n\n\t\tinitialPageSize: 10,\n\t\textendedPageSize: 30,\n\t\topenEntries: null,\n\t\theaderList: null,\n\t\tisArchived: false,\n\t\tdirtyFlag: false,\n\n\t\torganization: null,\n\t\tisLoadingSignatureState: false,\n\t\tclosedPayPeriod: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.set('isLoading', true);\n\n\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'new-time-entry', value: (0, _utils.loc)('New Time Entry') }), Ember.Object.create({ key: 'new-time-off', value: (0, _utils.loc)('Add Time Off') })]);\n\n\t\t\tthis.set('headerList', [(0, _utils.loc)(\"Pay Period\"), (0, _utils.loc)(\"Reg Time\"), (0, _utils.loc)(\"Overtime\"), (0, _utils.loc)(\"Doubletime\"), (0, _utils.loc)(\"Total\")]);\n\n\t\t\tthis.set('organization', this.get('auth.organization.content'));\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.getPayPeriods();\n\t\t},\n\n\n\t\tpayPeriodSeconds: Ember.computed('openPayPeriods.[]', 'model.[]', function () {\n\t\t\treturn this.get('unionedPayPeriodSeconds');\n\t\t}),\n\n\t\t/**\n   * loads the initail data for showing ten\n   * rows and the load more button\n   *\n   * @method getPayPeriods\n   */\n\t\tgetPayPeriods: function getPayPeriods() {\n\t\t\tvar _this = this;\n\n\t\t\tvar memberId = this.get('member.id');\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\t// load pay periods here\n\t\t\t\tthis.getPayPeriodMemberSeconds(memberId, this.get('initialPageSize'), true).then(function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t// set autoload to true if no more results can be found to\n\t\t\t\t\t\t// hide the load more button.\n\t\t\t\t\t\t_this.set('autoLoad', !_this.get('hasLoadMore'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.addObserver('member.id', this, 'getPayPeriods');\n\t\t\t}\n\t\t},\n\t\tgetPayPeriodMemberSeconds: function getPayPeriodMemberSeconds(memberId) {\n\t\t\tvar pageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n\t\t\tvar autoLoad = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3);\n\t\t\t_utils.Assert.isUUID(memberId);\n\t\t\t_utils.Assert.isNumber(pageSize);\n\t\t\t_utils.Assert.isBoolean(autoLoad);\n\n\t\t\t// use scroll loaded load method.\n\t\t\t// this call is only used to setup the inital load and the call\n\t\t\t// to start the auto loader. The loaded will handle all calls beyond that.\n\t\t\treturn this.load(memberId, 0, pageSize, true, autoLoad);\n\t\t},\n\n\n\t\t/**\n   * Event callback in scroll loader gets called after the\n   * models have loaded.\n   *\n   */\n\t\t_afterLoad: Ember.on('afterLoad', function (models) {\n\t\t\t// eslint-disable-line ember/no-on-calls-in-components\n\t\t\t// handle addition loading after pay period is loaded.\n\t\t\tthis.setMemberTimeDocuments(models);\n\t\t}),\n\n\t\t/**\n   * generate pay periods to cover all open entries\n   *\n   * @property openPayPeriods\n   */\n\t\t//\topenPayPeriods: computed('openEntries', function() {\n\t\t//\t\tconst openEntries = this.get('openEntries');\n\t\t//\t\tif (isNone(openEntries)) {\n\t\t//\t\t\treturn [];\n\t\t//\t\t}\n\t\t//\n\t\t//\t\tconst mockedOpenPayPeriods = openEntries.map(entry => {\n\t\t//\t\t\treturn this.getMockedPayPeriod(entry.get('startTime'));\n\t\t//\t\t});\n\t\t//\n\t\t//\t\treturn mockedOpenPayPeriods;\n\t\t//\t}),\n\n\t\t//\tgetMockedPayPeriod(startTime) {\n\t\t//\t\tAssert.isNumber(startTime);\n\t\t//\n\t\t//\t\tconst payPeriod = this.get('payPeriod').getPayPeriod(startTime);\n\t\t//\n\t\t//\t\t// matchup with expected properties\n\t\t//\t\tconst model = this.get('store').createRecord('pay-period-member-seconds', {\n\t\t//\t\t\tstartTime: payPeriod.get('startDate').unix(),\n\t\t//\t\t\tendTime: payPeriod.get('endDate').unix(),\n\t\t//\t\t\tregularSeconds: 0,\n\t\t//\t\t\tovertimeSeconds: 0,\n\t\t//\t\t\tdoubletimeSeconds: 0,\n\t\t//\t\t});\n\t\t//\n\t\t//\t\treturn model;\n\t\t//\t},\n\n\t\t/**\n   * get the pay periods with open entries not covered in the main payPeriodSeconds recordset\n   *\n   * @property missingOpenPayPeriods\n   */\n\t\t//\tmissingOpenPayPeriods: computed('openPayPeriods.[]', 'model.[]', function() {\n\t\t//\t\tconst openPayPeriods = this.get('openPayPeriods');\n\t\t//\t\tconst closedPayPeriodSeconds = this.get('model');\n\t\t//\n\t\t//\t\t// no openPayPeriods, short circuit\n\t\t//\t\tif (isNone(openPayPeriods)) {\n\t\t//\t\t\treturn [];\n\t\t//\t\t} else if (isNone(closedPayPeriodSeconds)) { // no closedPayPeriods, no need to merge, just return the openPayPeriods\n\t\t//\t\t\treturn openPayPeriods;\n\t\t//\t\t}\n\t\t//\n\t\t//\t\t// remove openPayPeriods already covered by closedPayPeriodSeconds\n\t\t//\t\tconst missingOpenPayPeriods = openPayPeriods.reject((openPayPeriod) => {\n\t\t//\t\t\treturn this.isOpenPeriodCoveredByClosedPeriods(openPayPeriod);\n\t\t//\t\t});\n\t\t//\n\t\t//\t\treturn missingOpenPayPeriods;\n\t\t//\t}),\n\n\t\t//\tisOpenPeriodCoveredByClosedPeriods(openPayPeriod) {\n\t\t//\t\treturn this.get('model').any((closedPayPeriod) => {\n\t\t//\t\t\treturn (openPayPeriod.get('start') >= closedPayPeriod.get('startTime') && openPayPeriod.get('end') <= closedPayPeriod.get('endTime'));\n\t\t//\t\t});\n\t\t//\t},\n\n\t\t/**\n   * combine closedPayPeriodSeconds and missingOpenPayPeriods, results are unique\n   *\n   * @property unionedPayPeriodSeconds\n   */\n\t\t//\tunionedPayPeriodSeconds: union('missingOpenPayPeriods.[]', 'model.[]'),\n\n\t\t// payPeriodDateString(payPeriod) {\n\t\t// \tconst start = payPeriod.get('startDate');\n\t\t// \tconst end = payPeriod.get('endDate');\n\t\t//\n\t\t// \tAssert.isMoment(start);\n\t\t// \tAssert.isMoment(end);\n\t\t//\n\t\t// \tconst startString = Time.timeFormat(start, 'MMM D');\n\t\t// \tconst endString = Time.timeFormat(end, 'MMM D, YYYY');\n\t\t//\n\t\t// \treturn `${startString} - ${endString}`;\n\t\t// },\n\n\t\topenCard: function openCard(payPeriod) {\n\t\t\tvar applicationRoute = Ember.getOwner(this).lookup('route:application');\n\t\t\tvar queryParams = {\n\t\t\t\tstart: payPeriod.get('startTime'),\n\t\t\t\tend: payPeriod.get('endTime'),\n\t\t\t\tmember_id: this.get('member.id')\n\t\t\t};\n\n\t\t\treturn applicationRoute.transitionTo('time-card.pay-period', { queryParams: queryParams });\n\t\t},\n\n\n\t\t/**\n   * hides the load more button and loads the scroll loader\n   *\n   * @method startAutoLoad\n   */\n\t\tstartAutoLoad: function startAutoLoad() {\n\t\t\t// start auto loader\n\t\t\tthis.set('autoLoad', true);\n\n\t\t\t// get the 1st page for the auto loader.\n\t\t\treturn this.getPayPeriodMemberSeconds(this.get('member.id'), this.get('extendedPageSize'), true);\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tif (this.hasObserverFor('member.id')) {\n\t\t\t\tthis.removeObserver('member.id', this, 'getPayPeriods');\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   *\tSignatures Feature\n   *\n   */\n\n\t\t/**\n   * If the signatures feature is enabled, attach some properties to determine signature state\n   *\n   * @private\n   * @method setMemberTimeDocuments\n   * @param {Models.PayPeriodMemberSeconds[]} payPeriod\n   * @return {EmberObject}\n   */\n\t\tsetMemberTimeDocuments: function setMemberTimeDocuments(payPeriods) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (this.get('features.signatures') && this.get('signature.isTimecardSigningEnabled')) {\n\t\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t\t_utils.Assert.isArray(payPeriods);\n\n\t\t\t\tif (!Ember.isEmpty(payPeriods)) {\n\t\t\t\t\tvar queryParams = {\n\t\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t\t_gte: { start_time: this.get('organization.signatureDate') }\n\t\t\t\t\t};\n\n\t\t\t\t\t// only query against `memberTimeDocument` once, pass this results though as a cache\n\t\t\t\t\tthis.set('isLoadingSignatureState', true);\n\t\t\t\t\treturn this.get('signature').queryMemberTimeDocuments(queryParams).then(function (memberTimeDocuments) {\n\t\t\t\t\t\tvar signatureStatePromises = payPeriods.map(function (payPeriod) {\n\t\t\t\t\t\t\treturn _this2.setPayPeriodMemberTimeDocument(payPeriod, memberTimeDocuments);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn Ember.RSVP.all(signatureStatePromises);\n\t\t\t\t\t}).finally(function () {\n\t\t\t\t\t\t_this2.set('isLoadingSignatureState', false);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetPayPeriodMemberTimeDocument: function setPayPeriodMemberTimeDocument(payPeriod, memberTimeDocuments) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isObject(payPeriod);\n\t\t\t_utils.Assert.isArray(memberTimeDocuments);\n\n\t\t\treturn this.get('signature').getStateForPayPeriod(payPeriod, memberTimeDocuments).then(function (memberTimeDocument) {\n\t\t\t\tpayPeriod.set('memberTimeDocument', memberTimeDocument);\n\t\t\t\treturn payPeriod;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tstartAutoLoadAction: function startAutoLoadAction() {\n\t\t\t\tthis.startAutoLoad();\n\t\t\t},\n\t\t\topenCardAction: function openCardAction() {\n\t\t\t\tthis.openCard.apply(this, arguments);\n\t\t\t},\n\t\t\treloadCardsAction: function reloadCardsAction() {\n\t\t\t\tthis.reloadCards.apply(this, arguments);\n\t\t\t},\n\t\t\tloadMoreAction: function loadMoreAction() {\n\t\t\t\tthis.loadMore.apply(this, arguments);\n\t\t\t},\n\t\t\tviewPDFAction: function viewPDFAction() {\n\t\t\t\tthis.viewPDF.apply(this, arguments);\n\t\t\t},\n\t\t\tviewRequestedSignatureAction: function viewRequestedSignatureAction() {\n\t\t\t\tthis.viewRequestedSignature.apply(this, arguments);\n\t\t\t},\n\t\t\tviewSignedPDFAction: function viewSignedPDFAction() {\n\t\t\t\tthis.viewSignedPDF.apply(this, arguments);\n\t\t\t},\n\t\t\tsetTimeTypeDecAction: function setTimeTypeDecAction() {\n\t\t\t\tthis.setTimeTypeDec.apply(this, arguments);\n\t\t\t},\n\t\t\tsetTimeTypeHMAction: function setTimeTypeHMAction() {\n\t\t\t\tthis.setTimeTypeHM.apply(this, arguments);\n\t\t\t},\n\t\t\tselectItemAction: function selectItemAction(item) {\n\t\t\t\tif (item.get('key') === 'new-time-entry') {\n\t\t\t\t\tthis.set('showNewTimeEntryDialog', true);\n\t\t\t\t} else if (item.get('key') === 'new-time-off') {\n\t\t\t\t\tthis.set('isDisabled', false);\n\t\t\t\t\tthis.set('showNewTimeOffDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseNewTimeEntryDialog: function closeNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', false);\n\t\t\t},\n\t\t\tcloseNewTimeOffDialog: function closeNewTimeOffDialog() {\n\t\t\t\tthis.set('showNewTimeOffDialog', false);\n\t\t\t},\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.getPayPeriods();\n\t\t\t},\n\t\t\treloadSync: function reloadSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/pay-period/signature-breadcrumb', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: 'span',\n\n\t\taccess: Ember.inject.service(),\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\n\t\tmember: null,\n\t\tpayPeriodSeconds: null,\n\t\tmemberTimeDocument: null,\n\n\t\tisTimecardMine: Ember.computed('auth.memberId', 'member.id', function () {\n\t\t\treturn this.get('auth.memberId') === this.get('member.id');\n\t\t}),\n\n\t\tisSupervisor: Ember.computed('member', function () {\n\t\t\tvar supervisorAction = 'manageTimeEntries';\n\t\t\tvar member = this.get('member');\n\n\t\t\tif (Ember.isNone(member) || Ember.isNone(member.get('id'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.get('access').canTakeActionFor(supervisorAction, member);\n\t\t}),\n\n\t\tsignatureState: Ember.computed('isTimecardMine', 'isSupervisor', 'payPeriodSeconds.isSignable', 'features.{signatures,signatures-supervisor}', 'signature.{isTimecardSigningEnabled,isTimecardSupervisorSigningEnabled}', 'memberTimeDocument.{hasValidSelfSignature,needsSelfSignatureResign,hasBothValidSignatures,needsEitherSignatureResign}',\n\t\t// 'payPeriodSeconds.memberTimeDocument.needsEitherSignatureResign',\n\t\t// 'payPeriodSeconds.memberTimeDocument.needsAuthoritativeSignatureResign',\n\t\tfunction () {\n\n\t\t\tif (Ember.isNone(this.get('isTimecardMine')) || Ember.isNone(this.get('isSupervisor')) || Ember.isNone(this.get('payPeriodSeconds')) || Ember.isNone(this.get('features')) || Ember.isNone(this.get('signature'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.get('signature').getSignatureState(this.get('isTimecardMine'), this.get('isSupervisor'), this.get('payPeriodSeconds'), this.get('features'), this.get('signature'), this.get('memberTimeDocument'));\n\t\t}),\n\n\t\tsignatureStateClass: Ember.computed('signatureState', function () {\n\t\t\treturn {\n\t\t\t\t'Signed': 'd-button text',\n\t\t\t\t'Sign': 'd-button blue',\n\t\t\t\t'Re-Sign': 'd-button red'\n\t\t\t}[this.get('signatureState')];\n\t\t}),\n\n\t\tactions: {\n\t\t\topenFullReport: function openFullReport(payPeriod) {\n\t\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tstart: payPeriod.get('startTime'),\n\t\t\t\t\tmember_id: payPeriod.get('memberId'),\n\t\t\t\t\tend: payPeriod.get('endTime')\n\t\t\t\t};\n\n\t\t\t\treturn this.get('router').transitionTo('time-card.full-report', { queryParams: queryParams });\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/pay-period/time-off-list', ['exports', 'busy-app/mixins/model-loader'], function (exports, _modelLoader) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend(_modelLoader.default, {\n\t\tclassNames: ['v-time-off-list'],\n\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmember: null,\n\n\t\tscrollElement: '.index-scrolling-list > section',\n\t\tinitialPageSize: 10,\n\t\textendedPageSize: 30,\n\t\tisArchived: false,\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\t\t\tthis.getTimeOff();\n\t\t},\n\t\tgetTimeOff: function getTimeOff() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('member.id'))) {\n\t\t\t\t// get query params\n\t\t\t\tvar query = this.getQuery(this.get('initialPageSize'));\n\n\t\t\t\t// load time off entries here\n\t\t\t\tthis.get('store').query('time-off', query).then(function (timeOffEntries) {\n\t\t\t\t\t// set autoload to true if no more results can be found to\n\t\t\t\t\t// hide the load more button.\n\t\t\t\t\t_this.set('autoLoad', Ember.isNone(timeOffEntries.get('meta.next')));\n\n\t\t\t\t\t// set models\n\t\t\t\t\t_this.set('model', timeOffEntries);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// add an observer to call this method again later.\n\t\t\t\tthis.addObserver('member.id', this, 'getTimeOff');\n\t\t\t}\n\t\t},\n\t\tgetQuery: function getQuery(pageSize) {\n\n\t\t\t// setup the queryParams\n\t\t\treturn {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_desc: ['date_stamp'],\n\t\t\t\tpage: 1,\n\t\t\t\tpage_size: pageSize\n\t\t\t};\n\t\t},\n\n\n\t\t/**\n   * hides the load more button and loads the scroll loader\n   *\n   * @method startAutoLoad\n   */\n\t\tstartAutoLoad: function startAutoLoad() {\n\t\t\tvar query = this.getQuery(this.get('extendedPageSize'));\n\t\t\tthis.load('time-off', query, true, true);\n\t\t},\n\t\topenCard: function openCard(timeOffEntry) {\n\t\t\tvar route = Ember.getOwner(this).lookup('route:application');\n\n\t\t\troute.transitionTo('time-card.time-off-entry', {\n\t\t\t\tqueryParams: {\n\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\tid: timeOffEntry.get('id')\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\tif (this.hasObserverFor('member.id')) {\n\t\t\t\tthis.removeObserver('member.id', this, 'getTimeOff');\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tstartAutoLoadAction: function startAutoLoadAction() {\n\t\t\t\tthis.startAutoLoad();\n\t\t\t},\n\t\t\tgetTimeOffAction: function getTimeOffAction() {\n\t\t\t\tthis.getTimeOff();\n\t\t\t},\n\t\t\topenCardAction: function openCardAction() {\n\t\t\t\tthis.openCard.apply(this, arguments);\n\t\t\t},\n\t\t\treloadCardsAction: function reloadCardsAction() {\n\t\t\t\tthis.reloadCards.apply(this, arguments);\n\t\t\t},\n\t\t\tloadMoreAction: function loadMoreAction() {\n\t\t\t\tthis.loadMore.apply(this, arguments);\n\t\t\t},\n\t\t\topenNewTimeOffDialog: function openNewTimeOffDialog() {\n\t\t\t\tthis.set('isDisabled', false);\n\t\t\t\tthis.set('showNewTimeOffDialog', true);\n\t\t\t},\n\t\t\tcloseNewTimeEntryDialog: function closeNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', false);\n\t\t\t},\n\t\t\tcloseNewTimeOffDialog: function closeNewTimeOffDialog() {\n\t\t\t\tthis.set('showNewTimeOffDialog', false);\n\t\t\t},\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.getTimeOff();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/signature-invalidation-warning', ['exports', 'moment', '@busy-web/utils/assert'], function (exports, _moment, _assert) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tstore: Ember.inject.service('store'),\n\t\tpayPeriod: Ember.inject.service('payPeriod'),\n\n\t\tshowDialog: false,\n\t\thasBeenDismissed: false,\n\n\t\tmember: null,\n\t\tmemberEntries: null,\n\t\tstartTime: null,\n\t\tendTime: null,\n\t\twarningType: 'time-entry',\n\n\t\t/**\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (this.get('features.signatures')) {\n\t\t\t\t// Validate member data\n\t\t\t\tif (!Ember.isNone(this.get('member')) && !Ember.isNone(this.get('memberEntries'))) {\n\t\t\t\t\tthrow 'Cannot define both \"member\" and \"memberEntries\"';\n\t\t\t\t} else if (Ember.isNone(this.get('member')) && Ember.isNone(this.get('memberEntries'))) {\n\t\t\t\t\tthrow 'Must define either \"member\" or \"memberEntries\"';\n\t\t\t\t} else if (!Ember.isNone(this.get('memberEntries'))) {\n\t\t\t\t\t_assert.default.isArray(this.get('memberEntries'));\n\t\t\t\t}\n\n\t\t\t\t_assert.default.isInteger(this.get('startTimeStamp'));\n\t\t\t\t_assert.default.isInteger(this.get('endTimeStamp'));\n\n\t\t\t\tthis.checkForEffectedMemberTimeDocuments();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * computeds\n   *\n   */\n\n\t\tstartTimeStamp: Ember.computed('startTime', function () {\n\t\t\treturn !Ember.isNone(this.get('startTime')) ? this.ensureTimestamp(this.get('startTime')) : null;\n\t\t}),\n\n\t\tendTimeStamp: Ember.computed('endTime', function () {\n\t\t\treturn !Ember.isNone(this.get('endTime')) ? this.ensureTimestamp(this.get('endTime')) : null;\n\t\t}),\n\n\t\tmemberAsArray: Ember.computed('member', function () {\n\t\t\treturn this.get('member') ? [this.get('member')] : null;\n\t\t}),\n\n\t\tmembersCombined: Ember.computed.union('memberAsArray', 'memberEntries'),\n\n\t\tmembersCombinedIds: Ember.computed.mapBy('membersCombined', 'id'),\n\n\t\tstartTimePayPeriodBounds: Ember.computed('startTimeStamp', 'endTimeStamp', function () {\n\t\t\tvar startTimeStamp = this.getWithDefault('startTimeStamp', null);\n\t\t\tvar endTimeStamp = this.getWithDefault('endTimeStamp', null);\n\t\t\tvar minTimeStamp = Math.min(startTimeStamp, endTimeStamp);\n\n\t\t\treturn !Ember.isNone(minTimeStamp) ? this.getPayPeriodBounds(minTimeStamp) : null;\n\t\t}),\n\n\t\tendTimePayPeriodBounds: Ember.computed('startTimeStamp', 'endTimeStamp', function () {\n\t\t\tvar startTimeStamp = this.getWithDefault('startTimeStamp', null);\n\t\t\tvar endTimeStamp = this.getWithDefault('endTimeStamp', null);\n\t\t\tvar maxTimeStamp = Math.max(startTimeStamp, endTimeStamp);\n\n\t\t\treturn !Ember.isNone(maxTimeStamp) ? this.getPayPeriodBounds(maxTimeStamp) : null;\n\t\t}),\n\n\t\t/**\n   * observers\n   *\n   */\n\n\t\tpayPeriodsChanged: Ember.observer('membersCombinedIds', 'startTimePayPeriodBounds', 'endTimePayPeriodBounds', function () {\n\t\t\tif (this.get('features.signatures')) {\n\t\t\t\treturn this.checkForEffectedMemberTimeDocuments();\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * data access\n   *\n   */\n\n\t\t/**\n   * Checks if there are any `memberTimeDocument` with valid signatures within the relevant date range.\n   * If there are any matches, trigger the `displayDialog()` event.\n   *\n   * Intentionally does not check the `organization.signatureDate` setting as there could be a warning even if the setting is disabled.\n   *\n   * @private\n   * @method checkForEffectedMemberTimeDocuments\n   */\n\t\tcheckForEffectedMemberTimeDocuments: function checkForEffectedMemberTimeDocuments() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!window.runningTests && this.get('features.signatures')) {\n\t\t\t\tvar startTime = this.get('startTimePayPeriodBounds').get('start');\n\t\t\t\tvar endTime = this.get('endTimePayPeriodBounds').get('end');\n\t\t\t\tvar memberIds = this.get('membersCombinedIds');\n\n\t\t\t\t_assert.default.isInteger(startTime);\n\t\t\t\t_assert.default.isInteger(endTime);\n\t\t\t\t_assert.default.isArray(memberIds);\n\n\t\t\t\tvar queryParams = {\n\t\t\t\t\t_gte: { start_time: startTime },\n\t\t\t\t\t_lte: { end_time: endTime },\n\t\t\t\t\t_desc: ['created_on'],\n\t\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t\t};\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tppms: this.getPayPeriodMemberSeconds(memberIds, startTime, endTime),\n\t\t\t\t\tmtd: this.get('store').findWhereIn('member-time-document', 'member_id', memberIds, queryParams)\n\t\t\t\t}).then(function (props) {\n\t\t\t\t\treturn _this.get('signature').getStateForMultiplePayPeriods(props.ppms, props.mtd);\n\t\t\t\t}).then(function (memberTimeDocuments) {\n\t\t\t\t\tif (!_this.get('isDestroyed') && !Ember.isEmpty(memberTimeDocuments)) {\n\t\t\t\t\t\tvar anyDocHasValidSignature = memberTimeDocuments.any(function (doc) {\n\t\t\t\t\t\t\treturn !Ember.isNone(doc) && doc.get('hasValidSelfSignature');\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (anyDocHasValidSignature) {\n\t\t\t\t\t\t\t_this.send('displayDialog');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn memberTimeDocuments;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * util\n   *\n   */\n\n\t\t/**\n  \t * @private\n  \t * @method getPayPeriodBounds\n  \t * @return {EmberObject}\n  \t */\n\t\tgetPayPeriodBounds: function getPayPeriodBounds(timestamp) {\n\t\t\t_assert.default.funcNumArgs(arguments, 1, true);\n\t\t\t_assert.default.isInteger(timestamp);\n\n\t\t\treturn this.get('payPeriod').getPayPeriod(timestamp);\n\t\t},\n\n\n\t\t/**\n  \t * Ensure the providated value is a unix timestamp, not a moment object\n  \t *\n  \t * @private\n  \t * @method ensureTimestamp\n  \t * @param {Number || Moment}\n  \t * @return {EmberObject}\n  \t */\n\t\tensureTimestamp: function ensureTimestamp(dateVal) {\n\t\t\t_assert.default.funcNumArgs(arguments, 1, true);\n\n\t\t\treturn _moment.default.isMoment(dateVal) ? dateVal.unix() : dateVal;\n\t\t},\n\t\tgetPayPeriodMemberSeconds: function getPayPeriodMemberSeconds(memberIds, startTime, endTime) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!window.runningTests) {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tstart_time: startTime,\n\t\t\t\t\tend_time: endTime,\n\t\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t\t};\n\n\t\t\t\treturn this.get('store').findWhereIn('pay-period-member-seconds', 'memberId', memberIds, queryParams).then(function (payPeriodMemberSeconds) {\n\t\t\t\t\tvar results = payPeriodMemberSeconds.toArray();\n\t\t\t\t\tvar payPeriodMembers = results.mapBy('memberId');\n\n\t\t\t\t\t// find members for which we didn't get a pay-period-member-seconds result and create a usable mock\n\t\t\t\t\tmemberIds.forEach(function (memberId) {\n\t\t\t\t\t\tif (payPeriodMembers.indexOf(memberId) === -1) {\n\t\t\t\t\t\t\tresults.push(_this2.createPayPeriodMemberSeconds(memberId, startTime, endTime));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcreatePayPeriodMemberSeconds: function createPayPeriodMemberSeconds(memberId, startTime, endTime) {\n\t\t\treturn this.get('store').createRecord('pay-period-member-seconds', {\n\t\t\t\tmemberId: memberId,\n\t\t\t\tstartTime: startTime,\n\t\t\t\tendTime: endTime,\n\t\t\t\tregularSeconds: 0,\n\t\t\t\tovertimeSeconds: 0,\n\t\t\t\tdoubletimeSeconds: 0\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * actions\n   *\n   */\n\n\t\tactions: {\n\t\t\t/**\n    * Hide the warning dialog\n    *\n    * @event dismissDialog\n    */\n\t\t\tdismissDialog: function dismissDialog() {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('showDialog', false);\n\t\t\t\t\tthis.set('hasBeenDismissed', true);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * Show the warning dialog if it hasn't been shown before\n    *\n    * @event displayDialog\n    */\n\t\t\tdisplayDialog: function displayDialog() {\n\t\t\t\tif (!this.get('hasBeenDismissed') && !this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('showDialog', true);\n\n\t\t\t\t\t// force any underlying datepickers to close when the dialog shows\n\t\t\t\t\tthis.$().focus().click();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-conflict/conflict-list', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['conflict-list'],\n\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmodel: null,\n\t\tstart: null,\n\t\tend: null,\n\t\tproject: null,\n\t\tmemberId: null,\n\t\tgroupId: null,\n\n\t\tisDisabled: false,\n\n\t\tconflictDay: null,\n\t\ttitle: null,\n\t\tconflictArray: null,\n\t\tstartTime: null,\n\t\tendTime: null,\n\t\temployee: null,\n\n\t\tshowConflict: false,\n\t\tshowMemberListDialog: false,\n\t\thasInitialized: false,\n\n\t\tshowTop: false,\n\t\tshowMore: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setConflictArray();\n\t\t},\n\t\tsetConflictArray: function setConflictArray() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('hasInitialized', true);\n\t\t\tif (this.get('allowConflictResolution')) {\n\t\t\t\tthis.get('store').manager('member-conflicts', this.get('memberId'), this.get('start'), this.get('end'), this.get('project'), this.get('groupId')).then(function (data) {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.set('totalConflicts', data.reduce(function (a, b) {\n\t\t\t\t\t\t\treturn a + b.get('totalConflicts');\n\t\t\t\t\t\t}, 0));\n\t\t\t\t\t\t_this.set('model', data);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tallowConflictResolution: Ember.computed('features.conflict-resolution', function () {\n\t\t\tthis.get('features.conflict-resolution');\n\t\t\treturn this.get('proFeature').allowProFeature('conflict-resolution');\n\t\t}),\n\n\t\tconflicModels: Ember.computed('model.@each.model', function () {\n\t\t\treturn this.get('model');\n\t\t}),\n\n\t\trealodTime: Ember.observer('memberId', 'start', 'end', function () {\n\t\t\tif (this.get('hasInitialized')) {\n\t\t\t\tthis.set('model', null);\n\t\t\t\tthis.setConflictArray();\n\t\t\t}\n\t\t}),\n\n\t\thasConflicts: Ember.observer('totalConflicts', function () {\n\t\t\tvar totalConflicts = this.get('totalConflicts');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\t\t\tvar text = (0, _utils.loc)(\"%@ time entries with conflicts.\", [totalConflicts]);\n\t\t\tif (totalConflicts === 1) {\n\t\t\t\ttext = (0, _utils.loc)(\"1 time entry with conflicts.\", [totalConflicts]);\n\t\t\t}\n\n\t\t\tcontainer.find('div > span').html(text);\n\n\t\t\tif (totalConflicts) {\n\t\t\t\tif (!container.hasClass('show')) {\n\t\t\t\t\tcontainer.addClass('show');\n\t\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\t\treturn container.addClass('front');\n\t\t\t\t\t}, 300);\n\t\t\t\t\tEmber.$('body > .ember-view').addClass('conflict-bar');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontainer.removeClass('front');\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\treturn container.removeClass('show');\n\t\t\t\t}, 100);\n\t\t\t\tEmber.$('body > .ember-view').removeClass('conflict-bar');\n\t\t\t}\n\t\t}),\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\t\t\tvar action = container.find('div > a');\n\n\t\t\taction.unbind('click.' + viewId);\n\t\t\taction.bind('click.' + viewId, function () {\n\t\t\t\treturn _this2.send('openMemberListDialog');\n\t\t\t});\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\t// remove conflict-bar class from main div\n\t\t\tEmber.$('body > .ember-view').removeClass('conflict-bar');\n\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\t\t\tcontainer.removeClass('top');\n\t\t\tcontainer.removeClass('more');\n\t\t\tcontainer.removeClass('front');\n\t\t\tcontainer.removeClass('show');\n\n\t\t\tif (this.get('showTop')) {\n\t\t\t\tcontainer.addClass('top');\n\t\t\t}\n\n\t\t\tif (this.get('showMore')) {\n\t\t\t\tcontainer.addClass('more');\n\t\t\t}\n\n\t\t\tvar action = container.find('div > a');\n\t\t\taction.unbind('click.' + viewId);\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenMemberListDialog: function openMemberListDialog() {\n\t\t\t\tthis.set('showMemberListDialog', true);\n\t\t\t},\n\t\t\tcloseMemberListDialog: function closeMemberListDialog() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.sendAction('onDone');\n\t\t\t\t\tthis.set('showMemberListDialog', false);\n\t\t\t\t\tthis.set('currentConflict', null);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenConflicts: function openConflicts(model, member) {\n\t\t\t\t// set the view conflict to use later\n\t\t\t\t// if the conflicts are resolved\n\t\t\t\tthis.set('viewConflict', model);\n\n\t\t\t\t// set the conflicts to ressolve.\n\t\t\t\tthis.set('currentConflict', member);\n\t\t\t},\n\t\t\tcloseConflicts: function closeConflicts() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\t// remove the member from the members list if all conflicts\n\t\t\t\t// are resolved.\n\t\t\t\tif (this.get('currentConflict.conflicts.length') === 0) {\n\t\t\t\t\tthis.get('viewConflict.model.members').removeObject(this.get('currentConflict'));\n\n\t\t\t\t\t// remove the conflict from the list if all conflicts are resolved\n\t\t\t\t\t// for all members.\n\t\t\t\t\tif (this.get('viewConflict.model.members.length') === 0) {\n\t\t\t\t\t\tthis.get('model').removeObject(this.get('viewConflict'));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.get('model.length') === 0) {\n\t\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\t\t_this3.sendAction('onDone');\n\t\t\t\t\t\t_this3.set('showMemberListDialog', false);\n\t\t\t\t\t}, 4000);\n\t\t\t\t}\n\n\t\t\t\t// reset the dialog view state\n\t\t\t\tthis.set('viewConflict', null);\n\t\t\t\tthis.set('currentConflict', null);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-conflict/merge-entries', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tstore: Ember.inject.service('store'),\n\n\t\tclassNames: ['time-conflict-merge-entries'],\n\n\t\tentry1: null,\n\t\tentry2: null,\n\n\t\tshowMore: false,\n\t\tisDisabled: false,\n\n\t\tmergedStartTime: null,\n\t\tmergedEndTime: null,\n\t\tmergedDescription: null,\n\t\tmergedProjectId: null,\n\t\tmergedCostCodeId: null,\n\n\t\tbreakArray: null,\n\t\tprojectArray: null,\n\t\tcostCodeArray: null,\n\t\tequipmentArray: null,\n\t\tdescriptionArray: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setDefaults();\n\t\t},\n\n\n\t\tsetDefaults: Ember.observer('entry1.id', 'entry2.id', function () {\n\t\t\tif (!Ember.isNone(this.get('entry1.id')) && !Ember.isNone(this.get('entry2.id'))) {\n\t\t\t\tthis.set('mergedStartTime', this.get('entry1.startTime'));\n\t\t\t\tthis.set('mergedEndTime', this.get('entry1.endTime'));\n\n\t\t\t\tthis.setBreakArray();\n\t\t\t\tthis.setProjects();\n\t\t\t\tthis.setCostCodes();\n\t\t\t\tthis.setEquipment();\n\t\t\t\tthis.setDescriptions();\n\t\t\t}\n\t\t}),\n\n\t\tsetBreakArray: function setBreakArray() {\n\t\t\tvar breakArray = [];\n\t\t\tif (this.get('entry1.timeEntryBreaks.length') > 0) {\n\t\t\t\tthis.get('entry1.timeEntryBreaks').forEach(function (timeEntryBreak) {\n\t\t\t\t\ttimeEntryBreak.set('includeInMerge', false);\n\t\t\t\t\tbreakArray.pushObject(timeEntryBreak);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.get('entry2.timeEntryBreaks.length') > 0) {\n\t\t\t\tthis.get('entry2.timeEntryBreaks').forEach(function (timeEntryBreak) {\n\t\t\t\t\ttimeEntryBreak.set('includeInMerge', false);\n\t\t\t\t\tbreakArray.pushObject(timeEntryBreak);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.set('breakArray', breakArray.sortBy('startTime'));\n\t\t},\n\n\n\t\tcanShowMore: Ember.computed('projectArray.length', 'costCodeArray.length', 'descriptionArray.length', function () {\n\t\t\treturn this.get('projectArray.length') || this.get('costCodeArray.length') || this.get('descriptionArray.length') || this.get('equipmentArray.length');\n\t\t}),\n\n\t\tgetModelByType: function getModelByType(entryNum, type) {\n\t\t\tvar model = this.get('entry' + entryNum + '.' + type);\n\t\t\tif (model.isFulfilled !== undefined) {\n\t\t\t\tmodel = this.get('entry' + entryNum + '.' + type + '.content');\n\t\t\t}\n\t\t\treturn model;\n\t\t},\n\t\tsetAttachments: function setAttachments(type) {\n\t\t\tvar items = [];\n\t\t\tvar entry1Id = this.get('entry1.' + type + 'Id');\n\t\t\tvar entry2Id = this.get('entry2.' + type + 'Id');\n\t\t\tvar entry1 = this.getModelByType(1, type);\n\t\t\tvar entry2 = this.getModelByType(2, type);\n\n\t\t\tif (!Ember.isNone(entry1Id) && entry1Id === entry2Id) {\n\t\t\t\tif (!Ember.isNone(entry1)) {\n\t\t\t\t\tentry1.set('entryTitle', (0, _utils.loc)('Both'));\n\t\t\t\t\tentry1.set('_selected', true);\n\t\t\t\t\tthis.set('merged' + Ember.String.classify(type) + 'Id', entry1.id);\n\t\t\t\t\titems.push(entry1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar selected = false;\n\t\t\t\tif (!Ember.isNone(entry1Id)) {\n\t\t\t\t\tif (!Ember.isNone(entry1)) {\n\t\t\t\t\t\tselected = true;\n\t\t\t\t\t\tentry1.set('entryTitle', (0, _utils.loc)('Time entry 1'));\n\t\t\t\t\t\tentry1.set('_selected', selected);\n\t\t\t\t\t\tthis.set('merged' + Ember.String.classify(type) + 'Id', entry1.id);\n\t\t\t\t\t\titems.push(entry1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry2Id)) {\n\t\t\t\t\tif (!Ember.isNone(entry2)) {\n\t\t\t\t\t\tentry2.set('entryTitle', (0, _utils.loc)('Time entry 2'));\n\t\t\t\t\t\tif (!selected) {\n\t\t\t\t\t\t\tentry2.set('_selected', true);\n\t\t\t\t\t\t\tthis.set('merged' + Ember.String.classify(type) + 'Id', entry2.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\titems.push(entry2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set(type + 'Array', items);\n\t\t},\n\t\tsetProjects: function setProjects() {\n\t\t\tthis.setAttachments('project');\n\t\t},\n\t\tsetCostCodes: function setCostCodes() {\n\t\t\tthis.setAttachments('costCode');\n\t\t},\n\t\tsetEquipment: function setEquipment() {\n\t\t\tthis.setAttachments('equipment');\n\t\t},\n\t\tsetDescriptions: function setDescriptions() {\n\t\t\tvar objects = [];\n\t\t\tif (!Ember.isNone(this.get('entry1.description')) && this.get('entry1.description') === this.get('entry2.description')) {\n\t\t\t\tvar desc = Ember.Object.create({\n\t\t\t\t\tdescription: this.get('entry1.description'),\n\t\t\t\t\tentryTitle: (0, _utils.loc)('Both'),\n\t\t\t\t\t_selected: true\n\t\t\t\t});\n\t\t\t\tthis.set('mergedDescription', desc.get('description'));\n\t\t\t\tobjects.push(desc);\n\t\t\t} else {\n\t\t\t\tvar selected = false;\n\t\t\t\tif (!Ember.isNone(this.get('entry1.description'))) {\n\t\t\t\t\tvar _desc = Ember.Object.create({\n\t\t\t\t\t\tdescription: this.get('entry1.description'),\n\t\t\t\t\t\tentryTitle: (0, _utils.loc)('Time entry 1'),\n\t\t\t\t\t\t_selected: true\n\t\t\t\t\t});\n\t\t\t\t\tselected = true;\n\t\t\t\t\tthis.set('mergedDescription', _desc.get('description'));\n\t\t\t\t\tobjects.push(_desc);\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(this.get('entry2.description'))) {\n\t\t\t\t\tvar _desc2 = Ember.Object.create({\n\t\t\t\t\t\tdescription: this.get('entry2.description'),\n\t\t\t\t\t\tentryTitle: (0, _utils.loc)('Time entry 2')\n\t\t\t\t\t});\n\t\t\t\t\tif (!selected) {\n\t\t\t\t\t\t_desc2.set('_selected', true);\n\t\t\t\t\t\tthis.set('mergedDescription', _desc2.get('description'));\n\t\t\t\t\t}\n\t\t\t\t\tobjects.push(_desc2);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set('descriptionArray', objects);\n\t\t},\n\t\tmergeTimeEntries: function mergeTimeEntries() {\n\t\t\tvar _this = this;\n\n\t\t\t// get entry 1 and 2\n\t\t\tvar conflictItemOne = this.get('entry1');\n\t\t\tvar conflictItemTwo = this.get('entry2');\n\n\t\t\t// set the merged properties on time entry 1\n\t\t\tconflictItemOne.set('startTime', this.get('mergedStartTime'));\n\t\t\tconflictItemOne.set('endTime', this.get('mergedEndTime'));\n\t\t\tconflictItemOne.set('projectId', this.get('mergedProjectId'));\n\t\t\tconflictItemOne.set('costCodeId', this.get('mergedCostCodeId'));\n\t\t\tconflictItemOne.set('equipmentId', this.get('mergedEquipmentId'));\n\t\t\tconflictItemOne.set('description', this.get('mergedDescription'));\n\n\t\t\t// set the merged ids for entry1 and entry2\n\t\t\tconflictItemOne.set('mergedTimeEntryId', conflictItemTwo.id);\n\t\t\tconflictItemTwo.set('mergedTimeEntryId', conflictItemOne.id);\n\n\t\t\t// get the old time entry logs and break logs\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmergeLogs: this.get('store').query('client-time-entry-log', { time_entry_id: conflictItemTwo.id }),\n\t\t\t\tmergeBreakLogs: this.get('store').query('client-time-entry-break-log', { time_entry_id: conflictItemTwo.id }),\n\t\t\t\tbreaks: this.mergeBreaks(conflictItemOne)\n\t\t\t}).then(function (data) {\n\t\t\t\t// copy the old logs to the new entry\n\t\t\t\treturn _this.copyLogs(data.mergeLogs, data.mergeBreakLogs, data.breaks.addedBreaks, conflictItemOne.id, conflictItemTwo.id).then(function (entryLogData) {\n\t\t\t\t\t// set the action type to conflict resolved\n\t\t\t\t\tconflictItemOne.set('actionType', 80);\n\n\t\t\t\t\t// set the action type to deleted by resolution and delete the entry\n\t\t\t\t\tconflictItemTwo.set('actionType', 100);\n\t\t\t\t\tconflictItemTwo.set('deletedOn', _utils.Time.date().unix());\n\n\t\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\t\tentry1: conflictItemOne._save(),\n\t\t\t\t\t\tentry2: conflictItemTwo._save()\n\t\t\t\t\t}).then(function (timeEntryData) {\n\t\t\t\t\t\treturn _this.saveLogs(entryLogData).then(function () {\n\t\t\t\t\t\t\treturn timeEntryData;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tmergeBreaks: function mergeBreaks(timeEntry) {\n\t\t\tvar deletedPromise = [];\n\t\t\tvar addedPromise = [];\n\n\t\t\t// loop through the breaks and create new or delete unwanted breaks\n\t\t\tthis.get('breakArray').forEach(function (breakEntry) {\n\t\t\t\t// add new breaks that are not already on the time entry\n\t\t\t\tif (breakEntry.get('includeInMerge') && breakEntry.get('timeEntryId') !== timeEntry.id) {\n\t\t\t\t\t// create break and copy its properties\n\t\t\t\t\tvar newBreak = timeEntry.createBreak(breakEntry.get('startTime'), breakEntry.get('endTime'));\n\t\t\t\t\tnewBreak.set('id', _utils.UUID.generate());\n\t\t\t\t\tnewBreak.set('actionType', 80);\n\t\t\t\t\tnewBreak.set('mergedTimeEntryBreakId', breakEntry.id);\n\t\t\t\t\tnewBreak.set('startTimeDst', breakEntry.get('startTimeDst'));\n\t\t\t\t\tnewBreak.set('startMetaOffset', breakEntry.get('startMetaOffset'));\n\t\t\t\t\tnewBreak.set('endTimeDst', breakEntry.get('endTimeDst'));\n\t\t\t\t\tnewBreak.set('endMetaOffset', breakEntry.get('endMetaOffset'));\n\t\t\t\t\tnewBreak.set('paidBreak', breakEntry.get('paidBreak'));\n\t\t\t\t\tnewBreak.set('startLocationId', breakEntry.get('startLocationId'));\n\t\t\t\t\tnewBreak.set('endLocationId', breakEntry.get('endLocationId'));\n\t\t\t\t\tnewBreak.set('startDeviceTime', breakEntry.get('startDeviceTime'));\n\t\t\t\t\tnewBreak.set('endDeviceTime', breakEntry.get('endDeviceTime'));\n\t\t\t\t\tnewBreak.set('startTimeTrusted', breakEntry.get('startTimeTrusted'));\n\t\t\t\t\tnewBreak.set('endTimeTrusted', breakEntry.get('endTimeTrusted'));\n\t\t\t\t\tnewBreak.set('updatedOn', breakEntry.get('updatedOn'));\n\t\t\t\t\tnewBreak.set('createdOn', breakEntry.get('createdOn'));\n\n\t\t\t\t\taddedPromise.push(newBreak);\n\t\t\t\t} else if (!breakEntry.get('includeInMerge')) {\n\t\t\t\t\t// delete breaks not included\n\t\t\t\t\ttimeEntry.removeBreak(breakEntry, true);\n\t\t\t\t\tdeletedPromise.push(breakEntry);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// return a hash with deleted and added breaks\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\taddedBreaks: Ember.RSVP.all(addedPromise),\n\t\t\t\tdeletedBreaks: Ember.RSVP.all(deletedPromise)\n\t\t\t});\n\t\t},\n\t\tsaveLogs: function saveLogs(logs) {\n\t\t\t// save the time entry logs first\n\t\t\tvar promise1 = [];\n\t\t\tlogs.entryLogs.forEach(function (log) {\n\t\t\t\tpromise1.push(log.save());\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promise1).then(function (entryLogs) {\n\t\t\t\t// save the breaks logs\n\t\t\t\tvar promise2 = [];\n\t\t\t\tlogs.breakLogs.forEach(function (breakLog) {\n\t\t\t\t\tpromise2.push(breakLog.save());\n\t\t\t\t});\n\n\t\t\t\t// return an object with both log arrays\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tentryLogs: entryLogs,\n\t\t\t\t\tbreakLogs: Ember.RSVP.all(promise2)\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tcopyLogs: function copyLogs(mergeLogs, mergeBreakLogs, breaks, timeEntryId, mergedEntryId) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar logsArray = [];\n\t\t\tvar breakLogsArray = [];\n\n\t\t\t// loop through the entry logs first\n\t\t\t// there will alway be a one to many relationship\n\t\t\t// with entry logs and break logs.\n\t\t\tmergeLogs.forEach(function (entryLog) {\n\t\t\t\t// create new time entry log\n\t\t\t\tvar newEntryLog = _this2.createLog(entryLog, timeEntryId, mergedEntryId);\n\t\t\t\tlogsArray.push(newEntryLog);\n\n\t\t\t\t// find any break logs associated with the old entry log\n\t\t\t\tvar breakLogs = mergeBreakLogs.filterBy('clientTimeEntryLogId', entryLog.id);\n\t\t\t\tbreakLogs.forEach(function (breakLog) {\n\t\t\t\t\t// get the new break merged from the old time entry if it was merged\n\t\t\t\t\tvar newBreak = breaks.findBy('mergedTimeEntryBreakId', breakLog.get('timeEntryBreakId'));\n\t\t\t\t\tvar newBreakId = null;\n\n\t\t\t\t\t// if the break was not moved over\n\t\t\t\t\t// then dont copy the logs over\n\t\t\t\t\tif (!Ember.isNone(newBreak)) {\n\t\t\t\t\t\tnewBreakId = newBreak.id;\n\t\t\t\t\t}\n\n\t\t\t\t\t// create the new time entry break log\n\t\t\t\t\tvar newBreakLog = _this2.createBreakLog(breakLog, newEntryLog.id, timeEntryId, newBreakId);\n\t\t\t\t\tbreakLogsArray.push(newBreakLog);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tentryLogs: logsArray,\n\t\t\t\tbreakLogs: breakLogsArray\n\t\t\t});\n\t\t},\n\t\tcreateLog: function createLog(log, timeEntryId, mergedTimeEntryId) {\n\t\t\treturn this.get('store').createRecord('client-time-entry-log', {\n\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\tupdaterMemberId: log.get('updaterMemberId'),\n\t\t\t\toriginalTimeEntryId: mergedTimeEntryId,\n\t\t\t\tmergedTimeEntryId: mergedTimeEntryId,\n\t\t\t\ttimeEntryId: timeEntryId,\n\t\t\t\tstartTime: log.get('startTime'),\n\t\t\t\tendTime: log.get('endTime'),\n\t\t\t\toffset: log.get('offset'),\n\t\t\t\tmetaOffset: log.get('metaOffset'),\n\t\t\t\tdaylightSavingTime: log.get('daylightSavingTime'),\n\t\t\t\tmetaDaylightSavingTime: log.get('metaDaylightSavingTime'),\n\t\t\t\tdescription: log.get('description'),\n\t\t\t\tmemberId: log.get('memberId'),\n\t\t\t\tprojectId: log.get('projectId'),\n\t\t\t\tcostCodeId: log.get('costCodeId'),\n\t\t\t\tactionType: log.get('actionType'),\n\t\t\t\ttimeEntryCreatedOn: log.get('createdOn'),\n\t\t\t\ttimeEntryDeletedOn: log.get('deletedOn'),\n\t\t\t\tupdatedOn: log.get('updatedOn'),\n\t\t\t\tcreatedOn: log.get('createdOn'),\n\t\t\t\tsubmittedOn: log.get('submittedOn'),\n\t\t\t\tdeletedOn: log.get('deletedOn'),\n\t\t\t\tdeviceType: log.get('deviceType'),\n\t\t\t\tstartLocationId: log.get('startLocationId'),\n\t\t\t\tendLocationId: log.get('endLocationId'),\n\t\t\t\tstartDeviceTime: log.get('startDeviceTime'),\n\t\t\t\tendDeviceTime: log.get('endDeviceTime'),\n\t\t\t\tstartTimeTrusted: log.get('startTimeTrusted'),\n\t\t\t\tendTimeTrusted: log.get('endTimeTrusted')\n\t\t\t});\n\t\t},\n\t\tcreateBreakLog: function createBreakLog(log, logId, timeEntryId, breakId) {\n\t\t\treturn this.get('store').createRecord('client-time-entry-break-log', {\n\t\t\t\ttimeEntryId: timeEntryId,\n\t\t\t\ttimeEntryBreakId: breakId || log.get('timeEntryBreakId'),\n\t\t\t\tclientTimeEntryLogId: logId,\n\t\t\t\toriginalTimeEntryBreakId: log.get('originalTimeEntryBreakId'),\n\t\t\t\tmergedTimeEntryBreakId: log.get('originalTimeEntryBreakId'),\n\t\t\t\tstartMetaOffset: log.get('startMetaOffset'),\n\t\t\t\tpaidBreak: log.get('paidBreak'),\n\t\t\t\tstartTimeDst: log.get('startTimeDst'),\n\t\t\t\tendMetaOffset: log.get('endMetaOffset'),\n\t\t\t\tendTimeDst: log.get('endTimeDst'),\n\t\t\t\ttimeEntryBreakCreatedOn: log.get('timeEntryBreakCreatedOn'),\n\t\t\t\ttimeEntryBreakDeletedOn: log.get('timeEntryBreakDeletedOn'),\n\t\t\t\tupdaterMemberId: log.get('updaterMemberId'),\n\t\t\t\tstartTime: log.get('startTime'),\n\t\t\t\tendTime: log.get('endTime'),\n\t\t\t\tactionType: log.get('actionType'),\n\t\t\t\tupdatedOn: log.get('updatedOn'),\n\t\t\t\tcreatedOn: log.get('createdOn'),\n\t\t\t\tsubmittedOn: log.get('submittedOn'),\n\t\t\t\tdeletedOn: log.get('deletedOn'),\n\t\t\t\tdeviceType: log.get('deviceType'),\n\t\t\t\tstartLocationId: log.get('startLocationId'),\n\t\t\t\tendLocationId: log.get('endLocationId'),\n\t\t\t\tstartDeviceTime: log.get('startDeviceTime'),\n\t\t\t\tendDeviceTime: log.get('endDeviceTime'),\n\t\t\t\tstartTimeTrusted: log.get('startTimeTrusted'),\n\t\t\t\tendTimeTrusted: log.get('endTimeTrusted')\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\ttoggleDetails: function toggleDetails() {\n\t\t\t\tthis.set('showMore', !this.get('showMore'));\n\t\t\t},\n\t\t\tselectStartTime: function selectStartTime(value) {\n\t\t\t\tthis.set('mergedStartTime', value);\n\t\t\t},\n\t\t\tselectEndTime: function selectEndTime(value) {\n\t\t\t\tthis.set('mergedEndTime', value);\n\t\t\t},\n\t\t\tselectProject: function selectProject(value) {\n\t\t\t\tthis.set('mergedProjectId', value);\n\t\t\t},\n\t\t\tselectCostCode: function selectCostCode(value) {\n\t\t\t\tthis.set('mergedCostCodeId', value);\n\t\t\t},\n\t\t\tselectDescription: function selectDescription(value) {\n\t\t\t\tthis.set('mergedDescription', value);\n\t\t\t},\n\t\t\tsaveMerge: function saveMerge() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tthis.set('isDisabled', true);\n\n\t\t\t\tif (Ember.isNone(this.get('mergedStartTime')) || Ember.isNone(this.get('mergedEndTime'))) {\n\t\t\t\t\treturn Ember.RSVP.reject('You must select a start and end time before merging.');\n\t\t\t\t}\n\n\t\t\t\treturn this.mergeTimeEntries().then(function (data) {\n\t\t\t\t\t_this3.set('isDisabled', false);\n\t\t\t\t\t_this3.sendAction('onResolved', data.entry1, data.entry2);\n\t\t\t\t\treturn (0, _utils.loc)('Conflict resolved');\n\t\t\t\t});\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t},\n\t\t\tbackAction: function backAction() {\n\t\t\t\tthis.sendAction('onBack');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-conflict/resolve-conflicts', ['exports', '@busy-web/utils', 'busy-app/utils/time-entry-validator'], function (exports, _utils, _timeEntryValidator) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tanalytics: Ember.inject.service('analytics'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tclassNames: ['time-conflict-resolve-conflicts'],\n\n\t\tmodel: null,\n\t\tmember: null,\n\t\tcurrentConflict: null,\n\n\t\tshowDetails: false,\n\t\tshowEdit: false,\n\t\tshowMerge: false,\n\n\t\tisDisabled: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.get('auth.organization');\n\t\t\tthis.setupConflict();\n\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\t_utils.Assert.isObject(this.get('member'));\n\t\t\t\treturn this.get('member.memberLock');\n\t\t\t}\n\t\t},\n\n\n\t\tdayString: Ember.computed('currentConflict.model.startTime', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('currentConflict.model.startTime'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('currentConflict.model.startTime')).format('MMMM Do');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tconflictNumber: Ember.computed('model', 'model.[]', 'currentConflict', function () {\n\t\t\tvar index = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tindex = this.get('model').indexOf(this.get('currentConflict')) + 1;\n\t\t\t}\n\t\t\treturn index;\n\t\t}),\n\n\t\tisSelf: Ember.computed('member.id', 'auth.member.id', function () {\n\t\t\tif (this.get('member.id') === this.get('auth.member.id')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tsetupConflict: function setupConflict() {\n\t\t\t//observer('model', 'model.[]', function() {\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.setCurrentConflict(0);\n\t\t\t}\n\t\t}, //),\n\n\t\tsetCurrentConflict: function setCurrentConflict(currentConflict) {\n\t\t\tif (currentConflict >= 0 && this.get('model.length') > currentConflict) {\n\t\t\t\tvar conflict = this.get('model').objectAt(currentConflict);\n\t\t\t\tif (!Ember.isNone(conflict)) {\n\t\t\t\t\tthis.set('currentConflict', conflict);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\thasNextConflict: Ember.computed('model.[]', 'currentConflict', function () {\n\t\t\tif (!Ember.isNone(this.get('model')) && this.get('model').indexOf(this.get('currentConflict')) + 1 < this.get('model.length')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasPrevConflict: Ember.computed('model.[]', 'currentConflict', function () {\n\t\t\tif (!Ember.isNone(this.get('model')) && this.get('model').indexOf(this.get('currentConflict')) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tsetNextCurrentConflict: function setNextCurrentConflict() {\n\t\t\tthis.setCurrentConflict(this.get('model').indexOf(this.get('currentConflict')) + 1);\n\t\t},\n\t\tsetPrevCurrentConflict: function setPrevCurrentConflict() {\n\t\t\tthis.setCurrentConflict(this.get('model').indexOf(this.get('currentConflict')) - 1);\n\t\t},\n\t\trefactorConflicts: function refactorConflicts() {\n\t\t\tvar _this = this;\n\n\t\t\tvar curConflict = this.get('currentConflict');\n\n\t\t\t// remove the resolved conflict from the list\n\t\t\tthis.get('model').removeObject(curConflict);\n\n\t\t\tvar ids = [];\n\t\t\tvar remove = [];\n\t\t\tthis.get('model').forEach(function (conflict) {\n\t\t\t\t// Check for the curConflict main entry and conflict entry to match any main entries left in theconflict list.\n\t\t\t\t// Most of these should still be valid conflicts, the model may have to be replaced to reflect the changes\n\t\t\t\t// from the last resolution.\n\t\t\t\tif (curConflict.get('model.id') === conflict.get('model.id') || curConflict.get('conflictModel.id') === conflict.get('model.id')) {\n\t\t\t\t\tconflict.set('model', curConflict.get('model'));\n\n\t\t\t\t\t// keep track of any conflict combinations to eliminate any double conflicts\n\t\t\t\t\t// or inverse conflicts.\n\t\t\t\t\tvar cid = conflict.get('model.id') + conflict.get('conflictModel.id');\n\t\t\t\t\tif (ids.indexOf(cid) === -1) {\n\t\t\t\t\t\t// set both combinations of the id hash to catch inverse conflict relationships\n\t\t\t\t\t\t// that get created from the previous merge.\n\t\t\t\t\t\tids.push(cid);\n\t\t\t\t\t\tids.push(conflict.get('conflictModel.id') + conflict.get('model.id'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove the doubles\n\t\t\t\t\t\tremove.pushObject(conflict);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check for the resolved main entry to match any conflict entries in the list.\n\t\t\t\t// Most of these will continue to get filter by the hasConflict check later on\n\t\t\t\t// but the duplicate check still aplies in this case as well.\n\t\t\t\tif (curConflict.get('model.id') === conflict.get('conflictModel.id')) {\n\t\t\t\t\tconflict.set('conflictModel', curConflict.get('model'));\n\n\t\t\t\t\tvar _cid = conflict.get('model.id') + conflict.get('conflictModel.id');\n\t\t\t\t\tif (ids.indexOf(_cid) === -1) {\n\t\t\t\t\t\tids.push(_cid);\n\t\t\t\t\t\tids.push(conflict.get('conflictModel.id') + conflict.get('model.id'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tremove.pushObject(conflict);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// remove and resolved conflicts that match other conflicts, this in all cases found\n\t\t\t\t// will not result in future conflicts so they can be discarded now.\n\t\t\t\tif (curConflict.get('conflictModel.id') === conflict.get('conflictModel.id')) {\n\t\t\t\t\tremove.pushObject(conflict);\n\t\t\t\t}\n\n\t\t\t\t// check to see if any replaced conflicts are no longer in conflict with each other.\n\t\t\t\tif (!_this.hasConflict(conflict)) {\n\t\t\t\t\tremove.pushObject(conflict);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\t// remove all non conflict objects.\n\t\t\tthis.get('model').removeObjects(remove);\n\t\t},\n\t\thasConflict: function hasConflict(conflict) {\n\t\t\t// any entries matched with deleted conflicts will no longer be conflicts\n\t\t\tif (conflict.get('model.isDeleted') || conflict.get('conflictModel.isDeleted')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// check for conflicts.\n\t\t\treturn _timeEntryValidator.default.hasConflict(conflict.get('model'), conflict.get('conflictModel'));\n\t\t},\n\t\tresolvedConflict: function resolvedConflict() {\n\t\t\tvar index = this.get('model').indexOf(this.get('currentConflict'));\n\t\t\tvar lastIndex = this.get('model.length') - 1;\n\n\t\t\tthis.set('conflictResolved', true);\n\t\t\tthis.refactorConflicts();\n\n\t\t\tvar hasEntries = false;\n\t\t\tvar time = 1500;\n\t\t\tif (lastIndex > index) {\n\t\t\t\ttime = 2500;\n\t\t\t\thasEntries = true;\n\t\t\t\tthis.setCurrentConflict(index);\n\t\t\t} else if (lastIndex > 0) {\n\t\t\t\ttime = 2500;\n\t\t\t\thasEntries = true;\n\t\t\t\tthis.setCurrentConflict(lastIndex);\n\t\t\t}\n\n\t\t\tEmber.run.later(this, function () {\n\t\t\t\tthis.set('conflictResolved', false);\n\t\t\t\tif (!hasEntries) {\n\t\t\t\t\t// send onClose action\n\t\t\t\t\tthis.sendAction('onClose');\n\n\t\t\t\t\t// send on back action\n\t\t\t\t\tthis.sendAction('onBack');\n\t\t\t\t}\n\t\t\t}, time);\n\t\t},\n\n\n\t\t/**\n   * Is the currently selected `startTime` before the lock date\n   *\n  * @public\n   * @property isSelectedDateLocked\n   * @type {boolean}\n   */\n\t\tisSelectedDateLocked: Ember.computed('features.locks', 'member', 'member.memberLock.effectiveDate', 'currentConflict.model.startTime', function () {\n\t\t\tvar member = this.get('member');\n\t\t\tif (!Ember.isNone(this.get('member.content'))) {\n\t\t\t\tmember = this.get('member.content');\n\t\t\t}\n\t\t\treturn this.get('features.locks') && member && member.isDateLocked(this.get('currentConflict.model.startTime'));\n\t\t}),\n\n\t\tshowLockError: function showLockError() {\n\t\t\tthis.get('analytics').addEvent(84);\n\t\t\treturn this.get('busySave').showErrorMessage((0, _utils.loc)(\"This time period has been locked to prevent editing.\"));\n\t\t},\n\n\n\t\tactions: {\n\t\t\tshowDetails: function showDetails(item) {\n\t\t\t\tthis.set('detailItem', item);\n\t\t\t\tthis.set('showDetails', true);\n\t\t\t},\n\t\t\thideDetails: function hideDetails() {\n\t\t\t\tthis.set('detailItem', null);\n\t\t\t\tthis.set('showDetails', false);\n\t\t\t},\n\t\t\teditTimeEntry: function editTimeEntry(entry) {\n\t\t\t\tif (this.get('isSelectedDateLocked')) {\n\t\t\t\t\treturn this.showLockError();\n\t\t\t\t}\n\n\t\t\t\tthis.set('editItem', entry);\n\t\t\t\tthis.set('showEdit', true);\n\t\t\t},\n\t\t\tcloseEdit: function closeEdit() {\n\t\t\t\tthis.set('editItem', null);\n\t\t\t\tthis.set('showEdit', false);\n\t\t\t},\n\t\t\teditSavedAction: function editSavedAction() {\n\t\t\t\tthis.set('showEdit', false);\n\t\t\t\tthis.set('editItem', null);\n\t\t\t\tif (!this.hasConflict(this.get('currentConflict'))) {\n\t\t\t\t\tthis.resolvedConflict();\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction(entry) {\n\t\t\t\tif (this.get('isSelectedDateLocked')) {\n\t\t\t\t\treturn this.showLockError();\n\t\t\t\t}\n\n\t\t\t\tthis.set('deleteEntry', entry);\n\t\t\t\tthis.set('showDeleteOverlay', true);\n\t\t\t},\n\t\t\tconfirmDelete: function confirmDelete() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar dialog = this.get('busySave');\n\t\t\t\tdialog.showSavingMessage('Deleting');\n\n\t\t\t\tthis.set('showDeleteOverlay', false);\n\t\t\t\tthis.get('deleteEntry').destroyRecord().then(function () {\n\t\t\t\t\tdialog.showSavedMessage('Deleted');\n\t\t\t\t\t_this2.set('deleteEntry', null);\n\t\t\t\t\t_this2.resolvedConflict();\n\t\t\t\t});\n\t\t\t},\n\t\t\tcancelDelete: function cancelDelete() {\n\t\t\t\tthis.set('deleteEntry', null);\n\t\t\t\tthis.set('showDeleteOverlay', false);\n\t\t\t},\n\t\t\tcloseSuccess: function closeSuccess() {\n\t\t\t\tthis.set('conflictResolved', false);\n\t\t\t},\n\t\t\topenMerge: function openMerge() {\n\t\t\t\tthis.set('showMerge', true);\n\t\t\t},\n\t\t\tcloseMerge: function closeMerge() {\n\t\t\t\tthis.set('showMerge', false);\n\t\t\t},\n\t\t\tnextCurrentConflict: function nextCurrentConflict() {\n\t\t\t\tif (this.get('hasNextConflict')) {\n\t\t\t\t\tthis.setNextCurrentConflict();\n\t\t\t\t}\n\t\t\t},\n\t\t\tprevCurrentConflict: function prevCurrentConflict() {\n\t\t\t\tif (this.get('hasPrevConflict')) {\n\t\t\t\t\tthis.setPrevCurrentConflict();\n\t\t\t\t}\n\t\t\t},\n\t\t\tconflictResolvedAction: function conflictResolvedAction() {\n\t\t\t\tthis.set('showMerge', false);\n\t\t\t\tthis.resolvedConflict();\n\t\t\t},\n\t\t\tbackAction: function backAction() {\n\t\t\t\tthis.sendAction('onBack');\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showEdit', false);\n\t\t\t\tthis.set('editItem', null);\n\t\t\t\tthis.resolvedConflict();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-conflict/resolve-dialog', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['resolve-dialog'],\n\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tday: null,\n\t\tmember: null,\n\t\tisDisabled: false,\n\t\tshowConflictDialog: false,\n\n\t\tshowTop: false,\n\t\tshowMore: false,\n\t\tdataLoaded: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.loadData();\n\t\t},\n\n\n\t\tloadData: Ember.observer('allowConflictResolution', 'member.id', 'startTime', 'endTime', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.get('allowConflictResolution') && !Ember.isNone(this.get('member.id'))) {\n\t\t\t\tthis.get('store').manager('time-card-conflicts', this.get('member.id'), this.get('startTime'), this.get('endTime')).then(function (data) {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.set('totalConflicts', data.get('length'));\n\t\t\t\t\t\t_this.set('conflicts', data);\n\t\t\t\t\t\t_this.set('dataLoaded', true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tallowConflictResolution: Ember.computed('features.conflict-resolution', function () {\n\t\t\tthis.get('features.conflict-resolution');\n\t\t\treturn this.get('proFeature').allowProFeature('conflict-resolution');\n\t\t}),\n\n\t\tstartTime: Ember.computed('day', function () {\n\t\t\tvar day = this.get('day');\n\t\t\tif (!Ember.isNone(day)) {\n\t\t\t\treturn _utils.Time.date(day).startOf('day').unix();\n\t\t\t}\n\t\t}),\n\n\t\tendTime: Ember.computed('day', function () {\n\t\t\tvar day = this.get('day');\n\t\t\tif (!Ember.isNone(day)) {\n\t\t\t\treturn _utils.Time.date(day).endOf('day').unix();\n\t\t\t}\n\t\t}),\n\n\t\thasConflicts: Ember.observer('totalConflicts', 'conflicts', function () {\n\t\t\tvar totalConflicts = this.get('totalConflicts');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\t\t\tvar text = (0, _utils.loc)(\"%@ time entries with conflicts.\", [totalConflicts]);\n\t\t\tif (totalConflicts === 1) {\n\t\t\t\ttext = (0, _utils.loc)(\"1 time entry with conflicts.\", [totalConflicts]);\n\t\t\t}\n\n\t\t\tcontainer.find('div > span').html(text);\n\n\t\t\tif (totalConflicts) {\n\t\t\t\tif (!container.hasClass('show')) {\n\t\t\t\t\tcontainer.addClass('show');\n\t\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\t\treturn container.addClass('front');\n\t\t\t\t\t}, 300);\n\t\t\t\t\tEmber.$('body > .ember-view').addClass('conflict-bar');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontainer.removeClass('front');\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\treturn container.removeClass('show');\n\t\t\t\t}, 100);\n\t\t\t\tEmber.$('body > .ember-view').removeClass('conflict-bar');\n\t\t\t}\n\t\t}),\n\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\n\t\t\tif (this.get('showTop')) {\n\t\t\t\tcontainer.addClass('top');\n\t\t\t}\n\n\t\t\tif (this.get('showMore')) {\n\t\t\t\tcontainer.addClass('more');\n\t\t\t}\n\n\t\t\tvar action = container.find('div > a');\n\t\t\taction.unbind('click.' + viewId);\n\t\t\taction.bind('click.' + viewId, function () {\n\t\t\t\treturn _this2.send('openConflictDialog');\n\t\t\t});\n\t\t},\n\t\twillDestroyElement: function willDestroyElement() {\n\t\t\t// remove conflict-bar class from main div\n\t\t\tEmber.$('body > .ember-view').removeClass('conflict-bar');\n\n\t\t\tvar viewId = this.get('elementId');\n\t\t\tvar container = Ember.$('#c-conflict-resolution-banner-container');\n\t\t\tcontainer.removeClass('top');\n\t\t\tcontainer.removeClass('more');\n\t\t\tcontainer.removeClass('front');\n\t\t\tcontainer.removeClass('show');\n\n\t\t\tvar action = container.find('div > a');\n\t\t\taction.unbind('click.' + viewId);\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenConflictDialog: function openConflictDialog() {\n\t\t\t\tthis.set('showConflictDialog', true);\n\t\t\t},\n\t\t\tcloseConflictDialog: function closeConflictDialog() {\n\t\t\t\tif (!this.get('isDisabled')) {\n\t\t\t\t\tthis.set('showConflictDialog', false);\n\t\t\t\t\tthis.sendAction('onDone');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/clock-in-at', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  function _toConsumableArray(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n        arr2[i] = arr[i];\n      }\n\n      return arr2;\n    } else {\n      return Array.from(arr);\n    }\n  }\n\n  exports.default = Ember.Component.extend({\n    classNames: ['v-time-card-dialog-clock-in-at'],\n\n    analytics: Ember.inject.service('analytics'),\n    auth: Ember.inject.service('auth'),\n\n    member: null,\n    startDateTime: null,\n\n    memberEntries: null,\n    memberMode: 'single',\n\n    project: null,\n    costCode: null,\n    equipment: null,\n    description: '',\n\n    costCodesAutoOpen: false,\n    projectsAutoOpen: false,\n    isLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n    disableCostCodeSelection: Ember.computed('project.id', 'isLinkedCostCodesEnabled', function () {\n      return Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'project.id'));\n    }),\n\n    /**\n     * @private\n     * @method init\n     */\n    init: function init() {\n      this._super();\n\n      this.setTimeRoundingInterval();\n\n      //sets the clock In time input box to the current time\n      var start = _utils.Time.date().startOf('minute').unix();\n      start = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), start, { isStart: true });\n      this.set('startDateTime', start);\n\n      //sets the minimum and maximum date that the user can select\n      this.set('mindate', _utils.Time.date().subtract(1, 'day').startOf('day').unix());\n      this.set('maxdate', _utils.Time.date().endOf('day').unix());\n\n      if (!Ember.isNone(this.get('memberEntries'))) {\n        this.set('memberMode', 'multi');\n      }\n\n      if (this.get('features.locks')) {\n        return this.setMemberLocks();\n      }\n    },\n\n\n    /**\n     * @method setTimeRoundingInterval\n     */\n    setTimeRoundingInterval: function setTimeRoundingInterval() {\n      var interval = 1;\n      if (this.get('auth.organization.timeRounding')) {\n        interval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n      }\n      this.set('timeRoundingInterval', interval);\n    },\n\n\n    /**\n     * @public\n     * @method clockIn\n     */\n    clockIn: function clockIn(member, override) {\n      if (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n        member = Ember.get(member, 'content');\n      }\n\n      var startTime = this.get('startDateTime');\n\n      //project and costCode CANNOT be passed into clockInAt\n      //Only used for then function to set model project and costCode\n      var project = this.get('project');\n      var costCode = this.get('costCode');\n      var equipment = this.get('equipment');\n      return member.clockInAt(startTime, this.get('project.id'), this.get('costCode.id'), this.get('description'), this.get('equipment.id'), override).then(function (model) {\n        model.set('project', project);\n        model.set('costCode', costCode);\n        model.set('equipment', equipment);\n\n        return model;\n      });\n    },\n\n\n    /**\n     * Make sure all the `member` objects have an up to date `member-lock`\n     *\n     * @private\n     * @method setMemberLocks\n     * @async\n     * @chainable\n     * @return {EmberPromise}\n     */\n    setMemberLocks: function setMemberLocks() {\n      var promises = [];\n      this.get('membersCombined').forEach(function (member) {\n        if (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n          member = Ember.get(member, 'content');\n        }\n        promises.push(member.get('memberLock'));\n      });\n      return Ember.RSVP.all(promises);\n    },\n\n\n    /**\n     * Create a unified array that contains either the one `member` or all members in `memberEntries`\n     *\n     * @public\n     * @property membersCombined\n     * @type {Models.Member[]}\n     */\n    membersCombined: Ember.computed('member', 'memberEntries', function () {\n      return this.get('memberMode') === 'multi' ? [].concat(_toConsumableArray(this.get('memberEntries'))) : [this.get('member')];\n    }),\n\n    /**\n     * Filtered array of `membersCombined` who have a lock date before the selected `startDateTime`\n     *\n     * @public\n     * @property membersWithLocksBeforeStartTime\n     * @type {Models.Member[]}\n     */\n    membersWithLocksBeforeStartTime: Ember.computed('startDateTime', 'membersCombined', function () {\n      if (!this.get('features.locks')) {\n        return null;\n      } else {\n        var startDate = this.get('startDateTime');\n        return this.get('membersCombined').filter(function (member) {\n          if (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n            member = Ember.get(member, 'content');\n          }\n          member.isDateLocked(startDate);\n        });\n      }\n    }),\n\n    /**\n     * Error message to be shown for a `startDateTime` which violates a lock date\n     *\n     * @public\n     * @property lockDateErrorMessage\n     * @type {string[]}\n     */\n    lockDateErrorMessage: Ember.computed('membersWithLocksBeforeStartTime', 'memberMode', function () {\n      if (this.get('memberMode') === 'single') {\n        var msg = (0, _utils.loc)('Date must be later than the lock date');\n        var date = _utils.Time.date(this.get('member.memberLock.effectiveDate')).format('L');\n\n        return msg + ': ' + date;\n      } else {\n        var members = this.get('membersWithLocksBeforeStartTime');\n        var numMembers = members.get('length');\n        var _msg = (0, _utils.loc)('employees have lock dates before the selected date');\n\n        return numMembers + ' ' + _msg;\n      }\n    }),\n\n    hasMultipleMembers: Ember.computed('memberEntries.[]', function () {\n      if (this.get('memberEntries.length') > 1) {\n        return true;\n      }\n      return false;\n    }),\n\n    actions: {\n      /**\n       * @event projectSelected\n       */\n      projectSelected: function projectSelected(item) {\n        this.set('project', item);\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          Ember.set(this, 'costCode', null);\n        }\n      },\n\n\n      /**\n       * @event costCodeSelected\n       */\n      costCodeSelected: function costCodeSelected(item) {\n        this.set('costCode', item);\n      },\n\n\n      /**\n       * @event equipmentSelected\n       */\n      equipmentSelected: function equipmentSelected(item) {\n        this.set('equipment', item);\n      },\n\n\n      /**\n       * closes dialog if clicked on cancel button or clicked in background window\n       *\n       * @event close\n       */\n      close: function close() {\n        this.sendAction('onClose');\n      },\n\n\n      /**\n       * @event clockinSave\n       */\n      clockinSave: function clockinSave(dialog) {\n        var _this = this;\n\n        var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n        if (this.get('features.locks') && !Ember.isEmpty(this.get('membersWithLocksBeforeStartTime'))) {\n          this.get('analytics').addEvent(84);\n          return Ember.RSVP.reject((0, _utils.loc)('Errors must be fixed before saving.'));\n        } else {\n          if (!Ember.isNone(this.get('memberEntries'))) {\n            var members = this.get('memberEntries');\n\n            var promise = [];\n            members.forEach(function (member) {\n              promise.push(_this.clockIn(member, true));\n            });\n\n            return Ember.RSVP.all(promise);\n          } else {\n            return this.clockIn(this.get('member'), forceSave);\n          }\n        }\n      },\n      projectMenuClosed: function projectMenuClosed(didSelectValue /*, selectedItem, openedBy*/) {\n        var _this2 = this;\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && didSelectValue) {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this2, {\n              costCodesAutoOpen: Date.now()\n            });\n          });\n        }\n      },\n      costCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n        var _this3 = this;\n\n        // Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n        // if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this3, {\n              costCode: null,\n              projectsAutoOpen: Date.now()\n            });\n          });\n        }\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/clock-in', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-time-card-dialog-clock-in'],\n\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n    store: Ember.inject.service(),\n    subscription: Ember.inject.service(),\n\n    member: null,\n    timeEntry: null,\n    entryLocation: null,\n\n    memberEntries: null,\n\n    project: null,\n    costCode: null,\n    description: '',\n    organization: null,\n\n    covidQuestions: null,\n    signInAnswers: [],\n    signInSubmission: null,\n    showCovidRestrictionDialog: false,\n    covidRestrictionHeader: '',\n    covidRestrictionMessage: '',\n    covidRestricted: false,\n    hideCovidCheckForm: false,\n    multipleMemberCovidCheck: 0,\n\n    costCodesAutoOpen: false,\n    projectsAutoOpen: false,\n    showCovidQuestionDialog: false,\n    isLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n    disableCostCodeSelection: Ember.computed('project.id', 'isLinkedCostCodesEnabled', function () {\n      return Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'project.id'));\n    }),\n\n    init: function init() {\n      this._super();\n      this.setOrganization();\n      this.setCovidQuestions();\n      this.setProperties({\n        covidRestrictionHeader: 'Clock In Restricted Due to COVID-19',\n        covidRestrictionMessage: 'Based on your answers to the COVID-19 check, you may be at risk for having contracted COVID and will not be allowed to clock in for the day. Please contact your supervisor for additional information and guidance.'\n      });\n\n      this.setCovidRestricted();\n      this.hideCovidCheck();\n    },\n    setOrganization: function setOrganization() {\n      if (Ember.isNone(this.get('organization'))) {\n        this.set('organization', this.get('auth.organization'));\n      }\n    },\n    setCovidQuestions: function setCovidQuestions() {\n      var _this = this;\n\n      if (this.get('organization.busySignInQuestion')) {\n        this.get('store').findAll('busy-sign-in-question').then(function (results) {\n          _this.setProperties({\n            covidQuestions: results,\n            signInAnswers: [],\n            signInSubmission: null\n          });\n        });\n      }\n    },\n    setCovidRestricted: function setCovidRestricted() {\n      var _this2 = this;\n\n      if (this.get('hasMultipleMembers')) {\n        this.get('memberEntries').forEach(function (member) {\n          if (member.get('id') === _this2.get('auth.member.id')) {\n            _this2.getSubmission(member.get('id')).then(function (a) {\n              var flagged = a.filter(function (ans) {\n                return ans.get('flagged') === true;\n              });\n\n              var covidCheck = parseFloat(_this2.get('multipleMemberCovidCheck')) + 0;\n              var newCovidCheckNumber = covidCheck += flagged.length;\n              _this2.set('multipleMemberCovidCheck', newCovidCheckNumber);\n              _this2.set('covidRestricted', _this2.get('multipleMemberCovidCheck') > 0);\n            });\n          }\n        });\n      } else {\n        if (!Ember.isEmpty(this.get('member'))) {\n          if (this.get('member.id') === this.get('auth.member.id')) {\n            this.getSubmission(this.get('member.id')).then(function (a) {\n              var flagged = a.filter(function (ans) {\n                return ans.get('flagged') === true;\n              });\n              _this2.set('covidRestricted', flagged.length > 0);\n            });\n          }\n        } else if (this.get('memberEntries.length') > 0) {\n          var member = this.get('memberEntries')[0];\n          if (member.get('id') === this.get('auth.memberId')) {\n            this.getSubmission(member.get('id')).then(function (a) {\n              var flagged = a.filter(function (ans) {\n                return ans.get('flagged') === true;\n              });\n              _this2.set('covidRestricted', flagged.length > 0);\n            });\n          }\n        }\n      }\n    },\n    getSubmission: function getSubmission(memberId) {\n      var startOfDay = _utils.Time.date().startOf('day').unix();\n      var endOfDay = _utils.Time.date().endOf('day').unix();\n\n      return DS.PromiseArray.create({\n        promise: this.get('store').query('member-sign-in-submission', { member_id: memberId, _lte: { local_time: endOfDay }, _gte: { local_time: startOfDay } })\n      });\n    },\n    hideCovidCheck: function hideCovidCheck() {\n      var _this3 = this;\n\n      if (!Ember.isEmpty(this.get('member'))) {\n        if (this.get('member.id') !== this.get('auth.member.id')) {\n          this.set('hideCovidCheckForm', true);\n        }\n      } else if (this.get('memberEntries.length') > 0) {\n        var memberArray = this.get('memberEntries').filter(function (m) {\n          return m.get('id') === _this3.get('auth.member.id') ? m : null;\n        });\n\n        if (memberArray.length < 1) {\n          this.set('hideCovidCheckForm', true);\n        }\n      }\n    },\n    clockIn: function clockIn(member, override) {\n      var _this4 = this;\n\n      var startLocation = null;\n      var isSwitch = false;\n      var signInAnswers = this.get('signInAnswers');\n      var authMember = this.get('auth.member');\n\n      if (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n        member = Ember.get(member, 'content');\n      }\n\n      //project and costCode CANNOT be passed into clockInAt\n      //Only used for then function to set model project and costCode\n      return member.clockIn(this.get('project.id'), this.get('costCode.id'), this.get('description'), this.get('equipment.id'), startLocation, override, false, isSwitch, signInAnswers, authMember, this.get('covidRestricted'), this.get('isFreeAccount')).then(function (model) {\n        model.setTimeInterval(1000);\n        model.set('project', _this4.get('project'));\n        model.set('costCode', _this4.get('costCode'));\n        model.set('equipment', _this4.get('equipment'));\n\n        return model;\n      });\n    },\n\n\n    hasMultipleMembers: Ember.computed('memberEntries.[]', function () {\n      if (this.get('memberEntries.length') > 1) {\n        return true;\n      }\n      return false;\n    }),\n\n    hasTimeLocationRequired: Ember.computed('memberEntries', 'member', 'auth.member.id', function () {\n      var members = [].concat(this.get('memberEntries')).concat(this.get('member')).compact();\n\n      return members.any(function (member) {\n        return member.get('isTimeLocationRequired');\n      });\n    }),\n\n    covidQuestionsSubmittedText: Ember.computed('signInAnswers.@each', 'showCovidQuestionDialog', 'covidRestricted', function () {\n      var signInAnswers = this.get('signInAnswers');\n      return !Ember.isEmpty(signInAnswers) && signInAnswers.length > 0 || this.get('covidRestricted') ? 'Submitted' : 'Not Submitted (Required)';\n    }),\n\n    editCovidQuestionsDisabled: Ember.computed('covidQuestionsSubmittedText', function () {\n      var covidQuestionsSubmittedText = this.get('covidQuestionsSubmittedText');\n\n      return covidQuestionsSubmittedText === 'Submitted';\n    }),\n\n    setSubmissions: function setSubmissions() {\n      var _this5 = this;\n\n      var answers = this.get('signInAnswers');\n      var store = this.get('store');\n      var covidQuestions = this.get('covidQuestions');\n      var offset = _utils.Time.timezone(_utils.Time.date());\n      var isDST = _utils.Time.isDST(_utils.Time.date().unix());\n\n      var submission = store.createRecord('member-sign-in-submission', {\n        id: _utils.UUID.generate(),\n        memberId: this.get('auth.member.id'),\n        proxyMemberId: this.get('auth.memberId'),\n        deviceType: 'Web Browser',\n        localTime: _utils.Time.date().unix(),\n        flagged: false,\n        createdOnOffset: offset,\n        createdOnDst: isDST\n\n      });\n\n      answers.forEach(function (a) {\n        var cQuestionForPrompt = covidQuestions.filter(function (c) {\n          return c.get('questionTitle') === a.get('questionTitle');\n        });\n        if (cQuestionForPrompt.length > 0) {\n          a.set('description', cQuestionForPrompt[0].get('promptAnswer'));\n          a.set('memberSignInSubmissionId', submission.get('id'));\n        }\n\n        if (a.get('flagged')) {\n          submission.set('flagged', a.get('flagged'));\n        };\n      });\n\n      submission.save().then(function () {\n        answers.forEach(function (answer, index) {\n          var timeIndex = index + 1;\n          answer.set('createdOn', _utils.Time.date().unix() + timeIndex);\n          answer.save();\n        });\n        _this5.setCovidRestricted();\n      });;\n    },\n\n\n    actions: {\n      projectSelected: function projectSelected(item) {\n        this.set('project', item);\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          Ember.set(this, 'costCode', null);\n        }\n      },\n      costCodeSelected: function costCodeSelected(item) {\n        this.set('costCode', item);\n      },\n      equipmentSelected: function equipmentSelected(item) {\n        this.set('equipment', item);\n      },\n\n\n      /**\n       * closes dialog if clicked on cancel button\n       * or clicked in background window\n       *\n       */\n      close: function close() {\n        return this.sendAction('onClose');\n      },\n      clockinSave: function clockinSave(forceSave) {\n        var _this6 = this;\n\n        if (!Ember.isNone(this.get('memberEntries'))) {\n          var members = this.get('memberEntries');\n\n          var promise = [];\n          members.forEach(function (member) {\n            promise.push(_this6.clockIn(member, true));\n          });\n\n          return Ember.RSVP.all(promise);\n        } else {\n          return this.clockIn(this.get('member'), forceSave);\n        }\n      },\n      projectMenuClosed: function projectMenuClosed(didSelectValue /*, selectedItem, openedBy*/) {\n        var _this7 = this;\n\n        if (didSelectValue && Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this7, {\n              costCodesAutoOpen: Date.now()\n            });\n          });\n        }\n      },\n      costCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n        var _this8 = this;\n\n        // Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n        // if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this8, {\n              costCode: null,\n              projectsAutoOpen: Date.now()\n            });\n          });\n        }\n      },\n      openCovidQuestionDialog: function openCovidQuestionDialog() {\n        this.set('showCovidQuestionDialog', true);\n      },\n      closeCovidDialog: function closeCovidDialog() {\n        this.get('covidQuestions').forEach(function (q) {\n          q.set('showPrompt', false);\n        });\n\n        this.setProperties({\n          showCovidQuestionDialog: false,\n          signInAnswers: [],\n          signInSubmission: null,\n          showCovidError: false,\n          covidError: ''\n        });\n      },\n      setClockInQuestionAnswer: function setClockInQuestionAnswer(questionObject, value) {\n        var offset = _utils.Time.timezone(Ember.get(this, 'date'));\n        var isDST = _utils.Time.isDST(Ember.get(this, 'dateStamp'));\n        var question = this.get('covidQuestions').filter(function (q) {\n          return q.get('questionTitle') === questionObject.get('questionTitle');\n        });\n        var signInAnswers = this.get('signInAnswers');\n        var answer = this.get('store').createRecord('member-sign-in-answer', {\n          memberId: this.get('auth.memberId'),\n          answer: value === true ? 'Yes' : 'No',\n          questionTitle: questionObject.get('questionTitle'),\n          questionDescription: question[0].get('questionDescription'),\n          questionPrompt: question[0].get('questionPrompt'),\n          flagged: value,\n          localTime: _utils.Time.date().unix()\n        });\n        questionObject.set('showPrompt', value === true && !Ember.isEmpty(questionObject.get('questionPrompt')));\n\n        var currentItemInAnswerArray = signInAnswers.findIndex(function (a) {\n          return a.get('questionTitle') === answer.get('questionTitle');\n        });\n\n        if (currentItemInAnswerArray >= 0) {\n          signInAnswers[currentItemInAnswerArray] = answer;\n        } else {\n          signInAnswers.push(answer);\n        }\n      },\n      setCovidQuestionAnswers: function setCovidQuestionAnswers() {\n        var signInAnswers = this.get('signInAnswers');\n        this.setProperties({\n          showCovidError: false,\n          covidError: ''\n        });\n        if (signInAnswers.length < 4) {\n          this.setProperties({\n            showCovidError: true,\n            covidError: 'All questions are required'\n          });\n        } else {\n          this.setSubmissions();\n          this.set('showCovidQuestionDialog', false);\n        }\n      },\n      openCovidRestrictionDialog: function openCovidRestrictionDialog() {\n        this.set('showCovidRestrictionDialog', true);\n      },\n      closeCovidRestrictionDialog: function closeCovidRestrictionDialog() {\n        this.set('showCovidRestrictionDialog', false);\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/clock-out-at', ['exports', '@busy-web/utils', 'busy-app/utils/round-time', 'busy-app/mixins/safety-signoff'], function (exports, _utils, _roundTime, _safetySignoff) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  exports.default = Ember.Component.extend(_safetySignoff.default, {\n    classNames: ['v-time-card-dialog-clock-out-at'],\n\n    member: null,\n    endDateTime: null,\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n\n    memberEntries: null,\n\n    init: function init() {\n      this._super();\n\n      this.setTimeRoundingInterval();\n\n      var time = this.get('member.openEntry.startTime');\n      if (Ember.isNone(time)) {\n        var start = _utils.Time.date().endOf('day').unix();\n        this.get('memberEntries').forEach(function (item) {\n          if (start > item.get('openEntry.startTime')) {\n            start = item.get('openEntry.startTime');\n          }\n        });\n\n        time = start;\n\n        if (time === _utils.Time.date().endOf('day').unix()) {\n          time = _utils.Time.date().startOf('day').unix();\n        }\n      }\n\n      //sets the clock Out time input box to the current time\n      var end = _utils.Time.date().startOf('minute').unix();\n      end = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), end, { isEnd: true });\n      this.set('endDateTime', end);\n\n      //sets the minimum and maximum date that the user can select\n      this.set('mindate', _utils.Time.date(time).subtract(1, 'minute').unix());\n      this.set('maxdate', _utils.Time.date().endOf('day').unix());\n    },\n\n\n    /**\n    * @method setTimeRoundingInterval\n    */\n    setTimeRoundingInterval: function setTimeRoundingInterval() {\n      var interval = 1;\n      if (this.get('auth.organization.timeRounding')) {\n        interval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n      }\n      this.set('timeRoundingInterval', interval);\n    },\n    clockOut: function clockOut(member, override, isGroup) {\n      var _this = this;\n\n      if (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n        member = Ember.get(member, 'content');\n      }\n\n      var endTime = this.get('endDateTime');\n\n      // clock out at validateOnly is true, this will only validate the\n      // time entry to see if it should allow the clock out at.\n      return member.clockOutAt(endTime, override, true).then(function () {\n        // creates an event callback to save or cancel the entry\n        // based on the action taken from the safety signoff\n        return _this.verifySafetyAndSave(isGroup ? null : member, 'showSafetyDialog', 'showSignOffRequiredDialog', function () {\n          return member.clockOutAt(endTime, override);\n        });\n      });\n    },\n    handleError: function handleError(err, dialog) {\n      var _this2 = this;\n\n      if (err instanceof Error) {\n        throw new Ember.Error(err);\n      }\n\n      if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object') {\n        if (err.canOverride) {\n          dialog.showConfirm(err.message, function (override, d) {\n            if (override) {\n              _this2.clockOut(_this2.get('member'), true).then(function () {\n                d.showSavedMessage();\n              });\n            } else {\n              d.showErrorMessage('', 0);\n            }\n          });\n        } else if (err.message) {\n          dialog.showErrorMessage(err.message);\n        }\n      } else {\n        if (typeof err === 'string') {\n          dialog.showErrorMessage(err);\n        } else {\n          dialog.showErrorMessage();\n        }\n      }\n    },\n\n\n    actions: {\n      //closes dialog if clicked on cancel button or clicked in background window\n      close: function close() {\n        if (this.get('memberEntries.length') > 0) {\n          this.get('memberEntries').forEach(function (item) {\n            if (item.get('openEntry.hasDirtyAttributes')) {\n              item.get('openEntry').rollbackAttributes();\n            }\n          });\n        } else {\n          if (this.get('member.openEntry.hasDirtyAttributes')) {\n            this.get('member.openEntry').rollbackAttributes();\n          }\n        }\n        this.sendAction('onClose');\n      },\n      clockoutSave: function clockoutSave(dialog) {\n        var _this3 = this;\n\n        var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n        if (!Ember.isNone(this.get('memberEntries'))) {\n          var members = this.get('memberEntries');\n\n          if (members.get('length') === 1 && members.isAny('id', this.get('auth.member.id'))) {\n            return this.clockOut(members.get('firstObject'), forceSave).then(function () {\n              return _this3.sendAction('onClose');\n            });\n          } else {\n            var promise = [];\n            members.forEach(function (member) {\n              promise.push(_this3.clockOut(member, true, true));\n            });\n\n            if (this.get('features.safetySignOff') && (this.get('auth.organization.safetySignature') || this.get('auth.organization.timeAccuracy'))) {\n              this.set('showSignOffRequiredDialog', true);\n            }\n\n            return Ember.RSVP.all(promise).then(function () {\n              return _this3.sendAction('onClose');\n            });\n          }\n        } else {\n          return this.clockOut(this.get('member'), forceSave).then(function () {\n            return _this3.sendAction('onClose');\n          });\n        }\n      },\n      closeSafetyDialog: function closeSafetyDialog() {\n        // triggers the event callback to cancel the entry save\n        this.cancelSafetySignoff();\n        this.set('showSafetyDialog', false);\n      },\n      closeSafetyRequiredDialog: function closeSafetyRequiredDialog() {\n        // triggers the event callback to save the entry\n        this.saveSafetySignoff();\n        this.set('showSignOffRequiredDialog', false);\n      },\n      safetyClockOut: function safetyClockOut() {\n        // triggers the event callback to save the entry\n        this.saveSafetySignoff();\n        this.set('showSafetyDialog', false);\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/clock', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-time-card-clock'],\n\n    store: Ember.inject.service('store'),\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n\n    clockInDialog: false,\n    switchProjectDialog: false,\n    showGpsLocationRequiredDialog: false,\n\n    member: null,\n    organization: null,\n    isDisabled: false,\n    isSuspended: false,\n\n    _socket: null,\n\n    init: function init() {\n      this._super.apply(this, arguments);\n      this.setup();\n    },\n\n\n    setup: Ember.observer('member.id', function () {\n      if (!Ember.isNone(this.get('member.id'))) {\n        this.getOpenCard();\n      }\n    }),\n\n    isClockRunning: Ember.computed('member.openEntry.elapsedTime', function () {\n      return this.get('member.openEntry.elapsedTime') >= 0;\n    }),\n\n    roundingExplanation: Ember.computed('member.openEntry.{elapsedTime,onBreak}', function () {\n      var timeType = (0, _utils.loc)('Clock');\n      var time = _utils.Time.timeFormat(this.get('member.openEntry.startTime'), 'h:mm A');\n      if (this.get('member.openEntry.openRoundedBreak.length') > 0) {\n        time = _utils.Time.timeFormat(this.get('member.openEntry.openRoundedBreak')[0].get('endTime'), 'h:mm A');\n      }\n      if (this.get('member.openEntry.onBreak')) {\n        timeType = (0, _utils.loc)('Break timer');\n        time = this.get('member.openEntry.futureBreakTime');\n      }\n      return timeType + ' ' + (0, _utils.loc)('will begin at ') + time;\n    }),\n\n    roundingReason: Ember.computed('auth.organization', function () {\n      var interval = this.get('auth.organization.timeRoundingIntervalMinutes');\n      var type = this.get('auth.organization.timeRoundingType');\n      var typeString = ' ';\n\n      if (type === 20) {\n        typeString += (0, _utils.loc)('down') + ' ';\n      } else if (type === 30) {\n        typeString += (0, _utils.loc)('up') + ' ';\n      }\n\n      var reason = (0, _utils.loc)('Employee time for your company is set to round') + typeString + 'to the nearest ' + interval + ' ' + (0, _utils.loc)('minute interval');\n      return reason;\n    }),\n\n    /**\n     * Gets the time card that has an end time equal to null.\n     *\n     * @public\n     * @method getOpenCard\n     */\n    getOpenCard: function getOpenCard() {\n      var _this = this;\n\n      var query = {\n        member_id: this.get('member.id'),\n        end_time: '_-NULL-_'\n      };\n\n      var socket = this.get('store').socket('time-entry', query).then(function (model) {\n        if (!_this.get('isDestroyed')) {\n          var entry = model.get('firstObject');\n          if (!Ember.isNone(entry)) {\n            entry.reloadBreaks();\n            entry.setTimeInterval(1000);\n            if (!_this.get('isDestroyed')) {\n              _this.set('member.openEntry', entry);\n            }\n            return entry;\n          } else {\n            _this.set('member.openEntry', null);\n          }\n        }\n      });\n\n      socket.shouldUpdate = function () {\n        return !_this.get('isSuspended');\n      };\n\n      if (Ember.isNone(this.get('_socket'))) {\n        this.set('_socket', socket);\n      }\n    },\n    clockOut: function clockOut() {\n      var _this2 = this;\n\n      var endTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getEndTime();\n\n      var forceSave = true;\n      var endLocation = null;\n\n      if (this.get('member.isTimeLocationRequired')) {\n        this.send('openDialog', 'GpsLocationRequiredDialog');\n      } else {\n        this.get('member').clockOutAt(endTime, forceSave, false, endLocation, true).then(function () {\n          _this2.set('isDisabled', true);\n          _this2.sendAction('onClockChange', 'clock-out-action');\n        });\n      }\n    },\n    willDestroyElement: function willDestroyElement() {\n      if (!Ember.isNone(this.get('_socket'))) {\n        this.get('_socket').destroy();\n      }\n    },\n    getEndTime: function getEndTime() {\n      return (0, _roundTime.roundOrgTime)(this.get(\"auth.organization\"), _utils.Time.nistTimestamp(), { isEnd: true, isSwitch: false });\n    },\n\n\n    actions: {\n      clockInAction: function clockInAction() {\n        if (this.get('member.isTimeLocationRequired')) {\n          this.send('openDialog', 'GpsLocationRequiredDialog');\n        } else {\n          this.set('clockInDialog', true);\n          this.set('isDisabled', false);\n        }\n      },\n      clockOutAction: function clockOutAction() {\n        var endTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getEndTime();\n\n        if (this.get('member.isTimeLocationRequired')) {\n          this.send('openDialog', 'GpsLocationRequiredDialog');\n        } else if (!Ember.isNone(this.get('member.openEntry')) && !this.get('isDisabled')) {\n          if (this.get('features.safetySignOff') && (this.get('auth.organization.safetySignature') || this.get('auth.organization.timeAccuracy') || this.get('auth.organization.breakPolicy'))) {\n            if (this.get('auth.member.id') === this.get('member.id')) {\n              this.set('showSafetyDialog', true);\n            } else {\n              this.set('showSignOffRequiredDialog', true);\n              this.clockOut(endTime);\n            }\n          } else {\n            this.clockOut(endTime);\n          }\n        }\n      },\n      goOnBreakAction: function goOnBreakAction() {\n        var _this3 = this;\n\n        var startLocation = null;\n\n        if (this.get('member.isTimeLocationRequired')) {\n          this.send('openDialog', 'GpsLocationRequiredDialog');\n        } else if (!this.get('isDisabled')) {\n          this.get('member').startBreak(false, true, startLocation).then(function () {\n            _this3.set('isDisabled', true);\n            _this3.sendAction('onClockChange', 'break-start-action');\n          });\n        }\n      },\n\n\n      // unpaidBreakAction() {\n      // \tconst startLocation = null;\n      //\n      // \tthis.get('member').startBreak(false, true, startLocation).then(() => {\n      // \t\tthis.set('showBreakTypeDialog', false);\n      // \t\tthis.sendAction('onClockChange', 'unpaid-break-start-action');\n      // \t});\n      // },\n\n      // paidBreakAction() {\n      // \tconst startLocation = null;\n      //\n      // \tthis.get('member').startBreak(true, true, startLocation).then(() => {\n      // \t\tthis.set('showBreakTypeDialog', false);\n      // \t\tthis.sendAction('onClockChange', 'paid-break-start-action');\n      // \t});\n      // },\n\n      closeBreakTypeDialog: function closeBreakTypeDialog() {\n        this.set('showBreakTypeDialog', false);\n      },\n      endBreakAction: function endBreakAction() {\n        var _this4 = this;\n\n        var endLocation = null;\n\n        if (this.get('member.isTimeLocationRequired')) {\n          this.send('openDialog', 'GpsLocationRequiredDialog');\n        } else {\n          this.get('member').stopBreak(true, endLocation).then(function () {\n            _this4.set('isDisabled', false);\n            _this4.sendAction('onClockChange', 'break-end-action');\n          });\n        }\n      },\n      switchProjectAction: function switchProjectAction() {\n        if (this.get('member.isTimeLocationRequired')) {\n          this.send('openDialog', 'GpsLocationRequiredDialog');\n        } else {\n          this.set('switchProjectDialog', true);\n        }\n      },\n      closeClockIn: function closeClockIn() {\n        this.set('clockInDialog', false);\n        this.sendAction('onClockChange', 'clock-in-action');\n      },\n      closeSwitchProject: function closeSwitchProject() {\n        this.set('switchProjectDialog', false);\n        this.sendAction('onClockChange', 'clock-out-action');\n      },\n      closeSafetyDialog: function closeSafetyDialog() {\n        this.set('showSafetyDialog', false);\n        this.set('showSignOffRequiredDialog', false);\n      },\n      closeSafetyDialogAndClockOut: function closeSafetyDialogAndClockOut(injured, safety, breakPolicy) {\n        var endTime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.getEndTime();\n\n        this.set('showSafetyDialog', false);\n        this.clockOut(endTime);\n        if (injured) {\n          this.set(\"showInjuryProtocolDialog\", true);\n        }\n      },\n      closeProtocolDialog: function closeProtocolDialog() {\n        this.set('showInjuryProtocolDialog', false);\n      },\n      openDialog: function openDialog(dialogName) {\n        this.set('show' + dialogName, true);\n      },\n      closeDialog: function closeDialog(dialogName) {\n        this.set('show' + dialogName, false);\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/create-new', ['exports', 'moment', '@busy-web/utils', 'busy-app/mixins/safety-signoff', 'busy-app/utils/round-time'], function (exports, _moment, _utils, _safetySignoff, _roundTime) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend(_safetySignoff.default, {\n    analytics: Ember.inject.service('analytics'),\n    auth: Ember.inject.service('auth'),\n    store: Ember.inject.service('store'),\n    features: Ember.inject.service('features'),\n\n    /**\n     * @public\n     * @property classNames\n     * @type {array}\n     * @default ['v-time-card-dialog-new-time-entry']\n     */\n    classNames: ['v-time-card-dialog-new-time-entry'],\n\n    /**\n     * @public\n     * @property startDateTime\n     * @default null\n     */\n    startDateTime: null,\n\n    /**\n     * @public\n     * @property oldStartDate\n     * @default null\n     */\n    oldStartDate: null,\n\n    /**\n     * @public\n     * @property endDateTime\n     * @default null\n     */\n    endDateTime: null,\n\n    /**\n     * @public\n     * @property date\n     * @default null\n     */\n    date: null,\n\n    /**\n     * @public\n     * @property maxdate\n     * @default ''\n     */\n    maxdate: null,\n\n    /**\n     * @public\n     * @property totalTime\n     * @type {number}\n     * @default 0\n     */\n    totalTime: 0,\n\n    /**\n     * @public\n     * @property totalHours\n     * @type {number}\n     * @default 0\n     */\n    totalHours: 0,\n\n    /**\n     * @public\n     * @property totalMinutes\n     * @type {number}\n     * @default 0\n     */\n    totalMinutes: 0,\n\n    /**\n     * @public\n     * @property timeEntry\n     * @type {Models.TimeEntry}\n     * @default null\n     */\n    timeEntry: null,\n\n    /**\n     * @public\n     * @property member\n     * @type {Models.Member}\n     * @default null\n     */\n    member: null,\n    memberEntries: null,\n\n    /**\n     * @public\n     * @property memberLock\n     * @type {timestamp}\n     * @default null\n     */\n    memberLock: null,\n\n    costCodesAutoOpen: false,\n    projectsAutoOpen: false,\n    setEndTimeToHour: false,\n    isLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n    disableCostCodeSelection: Ember.computed('timeEntry.project.id', 'isLinkedCostCodesEnabled', function () {\n      return Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'timeEntry.project.id'));\n    }),\n\n    /**\n     * @private\n     * @method init\n     * @constructor\n     */\n    init: function init() {\n      var _this = this;\n\n      this._super();\n\n      // open the dialog to this date or default to now\n      var now = _utils.Time.timestamp();\n      var endOfDay = _utils.Time.date().endOf('day').unix();\n      var date = Ember.get(this, 'date');\n\n      if (Ember.isNone(date) || date > endOfDay) {\n        date = now;\n      }\n\n      // sets maximum date that the user can select\n      // mindate is set by member.lockDate in the template\n      this.set('maxdate', endOfDay);\n\n      // sets the placeholder for start and end time input fields\n      var endTime = _utils.Time.date(date).hours(16).minutes(30).seconds(0).unix();\n\n      if (this.get('auth.organization.defaultEndTime')) {\n        endTime = _utils.Time.date(date).hours(this.get('auth.organization.endTimeHours')).minutes(this.get('auth.organization.endTimeMinutes')).seconds(0).unix();\n      }\n\n      var startTime = _utils.Time.date(date).hours(7).minutes(30).seconds(0).unix();\n\n      if (this.get('auth.organization.defaultStartTime')) {\n        startTime = _utils.Time.date(date).hours(this.get('auth.organization.startTimeHours')).minutes(this.get('auth.organization.startTimeMinutes')).seconds(0).unix();\n      }\n\n      // round the initial times if that feature is enabled\n      if (this.get('auth.organization.timeRounding')) {\n        startTime = this.roundTimestamp(startTime, 'start');\n        endTime = this.roundTimestamp(endTime, 'end');\n      }\n\n      this.setProperties({\n        endDateTime: endTime,\n        oldStartDate: _utils.Time.date(startTime).date(),\n        startDateTime: startTime\n      });\n\n      this.setNewStartTime();\n\n      if (this.get('features.safetySignOff')) {\n        if (this.get('auth.organization.safetySignature') || this.get('auth.organization.timeAccuracy')) {\n          this.set('closeOnSave', true);\n        }\n      }\n\n      // load lock date information\n      this.set('isLoading', true);\n      this.loadLockDate().finally(function () {\n        _this.set('isLoading', false);\n\n        _this._setupEntry();\n        _this.adjustEndTime();\n        _this.totalAdjusted();\n        _this.totalTimeString();\n        _this.setTimeRoundingInterval();\n      });\n    },\n\n\n    closeOnSave: false,\n\n    setNewStartTime: Ember.observer('member', function () {\n      var _this2 = this;\n\n      var now = _utils.Time.timestamp();\n      var date = Ember.get(this, 'date');\n      if (Ember.isNone(date)) {\n        date = now;\n      }\n      var endOfDay = _utils.Time.date(date).endOf('day').unix();\n\n      if (Ember.isPresent(this.get('member'))) {\n        this.get('store').query('time-entry', { member_id: this.get('member.id') }).then(function (entries) {\n          if (entries.get('length') >= 1) {\n            var currentDayEntries = entries.filter(function (entry) {\n              if (_utils.Time.date(entry.get('endTime')).endOf('day').unix() === endOfDay) {\n                return entry;\n              }\n            });\n            var latestTimeEntryForDay = currentDayEntries.sortBy('endTime').reverse()[0];\n            if (Ember.isPresent(latestTimeEntryForDay)) {\n              var latestEndTime = latestTimeEntryForDay.get('endTime');\n\n              if (_utils.Time.date(latestEndTime).endOf('day').unix() === endOfDay) {\n                var startTime = latestEndTime;\n                _this2.setProperties({\n                  oldStartDate: _this2.get('startDateTime'),\n                  startDateTime: startTime,\n                  setEndTimeToHour: true\n                });\n              }\n            }\n          }\n        });\n      }\n    }),\n\n    roundTimestamp: function roundTimestamp(timestamp, type) {\n      return (0, _roundTime.roundOrgTime)(this.get('auth.organization'), timestamp, { isStart: type === 'start', isEnd: type === 'end' });\n    },\n    loadLockDate: function loadLockDate() {\n      var _this3 = this;\n\n      if (this.get('features.locks')) {\n        if (!Ember.isEmpty(this.get('memberEntries'))) {\n          // map all members by a resolved member lock model get\n          return Ember.RSVP.all(this.get('memberEntries').map(function (i) {\n            return Ember.RSVP.resolve(i.get('memberLock').then(function () {\n              return i;\n            }));\n          })).then(function (data) {\n            // reduce the lock date to a a single date that is the greatest value.\n            var lockDate = data.reduce(function (a, b) {\n              return a < b.get('lockDate') ? b.get('lockDate') : a;\n            }, 0);\n\n            // set the lock date\n            _this3.set('memberLock', lockDate);\n          });\n        } else {\n          // resolve the member lock model\n          return Ember.RSVP.resolve(this.get('member.memberLock')).then(function (memberLock) {\n            // set the loack date\n            _this3.set('memberLock', memberLock);\n          });\n        }\n      } else {\n        // feature flag is off so resolve the nothing\n        return Ember.RSVP.resolve();\n      }\n    },\n\n\n    shouldShowEquipment: Ember.computed('member', 'memberEntries.[]', function () {\n      return !Ember.isNone(this.get('member')) || !Ember.isEmpty(this.get('memberEntries')) && this.get('memberEntries.length') === 1;\n    }),\n\n    /**\n     * @method adjustEndTime\n     */\n    adjustEndTime: Ember.observer('startDateTime', function () {\n      var _this4 = this;\n\n      if (!Ember.isNone(this.get('startDateTime'))) {\n        var oldStart = this.get('oldStartDate');\n        var start = this.get('startDateTime');\n        var breakTime = this.get('timeEntry.breakTime');\n        var end = this.get('endDateTime');\n\n        if (oldStart !== _utils.Time.date(start).date()) {\n          var totalTime = this.get('totalTime');\n          var curDuration = totalTime + breakTime;\n\n          end = _utils.Time.date(start).add(curDuration, 'seconds').unix();\n\n          // adjust breaks with the new startTime\n          if (this.get('timeEntry.timeEntryBreaks')) {\n            this.get('timeEntry.timeEntryBreaks').forEach(function (item) {\n              var moveDuration = end - _this4.get('timeEntry.endTime');\n              var bStart = _utils.Time.date(item.get('startTime')).add(moveDuration, 'seconds').unix();\n              var bEnd = _utils.Time.date(item.get('endTime')).add(moveDuration, 'seconds').unix();\n              item.set('startTime', bStart);\n              item.set('endTime', bEnd);\n            });\n          }\n\n          if (this.get('setEndTimeToHour')) {\n            end = _utils.Time.date(start).add(1, 'hours').unix();\n          }\n\n          this.set('endDateTime', end);\n          this.set('timeEntry.endTime', end);\n        } else {\n          var seconds = end - start - breakTime;\n          this.set('totalTime', seconds);\n        }\n\n        this.set('oldStartDate', _utils.Time.date(this.get('startDateTime')).date());\n        this.set('timeEntry.startTime', start);\n      }\n    }),\n\n    /**\n     * @method totalAdjusted\n     */\n    totalAdjusted: Ember.observer('totalTime', function () {\n      if (!Ember.isNone(this.get('totalTime'))) {\n        var start = this.get('startDateTime');\n        var total = this.get('totalTime');\n        var breakTime = this.get('timeEntry.breakTime');\n\n        var totalTime = total + breakTime;\n\n        var end = _utils.Time.date(start).add(totalTime, 'seconds').unix();\n        this.set('endDateTime', end);\n        this.set('timeEntry.endTime', end);\n      }\n    }),\n\n    /**\n     * function that calculates the amount of hours and minutes\n     * from clock-in to clock-out input boxes.\n     *\n     * @public\n     * @method totalTimeString\n     */\n    totalTimeString: Ember.observer('endDateTime', 'timeEntry.breakTime', function () {\n      //variables for setting up seconds, minutes, and hours\n      if (!Ember.isNone(this.get('endDateTime')) && !Ember.isNone(this.get('startDateTime'))) {\n        var seconds = this.get('endDateTime') - this.get('startDateTime') - this.get('timeEntry.breakTime');\n\n        this.set('timeEntry.endTime', this.get('endDateTime'));\n        this.set('totalTime', seconds);\n      } else {\n        this.set('totalTime', 0);\n      }\n    }),\n\n    /**\n     * @method setTimeRoundingInterval\n     */\n    setTimeRoundingInterval: function setTimeRoundingInterval() {\n      var interval = 1;\n\n      if (this.get('auth.organization.timeRounding')) {\n        interval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n      }\n\n      this.set('timeRoundingInterval', interval);\n    },\n\n\n    /**\n     * This is a save functions for a time entry\n     *\n     * @private\n     * @method _onSave\n     * @param {object} dialog this is the dialog\n     * @return {EmberPromise}\n     */\n    _setupEntry: function _setupEntry() {\n      var startTime = this.get('startDateTime');\n      var endTime = this.get('endDateTime');\n\n      // Create a time entry\n      var params = { startTime: startTime, endTime: endTime };\n      var entry = this.get('store').createRecord('time-entry', params);\n\n      // set project id and cost code id\n      entry.set('projectId', this.get('timeEntry.projectId'));\n      entry.set('costCodeId', this.get('timeEntry.costCodeId'));\n      entry.set('equipmentId', this.get('timeEntry.equipmentId'));\n\n      this.set('timeEntry', entry);\n    },\n    isDateLocked: function isDateLocked(compareDate) {\n      var lockDate = this.get('memberLock.effectiveDate');\n      if (Ember.isNone(lockDate)) {\n        return false;\n      } else {\n        compareDate = _moment.default.isMoment(compareDate) ? compareDate.unix() : compareDate;\n        return compareDate <= lockDate;\n      }\n    },\n\n\n    /**\n     * Is `features.locks` enabled and the startDateTime is before the member's lock date\n     *\n     * @public\n     * @property isSelectedStartTimeLocked\n     * @type {boolean}\n     * @default false\n     */\n    isSelectedStartTimeLocked: Ember.computed('features.locks', 'startDateTime', 'memberLock.effectiveDate', function () {\n      return this.get('features.locks') ? this.isDateLocked(_utils.Time.date(this.get('startDateTime'))) : false;\n    }),\n\n    /**\n     * Does the form contain an error\n     *\n     * @public\n     * @property isFormInvalid\n     * @type {boolean}\n     * @default false\n     */\n    isFormInvalid: Ember.computed.or('isSelectedStartTimeLocked'),\n\n    saveTimeEntry: function saveTimeEntry(member, forceSave) {\n      var _this5 = this;\n\n      var isGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      (true && !(!Ember.isNone(member) && !Ember.isEmpty(member.id)) && Ember.assert(\"member model was not found\", !Ember.isNone(member) && !Ember.isEmpty(member.id)));\n\n\n      var timeEntry = this.get('timeEntry');\n      var startTime = this.get('startDateTime');\n      var endTime = this.get('endDateTime');\n\n      var entry = this.get('store').createRecord('time-entry', {\n        id: _utils.UUID.generate(),\n        actionType: 50,\n        memberId: member.id,\n        startTime: startTime,\n        endTime: endTime,\n        projectId: timeEntry.get('projectId'),\n        costCodeId: timeEntry.get('costCodeId'),\n        equipmentId: timeEntry.get('equipmentId'),\n        description: timeEntry.get('description')\n      });\n\n      timeEntry.get('timeEntryBreaks').forEach(function (item) {\n        entry.createBreak(item.get('startTime'), item.get('endTime'));\n      });\n\n      // validate the entry before showing the safety signoff dialogs\n      entry.populate();\n      return entry.validate(forceSave === true ? false : true).then(function () {\n        return _this5.verifySafetyAndSave(isGroup ? null : member, 'showSafetyDialog', 'showSignOffRequiredDialog', function () {\n          return entry.save();\n        }).then(function (data) {\n          return data;\n        });\n      });\n    },\n\n\n    actions: {\n      /**\n       * @public\n       * @event projectSelected\n       * @param item\n       */\n      projectSelected: function projectSelected(item) {\n        // Logger.info(this, 'projectSelected', item, get(item, 'title'));\n\n        this.set('timeEntry.project', item);\n        this.set('timeEntry.projectId', !Ember.isNone(item) ? item.id : null);\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          Ember.set(this, 'timeEntry.costCode', null);\n          Ember.set(this, 'timeEntry.costCodeId', null);\n        }\n      },\n\n\n      /**\n       * @public\n       * @event costCodeSelected\n       * @param item\n       */\n      costCodeSelected: function costCodeSelected(item) {\n        // Logger.info(this, 'costCodeSelected', item, get(item, 'costCode'));\n\n        this.set('timeEntry.costCode', item);\n        this.set('timeEntry.costCodeId', !Ember.isNone(item) ? item.id : null);\n      },\n      equipmentSelected: function equipmentSelected(item) {\n        this.set('timeEntry.equipment', item);\n        this.set('timeEntry.equipmentId', !Ember.isNone(item) ? item.id : null);\n      },\n\n\n      /**\n       * closes dialog if clicked on cancel button or clicked in background window\n       *\n        * @public\n       * @event costCodeSelected\n       */\n      close: function close() {\n        this.sendAction('onClose');\n      },\n\n\n      /**\n       * @public\n       * @event timecardSave\n       * @param dialog\n       * @async\n       * @returns {EmberPromise}\n       */\n      timecardSave: function timecardSave(dialog) {\n        var _this6 = this;\n\n        var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n        if (this.get('isFormInvalid')) {\n          this.get('analytics').addEvent(84);\n          return Ember.RSVP.reject((0, _utils.loc)('Errors must be fixed before saving.'));\n        } else {\n          var promise = void 0;\n\n          // group entry create if memberEntries exists\n          var isGroup = true;\n          if (!Ember.isEmpty(this.get('memberEntries'))) {\n            forceSave = true;\n            if (this.get('memberEntries.length') === 1 && this.get('memberEntries').isAny('id', this.get('auth.member.id'))) {\n              isGroup = false;\n              forceSave = false;\n            }\n            // override the validate, send false to forces safety signoff check, and pass isGroup true.\n            promise = Ember.RSVP.all(this.get('memberEntries').map(function (member) {\n              return _this6.saveTimeEntry(member, forceSave, isGroup);\n            }));\n          } else {\n            promise = this.saveTimeEntry(this.get('member'), forceSave);\n          }\n\n          return promise.then(function (model) {\n            if (typeof model !== 'string') {\n              _this6._setupEntry();\n              _this6.sendAction('onSave');\n            }\n            return model;\n          });\n        }\n      },\n      closeSafetyDialog: function closeSafetyDialog() {\n        this.cancelSafetySignoff();\n        this.set('showSafetyDialog', false);\n      },\n      closeSafetyRequiredDialog: function closeSafetyRequiredDialog() {\n        this.saveSafetySignoff();\n        this.set('showSignOffRequiredDialog', false);\n      },\n      safetyDialogSaveEntry: function safetyDialogSaveEntry() {\n        this.saveSafetySignoff();\n        this.set('showSafetyDialog', false);\n      },\n      projectMenuClosed: function projectMenuClosed(didSelectValue /*, selectedItem, openedBy*/) {\n        var _this7 = this;\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && didSelectValue) {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this7, {\n              costCodesAutoOpen: Date.now()\n            });\n          });\n        }\n      },\n      costCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n        var _this8 = this;\n\n        // Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n        // if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this8, {\n              costCode: null,\n              projectsAutoOpen: Date.now()\n            });\n          });\n        }\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/edit-open', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    classNames: ['v-time-card-dialog-edit-time-entry'],\n\n    auth: Ember.inject.service('auth'),\n\n    timeEntry: null,\n    member: null,\n    memberEntries: null,\n\n    project: null,\n    costCode: null,\n    equipment: null,\n\n    projectChanged: false,\n    costCodeChanged: false,\n    equipmentChanged: false,\n\n    startDateTime: null,\n    minDate: null,\n    maxDate: null,\n\n    breakTime: 0,\n    selectedProject: null,\n    selectedCostCode: null,\n    selectedEquipment: null,\n\n    costCodesAutoOpen: false,\n    projectsAutoOpen: false,\n    isLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n    disableCostCodeSelection: Ember.computed('selectedProject.id', 'isLinkedCostCodesEnabled', function () {\n      return Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'selectedProject.id'));\n    }),\n\n    init: function init() {\n      this._super();\n\n      var startDateTime = this.get('member.openEntry.startTime');\n\n      this.set('startDateTime', startDateTime);\n\n      this.set('minDate', _utils.Time.date().startOf('day').unix());\n      this.set('maxDate', _utils.Time.date().unix());\n      this.setTimeRoundingInterval();\n\n      this.set('breakTime', this.get('member.openEntry.breakTime'));\n\n      if (Ember.isNone(this.get('selectedProject'))) {\n        this.set('selectedProject', this.get('member.openEntry.project'));\n      }\n\n      if (Ember.isNone(this.get('selectedCostCode'))) {\n        this.set('selectedCostCode', this.get('member.openEntry.costCode'));\n      }\n\n      if (Ember.isNone(this.get('selectedEquipment'))) {\n        this.set('selectedEquipment', this.get('member.openEntry.equipment'));\n      }\n    },\n    setTimeRoundingInterval: function setTimeRoundingInterval() {\n      var interval = 1;\n\n      if (this.get('auth.organization.timeRounding')) {\n        interval = this.get('auth.organization.timeRoundingInterval') / 60;\n      }\n      this.set('timeRoundingInterval', interval);\n    },\n\n\n    setStartTime: Ember.observer('startDateTime', function () {\n      if (!Ember.isNone(this.get('startDateTime')) && this.get('member.openEntry.startTime') !== this.get('startDateTime')) {\n        this.set('member.openEntry.startTime', this.get('startDateTime'));\n      }\n    }),\n\n    actions: {\n      projectSelected: function projectSelected(item) {\n        // Logger.info(this, 'projectSelected', item);\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          var projectId = Ember.isNone(item) ? null : Ember.get(item, 'id');\n\n          if (projectId !== Ember.get(this, 'selectedProject.id')) {\n            this.send('costCodeSelected', null);\n          }\n        }\n\n        Ember.set(this, 'project', item);\n        Ember.set(this, 'projectChanged', true);\n      },\n      costCodeSelected: function costCodeSelected(item) {\n        // Logger.info(this, 'costCodeSelected', item);\n\n        Ember.set(this, 'costCode', item);\n        Ember.set(this, 'costCodeChanged', true);\n      },\n      equipmentSelected: function equipmentSelected(item) {\n        // Logger.info(this, 'equipmentSelected', item);\n\n        Ember.set(this, 'equipment', item);\n        Ember.set(this, 'equipmentChanged', true);\n      },\n\n\n      //closes dialog if clicked on cancel button or clicked in background window\n      close: function close() {\n        if (!Ember.isNone(this.get('member.openEntry')) && this.get('member.openEntry.hasDirtyAttributes')) {\n          this.get('member.openEntry').rollbackAttributes();\n        }\n\n        this.sendAction('onClose');\n      },\n      saveTimeEntry: function saveTimeEntry(dialog) {\n        var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n        var timeEntry = this.get('member.openEntry');\n        timeEntry.set('metaDaylightSavingTime', null);\n\n        var startTime = this.get('startDateTime');\n        if (timeEntry.get('startTime') !== startTime) {\n          timeEntry.set('startTime', startTime);\n        }\n\n        if (this.get('projectChanged')) {\n          if (!Ember.isNone(this.get('project.id'))) {\n            timeEntry.set('projectId', this.get('project.id'));\n            timeEntry.set('project', this.get('project'));\n          } else {\n            timeEntry.set('projectId', '_-NULL-_');\n            timeEntry.set('project', null);\n          }\n        }\n\n        if (this.get('costCodeChanged')) {\n          if (!Ember.isNone(this.get('costCode.id'))) {\n            timeEntry.set('costCodeId', this.get('costCode.id'));\n            timeEntry.set('costCode', this.get('costCode'));\n          } else {\n            timeEntry.set('costCodeId', '_-NULL-_');\n            timeEntry.set('costCode', null);\n          }\n        }\n\n        if (this.get('equipmentChanged')) {\n          if (!Ember.isNone(this.get('equipment.id'))) {\n            timeEntry.set('equipmentId', this.get('equipment.id'));\n            timeEntry.set('equipment', this.get('equipment'));\n          } else {\n            timeEntry.set('equipmentId', '_-NULL-_');\n            timeEntry.set('equipment', null);\n          }\n        }\n\n        if (timeEntry.get('hasDirtyAttributes') || timeEntry.get('timeEntryBreaks').filterBy('hasDirtyAttributes', true).get('length') > 0) {\n          if (timeEntry.get('hasDirtyAttributes')) {\n            timeEntry.set('actionType', 60);\n          } else if (timeEntry.get('timeEntryBreaks').filterBy('hasDirtyAttributes', true).get('length') > 0) {\n            timeEntry.set('actionType', 70);\n          }\n\n          timeEntry.get('timeEntryBreaks').forEach(function (item) {\n            if (item.get('hasDirtyAttributes') && !item.get('isNew') && !item.get('isDeleted')) {\n              item.set('actionType', 40);\n            }\n          });\n\n          return timeEntry.save(forceSave);\n        } else {\n          return Ember.RSVP.resolve();\n        }\n      },\n      projectMenuClosed: function projectMenuClosed(didSelectValue, selectedItem, openedBy) {\n        var _this = this;\n\n        // Logger.info(this, 'projectMenuClosed', didSelectValue, selectedItem, openedBy);\n\n        if (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n          if (didSelectValue) {\n            Ember.run.next(this, function () {\n              Ember.setProperties(_this, {\n                costCodesAutoOpen: Date.now()\n              });\n            });\n          } else if (Ember.isNone(selectedItem) && openedBy === 'auto') {\n            // Logger.info(this, 'projectMenuClosed', 'revert to initial');\n\n            Ember.run.next(this, function () {\n              Ember.setProperties(_this, {\n                projectChanged: false,\n                project: Ember.get(_this, 'member.openEntry.project'),\n                selectedProject: Ember.get(_this, 'member.openEntry.project'),\n\n                costCodeChanged: false,\n                costCode: Ember.get(_this, 'member.openEntry.costCode'),\n                selectedCostCode: Ember.get(_this, 'member.openEntry.costCode')\n              });\n            });\n          }\n        }\n      },\n      costCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n        var _this2 = this;\n\n        // Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n        // if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n        if (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n          Ember.run.next(this, function () {\n            Ember.setProperties(_this2, {\n              costCode: null,\n              projectsAutoOpen: Date.now()\n            });\n          });\n        }\n      }\n    }\n  });\n});","define('busy-app/components/time/time-entry/edit', ['exports', '@busy-web/utils', 'busy-app/utils/round-time'], function (exports, _utils, _roundTime) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-time-entry-edit'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tanalytics: Ember.inject.service('analytics'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\thasBackButton: false,\n\n\t\tstartDateTime: null,\n\t\tendDateTime: null,\n\t\toldStartDate: null,\n\n\t\tmaxDate: null,\n\n\t\tmodel: null,\n\t\tproject: null,\n\t\tcostCode: null,\n\n\t\tbreakTime: 0,\n\t\ttotalTime: 0,\n\n\t\tprojectIdChange: null,\n\t\tcostCodeIdChange: null,\n\t\tequipmentIdChange: null,\n\t\tisTooOldToEdit: false,\n\n\t\tinitialStartTime: null,\n\n\t\tallowSignatureInvalidationWarning: false,\n\n\t\tcostCodesAutoOpen: false,\n\t\tprojectsAutoOpen: false,\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\t\tdisableCostCodeSelection: Ember.computed('project.id', 'isLinkedCostCodesEnabled', function () {\n\t\t\treturn Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'project.id'));\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tthis.setTimeRoundingInterval();\n\n\t\t\tthis.set('__savedStart', this.get('model.startTime'));\n\t\t\tthis.set('__savedEnd', this.get('model.endTime'));\n\n\t\t\tvar startTime = this.roundTimestamp(this.get('model.startTime'), 'start');\n\t\t\tvar endTime = this.roundTimestamp(this.get('model.endTime'), 'end');\n\n\t\t\tthis.set('endDateTime', endTime);\n\t\t\tthis.set('oldStartDate', startTime);\n\t\t\tthis.set('startDateTime', startTime);\n\n\t\t\tEmber.run.schedule('afterRender', function () {\n\t\t\t\t_this.set('model.startTime', startTime);\n\t\t\t\t_this.set('model.endTime', endTime);\n\t\t\t});\n\n\t\t\tthis.set('maxDate', _utils.Time.date().endOf('day').unix());\n\n\t\t\tthis.set('project', this.get('model.project'));\n\t\t\tthis.set('costCode', this.get('model.costCode'));\n\t\t\tthis.set('equipment', this.get('model.equipment'));\n\n\t\t\tthis.set('initialStartTime', this.get('model.startTime'));\n\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\t_utils.Assert.isObject(this.get('model.member'));\n\t\t\t\tEmber.RSVP.resolve(this.get('model.member.memberLock')).then(function (memberLock) {\n\t\t\t\t\tif (_this.get('isSavedStartTimeLocked')) {\n\t\t\t\t\t\t_this.analyticsEventBlockedByLock();\n\t\t\t\t\t}\n\t\t\t\t\t_this.initObservers();\n\t\t\t\t\treturn memberLock;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.initObservers();\n\t\t\t}\n\t\t},\n\t\tinitObservers: function initObservers() {\n\t\t\tthis.setDates();\n\t\t\tthis.setBreakTimes();\n\t\t\tthis.adjustEndTime();\n\t\t\tthis.totalAdjusted();\n\t\t\tthis.totalTimeString();\n\t\t},\n\t\tsetTimeRoundingInterval: function setTimeRoundingInterval() {\n\t\t\tvar interval = 1;\n\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\tinterval = parseInt(this.get('auth.organization.timeRoundingInterval') / 60, 10);\n\t\t\t}\n\n\t\t\tthis.set('timeRoundingInterval', interval);\n\t\t},\n\n\n\t\t/**\n    * @method roundTotalTime\n    */\n\t\troundTimestamp: function roundTimestamp(timestamp, type) {\n\t\t\treturn (0, _roundTime.roundOrgTime)(this.get('auth.organization'), timestamp, { isStart: type === 'start', isEnd: type === 'end' });\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\t// get this sub-dialog to draw on top by creating it after the primary dialog is created\n\t\t\tif (this.get('features.signatures')) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tthis.set('allowSignatureInvalidationWarning', true);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tsetDates: Ember.observer('model.startTime', 'model.endTime', 'model.member.lockDate', function () {\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\tif (this.get('isSelectedStartTimeLocked')) {\n\t\t\t\t\tthis.analyticsEventBlockedByLock();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('model.startTime')) && !Ember.isNone(this.get('model.endTime')) && !Ember.isNone(this.get('model.member.lockDate'))) {\n\t\t\t\tif (this.get('model.startTime') > this.get('model.member.lockDate')) {\n\t\t\t\t\tthis.set('isTooOldToEdit', false);\n\n\t\t\t\t\tvar startTime = this.roundTimestamp(this.get('model.startTime'), 'start');\n\t\t\t\t\tvar endTime = this.roundTimestamp(this.get('model.endTime'), 'end');\n\n\t\t\t\t\tthis.set('endDateTime', endTime);\n\t\t\t\t\tthis.set('oldStartDate', startTime);\n\t\t\t\t\tthis.set('startDateTime', startTime);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('isTooOldToEdit', true);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tsetModel: Ember.observer('startDateTime', 'endDateTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime')) && !Ember.isNone(this.get('endDateTime'))) {\n\t\t\t\tthis.set('model.startTime', this.get('startDateTime'));\n\t\t\t\tthis.set('model.endTime', this.get('endDateTime'));\n\t\t\t}\n\t\t}),\n\n\t\tsetBreakTimes: Ember.observer('model.breakTime', function () {\n\t\t\tif (!Ember.isNone(this.get('model.breakTime'))) {\n\t\t\t\tthis.set('breakTime', this.get('model.breakTime'));\n\t\t\t}\n\t\t}),\n\n\t\tadjustEndTime: Ember.observer('startDateTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime'))) {\n\t\t\t\tvar start = this.get('startDateTime');\n\t\t\t\tvar breakTime = this.get('breakTime');\n\n\t\t\t\tvar oldStart = this.get('oldStartDate');\n\t\t\t\tif (Ember.isNone(oldStart)) {\n\t\t\t\t\toldStart = start;\n\t\t\t\t}\n\n\t\t\t\tif (_utils.Time.date(oldStart).date() !== _utils.Time.date(start).date()) {\n\t\t\t\t\tvar totalTime = this.get('totalTime');\n\t\t\t\t\tvar curDuration = totalTime + breakTime;\n\t\t\t\t\tthis.set('endDateTime', _utils.Time.date(start).add(curDuration, 'seconds').unix());\n\t\t\t\t} else {\n\t\t\t\t\tvar end = this.get('endDateTime');\n\t\t\t\t\tvar seconds = end - start - breakTime;\n\t\t\t\t\tthis.set('totalTime', seconds);\n\t\t\t\t}\n\n\t\t\t\tthis.set('oldStartDate', this.get('startDateTime'));\n\t\t\t}\n\t\t}),\n\n\t\ttotalAdjusted: Ember.observer('totalTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime')) && !Ember.isNone(this.get('endDateTime'))) {\n\t\t\t\tvar start = this.get('startDateTime');\n\t\t\t\tvar total = this.get('totalTime');\n\t\t\t\tvar breakTime = this.get('breakTime');\n\n\t\t\t\tvar totalTime = total + breakTime;\n\n\t\t\t\tthis.set('endDateTime', _utils.Time.date(start).add(totalTime, 'seconds').unix());\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * function that calculates the amount of hours and minutes\n   * from clock-in to clock-out input boxes.\n   *\n   * @public\n   * @method totalTimeString\n   */\n\t\ttotalTimeString: Ember.observer('endDateTime', 'breakTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime')) && !Ember.isNone(this.get('endDateTime'))) {\n\t\t\t\t//variables for setting up seconds, minutes, and hours\n\t\t\t\tvar seconds = this.get('endDateTime') - this.get('startDateTime');\n\t\t\t\tvar breakSeconds = this.get('breakTime');\n\n\t\t\t\tseconds = seconds - breakSeconds;\n\n\t\t\t\tthis.set('totalTime', seconds);\n\t\t\t}\n\t\t}),\n\n\t\tsubmitTimeEntry: function submitTimeEntry() {\n\t\t\tvar forceSave = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\tvar startTime = this.get('startDateTime');\n\t\t\tvar endTime = this.get('endDateTime');\n\t\t\tvar projectId = this.get('projectIdChange');\n\t\t\tvar costCodeId = this.get('costCodeIdChange');\n\t\t\tvar equipmentId = this.get('equipmentIdChange');\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tif (projectId === 'NONE') {\n\t\t\t\t\tprojectId = null;\n\t\t\t\t}\n\t\t\t\tthis.set('model.projectId', projectId);\n\t\t\t\tthis.set('model.project', this.get('project'));\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tif (costCodeId === 'NONE') {\n\t\t\t\t\tcostCodeId = null;\n\t\t\t\t}\n\t\t\t\tthis.set('model.costCodeId', costCodeId);\n\t\t\t\tthis.set('model.costCode', this.get('costCode'));\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(equipmentId)) {\n\t\t\t\tif (equipmentId === 'NONE') {\n\t\t\t\t\tequipmentId = null;\n\t\t\t\t}\n\t\t\t\tthis.set('model.equipmentId', equipmentId);\n\t\t\t\tthis.set('model.equipment', this.get('equipment'));\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(this.get('model.description'))) {\n\t\t\t\tvar description = this.get('model.description').trim();\n\t\t\t\tif (/^\\n+$/.test(description)) {\n\t\t\t\t\tdescription = null;\n\t\t\t\t} else if (/^\\t+$/.test(description)) {\n\t\t\t\t\tdescription = null;\n\t\t\t\t} else if (/^(\\r\\n)+$/.test(description)) {\n\t\t\t\t\tdescription = null;\n\t\t\t\t} else if (Ember.isEmpty(description)) {\n\t\t\t\t\tdescription = null;\n\t\t\t\t}\n\t\t\t\tthis.set('model.description', description);\n\t\t\t}\n\n\t\t\tif (this.get('model.startTime') !== startTime) {\n\t\t\t\tthis.set('model.startTime', startTime);\n\t\t\t}\n\n\t\t\tif (this.get('model.endTime') !== endTime) {\n\t\t\t\tthis.set('model.endTime', endTime);\n\t\t\t}\n\n\t\t\tvar hasBreakChanges = this.get('model.timeEntryBreaks').filterBy('hasDirtyAttributes', true).get('length');\n\t\t\tif (this.get('model.hasDirtyAttributes') || hasBreakChanges) {\n\t\t\t\tif (this.get('model.hasDirtyAttributes')) {\n\t\t\t\t\tthis.set('model.actionType', 60);\n\t\t\t\t} else if (hasBreakChanges) {\n\t\t\t\t\tthis.set('model.actionType', 70);\n\t\t\t\t}\n\n\t\t\t\tthis.get('model.timeEntryBreaks').forEach(function (item) {\n\t\t\t\t\tif (item.get('hasDirtyAttributes') && !item.get('isNew') && !item.get('isDeleted')) {\n\t\t\t\t\t\titem.set('actionType', 40);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn this.get('model').save(forceSave);\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n  * If the feature is enabled, and there is a lock on the member, return the lock date\n  *\n  * @public\n  * @property memberLockDate\n  * @type {number}\n  * @default null\n  */\n\t\tmemberLockDate: Ember.computed('model.member.memberLock.effectiveDate', function () {\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\treturn this.get('model.member.memberLock.effectiveDate');\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Return a the `memberLockDate` as a `Moment` object\n   *\n   * @public\n   * @property memberLockDateTime\n   * @type {Moment}\n   * @default null\n   */\n\t\tmemberLockDateTime: Ember.computed('memberLockDate', function () {\n\t\t\tif (!Ember.isNone(this.get('memberLockDatae'))) {\n\t\t\t\treturn _utils.Time.date(this.get('memberLockDate'));\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Checks if any validation errors have been set\n   *\n   * @public\n   * @property isSavingDisabled\n   * @type {boolean}\n   */\n\t\tisSavingDisabled: Ember.computed.or('isTooOldToEdit', 'isSavedStartTimeLocked', 'isSelectedStartTimeLocked'),\n\n\t\t/**\n   * Logic flip of `isSavingDisabled`\n   *\n   * @public\n   * @property isSavingEnabled\n   * @type {boolean}\n   */\n\t\tisSavingEnabled: Ember.computed.not('isSavingDisabled'),\n\n\t\t/**\n   * Is the original `startTime` before the lock date\n   *\n   * @public\n   * @property isSavedStartTimeLocked\n   * @type {boolean}\n   */\n\t\tisSavedStartTimeLocked: Ember.computed('features.locks', 'memberLockDate', 'initialStartTime', 'model.member', function () {\n\t\t\tif (!this.get('features.locks')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar lockDate = this.get('memberLockDate');\n\t\t\treturn !Ember.isNone(lockDate) && this.get('initialStartTime') <= lockDate;\n\t\t}),\n\n\t\t/**\n   * Is the currently selected `startTime` before the lock date\n   *\n   * @public\n   * @property isSelectedStartTimeLocked\n   * @type {boolean}\n   */\n\t\tisSelectedStartTimeLocked: Ember.computed('features.locks', 'memberLockDate', 'startDateTime', 'model.member', function () {\n\t\t\tif (!this.get('features.locks')) {\n\t\t\t\treturn false;\n\t\t\t} else if (Ember.isNone(this.get('startDateTime'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar lockDate = this.get('memberLockDate');\n\t\t\treturn !Ember.isNone(lockDate) && this.get('startDateTime') <= lockDate;\n\t\t}),\n\n\t\t/**\n   * @private\n   * @method analyticsEventBlockedByLock\n   * @return {Object}\n   */\n\t\tanalyticsEventBlockedByLock: function analyticsEventBlockedByLock() {\n\t\t\tthis.get('analytics').addEvent(84);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsaveAction: function saveAction(dialog, forceSave) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\treturn this.submitTimeEntry(forceSave).then(function (model) {\n\t\t\t\t\t_this2.sendAction('onSaved', model);\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar timeEntry = this.get('model');\n\t\t\t\ttimeEntry.deleteRecord();\n\t\t\t\treturn timeEntry.save().then(function () {\n\t\t\t\t\t_this3.sendAction('onDelete');\n\t\t\t\t\treturn;\n\t\t\t\t});\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t},\n\t\t\tcancelEdit: function cancelEdit() {\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t},\n\t\t\tprojectSelected: function projectSelected(item) {\n\t\t\t\t// Logger.info(this, 'projectSelected', item);\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tif (Ember.isNone(item) || Ember.get(item, 'id') !== Ember.get(this, 'projectIdChange')) {\n\t\t\t\t\t\tthis.send('costCodeSelected', null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(item) && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object') {\n\t\t\t\t\tthis.set('projectIdChange', item.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('projectIdChange', 'NONE');\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeSelected: function costCodeSelected(item) {\n\t\t\t\t// Logger.info(this, 'costCodeSelected', item);\n\n\t\t\t\tif (!Ember.isNone(item) && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object') {\n\t\t\t\t\tthis.set('costCodeIdChange', item.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('costCodeIdChange', 'NONE');\n\t\t\t\t}\n\t\t\t},\n\t\t\tequipmentSelected: function equipmentSelected(item) {\n\t\t\t\tif (!Ember.isNone(item) && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object') {\n\t\t\t\t\tthis.set('equipmentIdChange', item.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('equipmentIdChange', 'NONE');\n\t\t\t\t}\n\t\t\t},\n\t\t\tprojectMenuClosed: function projectMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t// Logger.info(this, 'projectMenuClosed', didSelectValue, selectedItem, openedBy);\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tif (didSelectValue) {\n\t\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\t\tEmber.setProperties(_this4, {\n\t\t\t\t\t\t\t\tcostCodesAutoOpen: Date.now()\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (Ember.isNone(selectedItem) && openedBy === 'auto') {\n\t\t\t\t\t\t// Logger.info(this, 'projectMenuClosed', 'revert to initial');\n\n\t\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\t\tEmber.setProperties(_this4, {\n\t\t\t\t\t\t\t\tprojectIdChange: false,\n\t\t\t\t\t\t\t\tproject: Ember.get(_this4, 'model.project'),\n\n\t\t\t\t\t\t\t\tcostCodeIdChange: false,\n\t\t\t\t\t\t\t\tcostCode: Ember.get(_this4, 'model.costCode')\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\t// Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n\t\t\t\t// if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this5, {\n\t\t\t\t\t\t\tcostCode: null,\n\t\t\t\t\t\t\tprojectsAutoOpen: Date.now()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/employee-list', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-time-entry-employee-list'],\n\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\n\t\tmodel: null,\n\t\tstart: null,\n\t\tend: null,\n\t\tisDirty: false,\n\t\tgroupByMember: false,\n\t\tgbmModel: null,\n\t\tunassignedProjects: false,\n\t\tequipmentHeader: false,\n\t\theaderTitle: null,\n\n\t\tmember: null,\n\t\tproject: null,\n\t\tequipment: null,\n\n\t\tisLoading: false,\n\n\t\teditEntry: null,\n\t\teditTimeOff: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.loadTimeEntries();\n\n\t\t\tif (Ember.isNone(this.get('headerTitle'))) {\n\t\t\t\tthis.set('headerTitle', 'Time Entries');\n\t\t\t}\n\t\t},\n\n\n\t\tdateRangeString: Ember.computed('start', 'end', function () {\n\t\t\tvar range = '';\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tvar start = _utils.Time.date(this.get('start'));\n\t\t\t\tvar end = _utils.Time.date(this.get('end'));\n\t\t\t\tvar format = 'MMM DD';\n\t\t\t\tif (start.year() !== end.year()) {\n\t\t\t\t\tformat = 'MMM DD, YYYY';\n\t\t\t\t}\n\t\t\t\trange = start.format(format) + ' - ' + end.format('MMM DD, YYYY');\n\t\t\t}\n\t\t\treturn range;\n\t\t}),\n\n\t\tisCustomDate: Ember.computed('start', function () {\n\t\t\treturn this.get('start') === 0 ? false : true;\n\t\t}),\n\n\t\tloadTimeEntries: Ember.observer('start', 'end', 'member.id', 'project.id', 'equipment.equipment.id', function () {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('isDirty', false);\n\t\t\t\tthis.findTimeEntries();\n\t\t\t}\n\t\t}),\n\n\t\tfindTimeEntries: function findTimeEntries() {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tif (Ember.isNone(start) && Ember.isNone(end)) {\n\t\t\t\tstart = 0;\n\t\t\t\tend = _utils.Time.date().endOf('day').unix();\n\n\t\t\t\tthis.set('start', start);\n\t\t\t\tthis.set('end', end);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(start) && !Ember.isNone(end)) {\n\t\t\t\tthis.set('isLoading', true);\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmodels: this.loadTimeEntryModels(start, end),\n\t\t\t\t\tgroupMembers: this.loadGroupMembers()\n\t\t\t\t}).then(function (_ref) {\n\t\t\t\t\tvar models = _ref.models,\n\t\t\t\t\t    groupMembers = _ref.groupMembers;\n\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t// attach the member to each of the time-off entries so that the edit dialog works\n\t\t\t\t\t\tvar member = _this.get('member');\n\n\t\t\t\t\t\tif (Ember.get(_this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\t\tmodels = _this.applyGroupPermissionScoping(models, groupMembers);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(member)) {\n\t\t\t\t\t\t\tmodels.forEach(function (model) {\n\t\t\t\t\t\t\t\tmodel.get('model').forEach(function (item) {\n\t\t\t\t\t\t\t\t\t// set the member if the member is not already set.\n\t\t\t\t\t\t\t\t\tif (Ember.isNone(item.get('model.member'))) {\n\t\t\t\t\t\t\t\t\t\titem.set('model.member', member);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_this.set('model', models);\n\t\t\t\t\t}\n\t\t\t\t}).finally(function () {\n\t\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t\t_this.set('isLoading', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tloadTimeEntryModels: function loadTimeEntryModels(start, end) {\n\t\t\tvar exclusive = false;\n\n\t\t\tvar projectId = this.get('project.id');\n\t\t\tif (this.get('project.isUnassigned')) {\n\t\t\t\tprojectId = '_-NULL-_';\n\n\t\t\t\tif (!Ember.isNone(this.get('project.parentProjectId'))) {\n\t\t\t\t\tprojectId = this.get('project.parentProjectId');\n\t\t\t\t\texclusive = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.get('unassignedProjects')) {\n\t\t\t\texclusive = true;\n\t\t\t}\n\n\t\t\treturn this.get('store').manager('time-entry-pto-day', start, end, this.get('member.id'), projectId, null, this.get('equipment.equipment.id'), exclusive, 'desc');\n\t\t},\n\t\tloadGroupMembers: function loadGroupMembers() {\n\t\t\tvar member = Ember.get(this, 'auth.member');\n\n\t\t\t// short circuit in test mode\n\t\t\tif (Ember.isNone(member)) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tvar memberGroupId = Ember.get(member, 'memberGroupId');\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\treturn Ember.isNone(memberGroupId) ? Ember.RSVP.resolve([member]) : this.get('store').findAll('member', { member_group_id: memberGroupId });\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\t\tapplyGroupPermissionScoping: function applyGroupPermissionScoping(models, groupMembers) {\n\t\t\tvar groupMemberIds = new Set(groupMembers.mapBy('id'));\n\n\t\t\t// only show days that have time entries to display\n\t\t\treturn models.filter(function (day) {\n\n\t\t\t\t// only allow access to time entries for members who are in the users group\n\t\t\t\tvar dayTimeEntries = Ember.get(day, 'model').filter(function (timeEntryData) {\n\t\t\t\t\tvar memberId = Ember.get(timeEntryData, 'model.memberId');\n\t\t\t\t\tvar isMemberInGroup = groupMemberIds.has(memberId);\n\n\t\t\t\t\treturn isMemberInGroup;\n\t\t\t\t});\n\n\t\t\t\tEmber.set(day, 'model', dayTimeEntries);\n\n\t\t\t\treturn Ember.get(day, 'model.length');\n\t\t\t});\n\t\t},\n\n\n\t\tgroupedByMember: Ember.observer('groupByMember', 'model', function () {\n\t\t\tvar model = this.get('model');\n\t\t\tif (this.get('groupByMember') && !Ember.isNone(model)) {\n\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\tvar groupedResult = [];\n\t\t\t\t\titem.get('model').forEach(function (entry) {\n\t\t\t\t\t\tvar member = groupedResult.findBy('member.id', entry.get('model.member.id'));\n\t\t\t\t\t\tif (!member) {\n\t\t\t\t\t\t\tmember = Ember.Object.create({\n\t\t\t\t\t\t\t\tmember: entry.get('model.member'),\n\t\t\t\t\t\t\t\tcontents: []\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tgroupedResult.pushObject(member);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmember.get('contents').pushObject(entry);\n\t\t\t\t\t});\n\t\t\t\t\titem.set('groupedResult', groupedResult);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\tsavedAction: function savedAction() {\n\t\t\t\tthis.set('isDirty', true);\n\t\t\t\tthis.findTimeEntries();\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tif (this.get('isDirty')) {\n\t\t\t\t\tthis.sendAction('onChanged');\n\t\t\t\t}\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\topenTimeOffEntry: function openTimeOffEntry(entry, member) {\n\t\t\t\tif (this.get('access').canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\tthis.set('editTimeOff', entry);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenTimeEntry: function openTimeEntry(entry, member) {\n\t\t\t\tif (this.get('access').canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\tthis.set('editEntry', entry);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelEdit: function cancelEdit() {\n\t\t\t\tif (!Ember.isNone(this.get('editTimeOff'))) {\n\t\t\t\t\tthis.get('editTimeOff').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOff', null);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/injury-protocol', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/log', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-time-entry-log'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmodel: null,\n\n\t\tmergedModel: null,\n\t\tshowMergedHistory: false,\n\t\tshowGPSMapDialog: false,\n\n\t\ttimeEntry: null,\n\t\tmapItem: null,\n\n\t\tshowDetails: false,\n\t\tshowMap: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.loadData();\n\t\t},\n\n\n\t\tloadData: Ember.observer('timeEntry.id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('timeEntry.id'))) {\n\t\t\t\tthis.get('store').manager('time-entry-log', this.get('timeEntry.id')).then(function (model) {\n\t\t\t\t\t_this.set('model', model);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tloadMergedData: function loadMergedData(id) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (Ember.isNone(this.get('mergedModel')) || this.get('mergedModel.id') !== id) {\n\t\t\t\tthis.get('store').manager('time-entry-log', id).then(function (model) {\n\t\t\t\t\t_this2.set('mergedModel', model);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.set('showMergedHistory', true);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tshowEditDetails: function showEditDetails(item) {\n\t\t\t\titem.set('showDetails', true);\n\t\t\t},\n\t\t\tshowMap: function showMap(item) {\n\t\t\t\tvar entry = item.get('locationInfo');\n\t\t\t\tentry.set('showMap', true);\n\t\t\t\tthis.set('mapItem', entry);\n\t\t\t},\n\t\t\thideEditDetails: function hideEditDetails(item) {\n\t\t\t\titem.set('showDetails', false);\n\t\t\t},\n\t\t\tviewMergedHistory: function viewMergedHistory(item) {\n\t\t\t\tthis.loadMergedData(item.get('model.mergedTimeEntryId'));\n\t\t\t},\n\t\t\tcancelMergedHistory: function cancelMergedHistory() {\n\t\t\t\tthis.set('showMergedHistory', false);\n\t\t\t},\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tshowLocation: function showLocation() {\n\t\t\t\tthis.set('showGPSMapDialog', true);\n\t\t\t},\n\t\t\tcloseGPSDialog: function closeGPSDialog() {\n\t\t\t\tthis.set('mapItem.showMap', false);\n\t\t\t\tthis.set('showGPSMapDialog', false);\n\t\t\t\tthis.set('mapItem', null);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/safety-required', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tactions: {\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tviewSafetyReport: function viewSafetyReport() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t\tEmber.getOwner(this).lookup('route:application').transitionTo('report.safety-signature');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/safety', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/round-time'], function (exports, _utils, _logger, _roundTime) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Component.extend({\n    auth: Ember.inject.service('auth'),\n    store: Ember.inject.service('store'),\n\n    organization: Ember.computed('auth.organization', function () {\n      return Ember.get(this, 'auth.organization');\n    }),\n\n    member: null,\n    memberEntries: null,\n    safetyObject: null,\n    timeEntry: null,\n\n    timeAccurateReason: '',\n    injuryDescription: '',\n    breakFollowedReason: '',\n    breakFollowed: true,\n    showCaliforniaBreakDialog: false,\n    showRestBreakRequirements: false,\n    caBreakMismatch: false,\n\n    init: function init() {\n      this._super();\n\n      // get member if only one member entry was submitted\n      if (Ember.get(this, 'memberEntries.length') === 1) {\n        var member = Ember.get(this, 'memberEntries.firstObject');\n        if (member.id === Ember.get(this, 'auth.member.id')) {\n          Ember.set(this, 'member', member);\n        }\n      }\n\n      this.createNewSafetySignature();\n    },\n\n\n    headerTitle: Ember.computed('auth.organization.safetySignatureMessage', function () {\n      if (Ember.get(this, 'auth.organization.safetySignatureMessage')) {\n        return Ember.get(this, 'auth.organization.safetySignatureMessage');\n      } else {\n        return 'Were you injured?';\n      }\n    }),\n\n    isToday: Ember.computed('timeEntry', function () {\n      var now = _utils.Time.nistTimestamp();\n      var timeEntryEnd = Ember.get(this, 'timeEntry.endTime');\n      return _utils.Time.date(timeEntryEnd).startOf('day').unix() === _utils.Time.date(now).startOf('day').unix();\n    }),\n\n    timeInaccurate: Ember.computed('safetyObject.timeAccurate', function () {\n      if (!Ember.isEmpty(Ember.get(this, 'safetyObject.timeAccurate'))) {\n        return !Ember.get(this, 'safetyObject.timeAccurate') || false;\n      }\n      return false;\n    }),\n\n    createNewSafetySignature: function createNewSafetySignature() {\n      var offset = _utils.Time.timezone(Ember.get(this, 'date'));\n      var isDST = _utils.Time.isDST(Ember.get(this, 'dateStamp'));\n      var timeEntryEnd = Ember.get(this, 'timeEntry.endTime');\n      var endTime = this.getEndTime();\n      var startTime = _utils.Time.date(Ember.get(this, 'timeEntry.startTime')).startOf('day').unix();\n      if (!Ember.isNone(timeEntryEnd) && Ember.get(this, 'isToday')) {\n        endTime = timeEntryEnd;\n      }\n\n      if (!Ember.isNone(timeEntryEnd) && !Ember.get(this, 'isToday')) {\n        endTime = _utils.Time.date(timeEntryEnd).endOf('day').unix();\n      }\n\n      var endDay = _utils.Time.date(endTime).startOf('day').unix();\n\n      if (startTime !== endDay) {\n        startTime = endDay;\n      }\n\n      var createdOn = endTime - offset;\n\n      // this dialog should only be shown for auth member\n      if (Ember.get(this, 'member.id') === Ember.get(this, 'auth.member.id')) {\n        var safetyObject = Ember.get(this, 'store').createRecord('safety-signature', {\n          memberId: Ember.get(this, 'member.id'),\n          startTime: startTime,\n          proxyMemberId: Ember.get(this, 'auth.member.id'),\n          createdOnOffset: offset,\n          createdOnDst: isDST,\n          startTimeOffset: offset,\n          endTimeOffset: offset,\n          startTimeDst: isDST,\n          endTimeDst: isDST,\n          endTime: endTime,\n          deviceType: 'Web Browser',\n          createdOn: createdOn\n        });\n        Ember.set(this, 'safetyObject', safetyObject);\n      } else {\n        // close dialog and show error in console\n        _logger.default.error(\"Safety dialog was shown for a member other than the auth member\");\n        this.sendAction('onClose');\n      }\n    },\n    getEndTime: function getEndTime() {\n      return (0, _roundTime.roundOrgTime)(Ember.get(this, \"auth.organization\"), _utils.Time.nistTimestamp(), { isEnd: true, isSwitch: false });\n    },\n    saveSafetySignature: function saveSafetySignature() {\n      var _this = this;\n\n      var safetySignature = Ember.get(this, 'auth.organization.safetySignature');\n      var timeAccuracy = Ember.get(this, 'auth.organization.timeAccuracy');\n      var breakPolicy = Ember.get(this, 'auth.organization.breakPolicy');\n      var injuredReason = Ember.getWithDefault(this, 'injuredReason', '').trim();\n      var timeAccurateReason = Ember.getWithDefault(this, 'timeAccurateReason', '').trim();\n      var safetyObject = Ember.get(this, 'safetyObject');\n      var breakFollowedReason = Ember.getWithDefault(this, 'breakFollowedReason', '').trim();\n\n      // verify that safetySignature is enabled and\n      // the injured question has been answered.\n      if (safetySignature) {\n        if (Ember.isNone(Ember.get(safetyObject, 'injured'))) {\n          return Ember.RSVP.reject(\"Were you injured? You must select yes or no.\");\n        }\n\n        if (!Ember.isEmpty(injuredReason)) {\n          Ember.set(safetyObject, 'injuryDescription', injuredReason);\n        }\n      }\n\n      // verify that breakPolicy is enabled and\n      // the break policy question has been answered.\n      if (breakPolicy) {\n        if (Ember.isNone(Ember.get(safetyObject, 'breakPolicyFollowed'))) {\n          return Ember.RSVP.reject('Did you follow break policy? You must select yes or no.');\n        }\n\n        //set break policy reason\n        if (!Ember.isEmpty(breakFollowedReason)) {\n          Ember.set(safetyObject, 'breakPolicyFollowedReason', breakFollowedReason);\n        }\n      }\n\n      // verify that timeAccuracy is enabled and\n      // the timeAccurate question has been answered.\n      if (timeAccuracy) {\n        if (Ember.isNone(Ember.get(safetyObject, 'timeAccurate'))) {\n          return Ember.RSVP.reject(\"Is your time accurate? You must select yes or no.\");\n        }\n\n        // set time accurate reason\n        if (!Ember.isEmpty(timeAccurateReason)) {\n          Ember.set(safetyObject, 'timeAccurateReason', timeAccurateReason);\n        }\n      }\n\n      // save the safetyObject if either safetySignature or timeAccuracy is enabled\n      // this is a reduntant check since this dialog should not be shown if one of the\n      // following options is not enabled\n      if (safetySignature || timeAccuracy || breakPolicy) {\n        var offset = _utils.Time.timezone(Ember.get(this, 'date'));\n        var endTime = this.getEndTime();\n        var createdOn = endTime - offset;\n\n        Ember.setProperties(safetyObject, { endTime: endTime, createdOn: createdOn });\n\n        return safetyObject.save().then(function () {\n          _this.sendAction('afterSave', Ember.get(safetyObject, 'injured'), Ember.get(safetyObject, 'timeAccurate'), Ember.get(safetyObject, 'breakPolicyFollowed'), endTime);\n        });\n      } else {\n        return Ember.RSVP.resolve();\n      }\n    },\n    checkCaBreaks: function checkCaBreaks() {\n      var totalTime = this.get('timeEntry.totalTime');\n      var breakTime = this.get('timeEntry.breakTime');\n\n      if (totalTime > 18000 && totalTime < 36000) {\n        if (breakTime < 1800) {\n          this.set('caBreakMismatch', true);\n        }\n      } else if (totalTime > 36000 && totalTime < 54000) {\n        if (breakTime < 3600) {\n          this.set('caBreakMismatch', true);\n        }\n      } else if (totalTime > 54000 && totalTime < 72000) {\n        if (breakTime < 5600) {\n          this.set('caBreakMismatch', true);\n        }\n      } else if (totalTime > 72000) {\n        if (breakTime < 7200) {\n          this.set('caBreakMismatch', true);\n        }\n      }\n    },\n\n\n    actions: {\n      close: function close() {\n        this.sendAction('onClose');\n      },\n      setInjured: function setInjured(item) {\n        Ember.set(this, 'safetyObject.injured', item);\n      },\n      setBreakFollowed: function setBreakFollowed(item) {\n        Ember.set(this, 'safetyObject.breakPolicyFollowed', item);\n        Ember.set(this, 'breakFollowed', item);\n        if (this.get('organization.breakPolicyCalifornia')) {\n          this.checkCaBreaks();\n        }\n      },\n      setTimeAccuracy: function setTimeAccuracy(item) {\n        Ember.set(this, 'safetyObject.timeAccurate', item);\n      },\n      saveInjured: function saveInjured() {\n        if (!Ember.isNone(Ember.get(this, 'safetyObject'))) {\n          return this.saveSafetySignature();\n        } else {\n          return Ember.RSVP.reject('Signoff can not be performed for other employees.');\n        }\n      },\n      openCaliforniaBreakDialog: function openCaliforniaBreakDialog() {\n        this.set('showCaliforniaBreakDialog', true);\n      },\n      closeCaliforniaBreakDialog: function closeCaliforniaBreakDialog() {\n        this.set('showCaliforniaBreakDialog', false);\n      },\n      openRestBreakRequirements: function openRestBreakRequirements() {\n        this.set('showRestBreakRequirements', true);\n      }\n    }\n  });\n});","define(\"busy-app/components/time/time-entry/status\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/time-entry\"], function (exports, _utils, _timeEntry) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: [\"v-time-card-status\"],\n\n\t\tstore: Ember.inject.service(\"store\"),\n\t\tauth: Ember.inject.service(\"auth\"),\n\t\trouter: Ember.inject.service(\"router\"),\n\t\tinterop: Ember.inject.service(\"interop\"),\n\n\t\tselectMenu: null,\n\n\t\thasHeader: false,\n\t\thasLocation: false,\n\t\tisDisabled: false,\n\t\tisSuspended: false,\n\t\tshowNewTimeEntryDialog: false,\n\t\tshowNewTimeOffDialog: false,\n\t\tshowClockInAtDialog: false,\n\t\tshowClockOutAtDialog: false,\n\t\tshowClockInDialog: false,\n\t\tshowEditDialog: false,\n\n\t\tactionType: null,\n\t\ttodaysEntries: null,\n\t\tdayObject: null,\n\t\tmember: null,\n\t\teditTime: null,\n\t\torganization: null,\n\n\t\ttodaySeconds: 0,\n\t\ttodayBreak: 0,\n\n\t\tdirtyFlag: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tif (!Ember.isEmpty(this.get(\"auth.member\"))) {\n\t\t\t\tthis.setSelectMenu();\n\t\t\t\tthis.getTodaysCards();\n\t\t\t\tthis.checkLocations();\n\t\t\t} else {\n\t\t\t\tthis.get(\"interop\").openReactApp(\"/logout\");\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Sets up the select Menu for this view\n   *\n   * Observes member.openEntry.id on Init\n   *\n   * @public\n   * @method setSelectMenu\n   */\n\t\tsetSelectMenu: Ember.observer(\"member.openEntry.id\", function () {\n\t\t\tif (Ember.isNone(this.get(\"member.openEntry\"))) {\n\t\t\t\tthis.set(\"selectMenu\", [Ember.Object.create({\n\t\t\t\t\tkey: \"new-time-entry\",\n\t\t\t\t\tvalue: (0, _utils.loc)(\"New Time Entry\")\n\t\t\t\t}), Ember.Object.create({ key: \"clock-in-at\", value: (0, _utils.loc)(\"Clock In At\") }), Ember.Object.create({ key: \"new-time-off\", value: (0, _utils.loc)(\"Add Time Off\") })]);\n\t\t\t} else {\n\t\t\t\tthis.set(\"selectMenu\", [Ember.Object.create({\n\t\t\t\t\tkey: \"new-time-entry\",\n\t\t\t\t\tvalue: (0, _utils.loc)(\"New Time Entry\")\n\t\t\t\t}), Ember.Object.create({ key: \"clock-out-at\", value: (0, _utils.loc)(\"Clock Out At\") }), Ember.Object.create({ key: \"new-time-off\", value: (0, _utils.loc)(\"Add Time Off\") })]);\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Gets all of the timcards with a timestamp\n   * that starts on the current day.\n   *\n   * @public\n   * @method getTodaysCards\n   */\n\t\tgetTodaysCards: function getTodaysCards() {\n\t\t\tvar _this = this;\n\n\t\t\t//: observer('member.id', 'member.timeEntries.[]', 'member.timeEntries.@each.id', 'member.openEntry.id', function() {\n\t\t\tEmber.RSVP.resolve(this.get(\"member\")).then(function (member) {\n\t\t\t\tvar todayStart = _utils.Time.date().startOf(\"day\").unix();\n\t\t\t\tvar todayEnd = _utils.Time.date().endOf(\"day\").unix();\n\n\t\t\t\tvar timeEntryQuery = {\n\t\t\t\t\t_gte: { end_time: todayStart },\n\t\t\t\t\t_lte: { start_time: todayEnd },\n\t\t\t\t\tmember_id: member.id\n\t\t\t\t};\n\t\t\t\tvar segmentQuery = {\n\t\t\t\t\t_gte: { start_time: todayStart },\n\t\t\t\t\t_lte: { end_time: todayEnd },\n\t\t\t\t\tdeleted_on: null\n\t\t\t\t};\n\n\t\t\t\t_this.get(\"store\").findAll(\"time-entry\", timeEntryQuery).then(function (entries) {\n\t\t\t\t\t_this.get(\"store\").findWhereIn(\"segment\", \"time_entry_id\", entries.mapBy(\"id\"), segmentQuery).then(function (data) {\n\t\t\t\t\t\tEmber.RSVP.all(data.map(function (s) {\n\t\t\t\t\t\t\treturn Ember.RSVP.resolve(s.get(\"seconds\"));\n\t\t\t\t\t\t})).then(function () {\n\t\t\t\t\t\t\tif (!_this.get(\"isDestroyed\")) {\n\t\t\t\t\t\t\t\tvar todaySeconds = data.mapBy(\"totalSeconds\").reduce(function (a, b) {\n\t\t\t\t\t\t\t\t\treturn a + b;\n\t\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t\t\tvar todayBreak = data.mapBy(\"breakSeconds\").reduce(function (a, b) {\n\t\t\t\t\t\t\t\t\treturn a + b;\n\t\t\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\t\t\tEmber.setProperties(_this, { todaySeconds: todaySeconds, todayBreak: todayBreak });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\topenBreakTime: Ember.computed(\"member.openEntry.{timeEntryBreaks.@each.id,elapsedTime}\", function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get(\"member.openEntry\"))) {\n\t\t\t\tvar dayStart = _utils.Time.date().startOf(\"day\").unix();\n\t\t\t\tvar dayEnd = _utils.Time.date().endOf(\"day\").unix();\n\t\t\t\tvar time = _timeEntry.default.totalBreakTime(this.get(\"member.openEntry\"), dayStart, dayEnd, true);\n\t\t\t\ttotal += time.total;\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\topenTotalTime: Ember.computed(\"member.openEntry.totalTime\", \"openBreakTime\", function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get(\"member.openEntry\"))) {\n\t\t\t\tvar dayStart = _utils.Time.date().startOf(\"day\").unix();\n\t\t\t\tif (this.get(\"member.openEntry.startTime\") < dayStart) {\n\t\t\t\t\ttotal += _utils.Time.date().unix() - dayStart - this.getWithDefault(\"openBreakTime\", 0);\n\t\t\t\t} else {\n\t\t\t\t\ttotal += this.getWithDefault(\"member.openEntry.totalTime\", 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tbreakTime: Ember.computed(\"todayBreak\", \"openBreakTime\", function () {\n\t\t\treturn this.getWithDefault(\"todayBreak\", 0) + this.getWithDefault(\"openBreakTime\", 0);\n\t\t}),\n\n\t\ttotalTime: Ember.computed(\"todaySeconds\", \"openTotalTime\", function () {\n\t\t\treturn this.getWithDefault(\"todaySeconds\", 0) + this.getWithDefault(\"openTotalTime\", 0);\n\t\t}),\n\n\t\t//overtimeTime: computed('todaysEntries.overtimeSeconds', 'member.openEntry.totalTime', function() {\n\t\t//\tlet total = this.get('todaysEntries.overtimeSeconds') || 0;\n\t\t//\tif (this.get('todaysEntries.overtimeSeconds') !== 0) {\n\t\t//\t\ttotal = total + this.get('member.openEntry.totalTime');\n\t\t//\t}\n\t\t//\treturn total;\n\t\t//}),\n\n\t\tupdateData: function updateData() {\n\t\t\tthis.set(\"dirtyFlag\", true);\n\t\t},\n\n\n\t\tcheckLocations: Ember.observer(\"member.openEntry\", function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.get(\"member.openEntry\"))) {\n\t\t\t\tvar startTime = _utils.Time.date(this.get(\"member.openEntry.startTime\")).startOf(\"minute\").unix();\n\t\t\t\tvar now = _utils.Time.date().unix();\n\t\t\t\tvar query = {\n\t\t\t\t\t_lte: { time_local: now },\n\t\t\t\t\t_gte: { time_local: startTime },\n\t\t\t\t\tmember_id: this.get(\"member.id\"),\n\t\t\t\t\tdeleted_on: \"_-NULL-_\",\n\t\t\t\t\tarchived_on: \"_-NULL-_\"\n\t\t\t\t};\n\n\t\t\t\tthis.get(\"store\").query(\"member-location\", query).then(function (results) {\n\t\t\t\t\tif (results.content.length > 0) {\n\t\t\t\t\t\t_this2.set(\"hasLocations\", true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this2.set(\"hasLocations\", false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.set(\"hasLocations\", false);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\t//Set each selectMenu item\n\t\t\tselectItemAction: function selectItemAction(key) {\n\t\t\t\tkey = key.get(\"key\");\n\t\t\t\tif (key === \"new-time-entry\") {\n\t\t\t\t\tthis.set(\"showNewTimeEntryDialog\", true);\n\t\t\t\t} else if (key === \"clock-in-at\") {\n\t\t\t\t\tthis.set(\"isSuspended\", false);\n\t\t\t\t\tthis.set(\"isDisabled\", false);\n\t\t\t\t\tthis.set(\"showClockInAtDialog\", true);\n\t\t\t\t} else if (key === \"clock-out-at\") {\n\t\t\t\t\tthis.set(\"isSuspended\", false);\n\t\t\t\t\tthis.set(\"isDisabled\", false);\n\t\t\t\t\tthis.set(\"showClockOutAtDialog\", true);\n\t\t\t\t} else if (key === \"new-time-off\") {\n\t\t\t\t\tthis.set(\"isSuspended\", false);\n\t\t\t\t\tthis.set(\"isDisabled\", false);\n\t\t\t\t\tthis.set(\"showNewTimeOffDialog\", true);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenEditDialog: function openEditDialog() {\n\t\t\t\tthis.set(\"isDisabled\", true);\n\t\t\t\tthis.set(\"isSuspended\", true);\n\t\t\t\tthis.set(\"showEditDialog\", true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tif (!Ember.isNone(this.get(\"member.openEntry\")) && this.get(\"member.openEntry.hasDirtyAttributes\")) {\n\t\t\t\t\tthis.get(\"member.openEntry\").rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tthis.set(\"isSuspended\", false);\n\t\t\t\tthis.set(\"isDisabled\", false);\n\t\t\t\tthis.set(\"showEditDialog\", false);\n\t\t\t},\n\t\t\topenLocationRoute: function openLocationRoute() {\n\t\t\t\tthis.sendAction(\"openLoacation\", this.get(\"member\"));\n\t\t\t},\n\t\t\topenLocationDialog: function openLocationDialog() {\n\t\t\t\tif (this.get(\"hasLocations\")) {\n\t\t\t\t\tthis.set(\"showLocationDialog\", true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseLocationDialog: function closeLocationDialog() {\n\t\t\t\tthis.set(\"showLocationDialog\", false);\n\t\t\t},\n\n\n\t\t\t//close dialog for adding Time Entry\n\t\t\tcloseTimeEntryAdd: function closeTimeEntryAdd() {\n\t\t\t\tthis.updateData();\n\t\t\t\tthis.set(\"showNewTimeEntryDialog\", false);\n\t\t\t},\n\n\n\t\t\t//close dialog for adding Time Entry\n\t\t\tcloseClockIn: function closeClockIn() {\n\t\t\t\tthis.updateData();\n\t\t\t\tthis.set(\"showClockInDialog\", false);\n\t\t\t},\n\n\n\t\t\t//close dialog for adding Time Entry\n\t\t\tcloseClockInAt: function closeClockInAt() {\n\t\t\t\tthis.updateData();\n\t\t\t\tthis.set(\"showClockInAtDialog\", false);\n\t\t\t},\n\t\t\tcloseClockOutAt: function closeClockOutAt() {\n\t\t\t\tthis.updateData();\n\t\t\t\tthis.set(\"showClockOutAtDialog\", false);\n\t\t\t},\n\n\n\t\t\t//close dialog for adding new Time Off\n\t\t\tcloseTimeOffAdd: function closeTimeOffAdd() {\n\t\t\t\tthis.updateData();\n\t\t\t\tthis.set(\"showNewTimeOffDialog\", false);\n\t\t\t},\n\t\t\tclockChangeAction: function clockChangeAction() {\n\t\t\t\tthis.updateData();\n\t\t\t},\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.getTodaysCards();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/switch', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-time-card-dialog-switch-project'],\n\n\t\tauth: Ember.inject.service('auth'),\n\n\t\ttimeEntry: null,\n\t\tmember: null,\n\t\tmemberEntries: null,\n\n\t\tproject: null,\n\t\tcostCode: null,\n\t\tequipment: null,\n\n\t\t_project: null, // initial value\n\t\t_costCode: null, // initial value\n\t\t_equipment: null, // initial value\n\n\t\tcostCodesAutoOpen: false,\n\t\tprojectsAutoOpen: false,\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\t\tdisableCostCodeSelection: Ember.computed('project.id', 'isLinkedCostCodesEnabled', function () {\n\t\t\treturn Ember.get(this, 'isLinkedCostCodesEnabled') && Ember.isNone(Ember.get(this, 'project.id'));\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tif (Ember.get(this, 'memberEntries.length') > 0) {\n\t\t\t\tvar first = Ember.get(this, 'memberEntries.firstObject');\n\t\t\t\tvar projectId = Ember.getWithDefault(first, 'openEntry.projectId', null);\n\t\t\t\tvar costCodeId = Ember.getWithDefault(first, 'openEntry.costCodeId', null);\n\t\t\t\tvar equipmentId = Ember.getWithDefault(first, 'openEntry.equipmentId', null);\n\n\t\t\t\t// test to see if all members have the same project, costcode, or equipment\n\t\t\t\t//\n\t\t\t\t// all members will be tested against the first member to check for matching values. The reduce method will return the start Id or null if not all entries match\n\t\t\t\tif (!Ember.isNone(projectId)) projectId = Ember.get(this, 'memberEntries').reduce(function (pid, member) {\n\t\t\t\t\treturn !Ember.isNone(pid) && pid === Ember.get(member, 'openEntry.projectId') ? pid : null;\n\t\t\t\t}, projectId);\n\t\t\t\tif (!Ember.isNone(costCodeId)) costCodeId = Ember.get(this, 'memberEntries').reduce(function (cid, member) {\n\t\t\t\t\treturn !Ember.isNone(cid) && cid === Ember.get(member, 'openEntry.costCodeId') ? costCodeId : null;\n\t\t\t\t}, costCodeId);\n\t\t\t\tif (!Ember.isNone(equipmentId)) equipmentId = Ember.get(this, 'memberEntries').reduce(function (eid, member) {\n\t\t\t\t\treturn !Ember.isNone(eid) && eid === Ember.get(member, 'openEntry.equipmentId') ? equipmentId : null;\n\t\t\t\t}, equipmentId);\n\n\t\t\t\t// set the project, costcode or equipment that is the same accross all memebers\n\t\t\t\t//\n\t\t\t\t// if all entries above return the same value then the id will not be null and the entry will use that value.\n\t\t\t\tif (!Ember.isNone(projectId)) Ember.RSVP.resolve(Ember.get(first, 'openEntry.project')).then(function (pr) {\n\t\t\t\t\treturn _this.setInitial('project', pr);\n\t\t\t\t});\n\t\t\t\tif (!Ember.isNone(costCodeId)) Ember.RSVP.resolve(Ember.get(first, 'openEntry.costCode')).then(function (cc) {\n\t\t\t\t\treturn _this.setInitial('costCode', cc);\n\t\t\t\t});\n\t\t\t\tif (!Ember.isNone(equipmentId)) Ember.RSVP.resolve(Ember.get(first, 'openEntry.equipment')).then(function (eq) {\n\t\t\t\t\treturn _this.setInitial('equipment', eq);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// use last project, costcode, equipment to set default values for the select menus\n\t\t\t\tEmber.RSVP.resolve(Ember.getWithDefault(this, 'member.openEntry.project', null)).then(function (project) {\n\t\t\t\t\treturn _this.setInitial('project', project);\n\t\t\t\t});\n\t\t\t\tEmber.RSVP.resolve(Ember.getWithDefault(this, 'member.openEntry.costCode', null)).then(function (costCode) {\n\t\t\t\t\treturn _this.setInitial('costCode', costCode);\n\t\t\t\t});\n\t\t\t\tEmber.RSVP.resolve(Ember.getWithDefault(this, 'member.openEntry.equipment', null)).then(function (equipment) {\n\t\t\t\t\treturn _this.setInitial('equipment', equipment);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tsetInitial: function setInitial(key, val) {\n\t\t\tvar _EmberSetProperties;\n\n\t\t\tEmber.setProperties(this, (_EmberSetProperties = {}, _defineProperty(_EmberSetProperties, key, val), _defineProperty(_EmberSetProperties, '_' + key, val), _EmberSetProperties));\n\n\t\t\t// setProperties(this, {\n\t\t\t// \tproject: val,\n\t\t\t// \t_project: val,\n\t\t\t// });\n\t\t},\n\t\tclockIn: function clockIn(member) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar validateOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tvar startLocation = null;\n\t\t\tvar forceSave = true;\n\t\t\tvar isSwitch = true;\n\n\t\t\tif (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n\t\t\t\tmember = Ember.get(member, 'content');\n\t\t\t}\n\t\t\treturn member.clockIn(Ember.get(this, 'project.id'), Ember.get(this, 'costCode.id'), Ember.get(this, 'description'), Ember.get(this, 'equipment.id'), startLocation, forceSave, validateOnly, isSwitch).then(function (entry) {\n\t\t\t\tif (!validateOnly) {\n\t\t\t\t\tEmber.set(entry, 'project', Ember.get(_this2, 'project'));\n\t\t\t\t\tEmber.set(entry, 'costCode', Ember.get(_this2, 'costCode'));\n\t\t\t\t\tEmber.set(entry, 'equipment', Ember.get(_this2, 'equipment'));\n\t\t\t\t\tEmber.set(member, 'openEntry', entry);\n\t\t\t\t}\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t},\n\t\tclockOut: function clockOut(member) {\n\t\t\tvar isSwitch = true;\n\t\t\tvar endLocation = null;\n\n\t\t\tif (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n\t\t\t\tmember = Ember.get(member, 'content');\n\t\t\t}\n\t\t\treturn member.clockOut(isSwitch, endLocation);\n\t\t},\n\t\tswitchEntry: function switchEntry(member) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this.clockIn(member, true).then(function () {\n\t\t\t\t// validate the clock in data is correct\n\t\t\t\treturn _this3.clockOut(member).then(function () {\n\t\t\t\t\t// clock out current entry\n\t\t\t\t\treturn _this3.clockIn(member, false); // clock in new entry\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tprojectSelected: function projectSelected(item) {\n\t\t\t\tEmber.set(this, 'project', item);\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled')) {\n\t\t\t\t\tEmber.set(this, 'costCode', null);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeSelected: function costCodeSelected(item) {\n\t\t\t\tEmber.set(this, 'costCode', item);\n\t\t\t},\n\t\t\tequipmentSelected: function equipmentSelected(item) {\n\t\t\t\tEmber.set(this, 'equipment', item);\n\t\t\t},\n\n\n\t\t\t/**\n    * closes dialog if clicked on cancel button or clicked in background window\n    *\n    * @event close\n    */\n\t\t\tclose: function close() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\tsaveSwitchProject: function saveSwitchProject() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tif (!Ember.isNone(Ember.get(this, 'memberEntries'))) {\n\t\t\t\t\tvar promise = [];\n\t\t\t\t\tEmber.get(this, 'memberEntries').forEach(function (member) {\n\t\t\t\t\t\tpromise.push(_this4.switchEntry(member));\n\t\t\t\t\t});\n\n\t\t\t\t\treturn Ember.RSVP.all(promise);\n\t\t\t\t} else {\n\t\t\t\t\treturn this.switchEntry(Ember.get(this, 'member'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tprojectMenuClosed: function projectMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled') && didSelectValue) {\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this5, {\n\t\t\t\t\t\t\tcostCodesAutoOpen: Date.now()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else if (Ember.isNone(selectedItem) && openedBy === 'auto') {\n\t\t\t\t\t// Logger.info(this, 'projectMenuClosed', 'revert to initial');\n\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this5, {\n\t\t\t\t\t\t\tproject: Ember.get(_this5, '_project'), // retrieve initial value\n\t\t\t\t\t\t\tcostCode: Ember.get(_this5, '_costCode') // retrieve initial value\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeMenuClosed: function costCodeMenuClosed(didSelectValue, selectedItem, openedBy) {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\t// Logger.info(this, 'costCodeMenuClosed', didSelectValue, selectedItem, openedBy);\n\n\t\t\t\t// if the cost code menu was opened automatically by the double nav and the user hits back (!didSelectValue) then re-open the project selecter\n\t\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled') && !didSelectValue && openedBy === 'auto') {\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\tEmber.setProperties(_this6, {\n\t\t\t\t\t\t\tcostCode: null,\n\t\t\t\t\t\t\tprojectsAutoOpen: Date.now()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-entry/view', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c--time--time-entry--view'],\n\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\n\t\t// attributes\n\t\tid: null,\n\t\tonSaved: null,\n\t\tonCancel: null,\n\n\t\tshowEditOption: true,\n\t\tshowEntryHistoryOption: true,\n\t\tshowHoursSection: true,\n\t\tshowJobDetailsSection: true,\n\t\tshowLocationSection: true,\n\t\tuseLocationFullView: true,\n\n\t\t// properties\n\t\tmodel: null,\n\t\theaderTitle: (0, _utils.loc)('Entry Details'),\n\n\t\t// state\n\t\tshowEditDialog: false,\n\t\tentryHistoryDialog: false,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\tif (!Ember.isNone(Ember.get(this, 'id'))) {\n\t\t\t\tthis.getModel().then(function (model) {\n\t\t\t\t\treturn Ember.set(_this, 'model', model);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetModel: function getModel() {\n\t\t\tvar getter = Ember.get(this, 'store').getter().findRecord('time-entry', Ember.get(this, 'id')).join('member', 'time-entry', 'member_id', { deleted_on: '_-NULL-_' }).join('project', 'time-entry', 'project_id', { deleted_on: '_-NULL-_' }).join('cost-code', 'time-entry', 'cost_code_id', { deleted_on: '_-NULL-_' }).join('equipment', 'time-entry', 'equipment_id', { deleted_on: '_-NULL-_' }).join('member-location', 'time-entry', 'start_location_id', { deleted_on: '_-NULL-_' }, 'startLocation').join('member-location', 'time-entry', 'end_location_id', { deleted_on: '_-NULL-_' }, 'endLocation').joinAll('time-entry-break', 'time-entry', 'id', { _asc: ['start_time'], deleted_on: '_-NULL-_' }).join('member-location', 'time-entry-break', 'start_location_id', { deleted_on: '_-NULL-_' }, 'startLocation').join('member-location', 'time-entry-break', 'end_location_id', { deleted_on: '_-NULL-_' }, 'endLocation');\n\n\t\t\treturn getter.fetch().then(function (data) {\n\t\t\t\tdata.timeEntry.get('timeEntryBreaks').forEach(function (item) {\n\t\t\t\t\tEmber.set(item, 'timeEntry', data.timeEntry);\n\t\t\t\t});\n\t\t\t\treturn data.timeEntry;\n\t\t\t});\n\t\t},\n\n\n\t\tisCostCodesEnabled: Ember.computed.and('features.costCodes', 'auth.organization.trackCostCode'),\n\t\tisEquipmentEnabled: Ember.computed.and('features.equipment', 'auth.organization.trackEquipment'),\n\n\t\tprojectNameDisplay: Ember.computed('model.{projectId,project}', function () {\n\t\t\tif (Ember.isNone(Ember.get(this, 'model.projectId'))) {\n\t\t\t\treturn (0, _utils.loc)('None');\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'model.project') ? Ember.get(this, 'model.project.fullTitle') : '-';\n\t\t\t}\n\t\t}),\n\n\t\tcostCodeDisplay: Ember.computed('model.{costCodeId,costCode}', function () {\n\t\t\tif (Ember.isNone(Ember.get(this, 'model.costCodeId'))) {\n\t\t\t\treturn (0, _utils.loc)('None');\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'model.costCode') ? Ember.get(this, 'model.costCode.costCodeLabel') : '-';\n\t\t\t}\n\t\t}),\n\n\t\tequipmentDisplay: Ember.computed('model.{equipmentId,equipment}', function () {\n\t\t\tif (Ember.isNone(Ember.get(this, 'model.equipmentId'))) {\n\t\t\t\treturn (0, _utils.loc)('None');\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'model.equipment') ? [Ember.get(this, 'model.equipment.equipmentName'), Ember.get(this, 'model.equipment.equipmentModel.equipmentMake.title'), Ember.get(this, 'model.equipment.equipmentModel.title')].join(' ') : '-';\n\t\t\t}\n\t\t}),\n\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\tEmber.set(this, key, val);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\teditTimeEntry: function editTimeEntry() {\n\t\t\t\tthis.safeSet('showEditDialog', true);\n\t\t\t},\n\t\t\tonSaved: function onSaved() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tthis.safeSet('model', null);\n\t\t\t\tthis.sendAction('onSaved');\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t_this2.getModel();\n\t\t\t\t\t_this2.safeSet('showEditDialog', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tif (Ember.get(this, 'model.hasDirtyAttributes')) {\n\t\t\t\t\tEmber.get(this, 'model').rollbackAttributes();\n\t\t\t\t}\n\n\t\t\t\tthis.safeSet('showEditDialog', false);\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tthis.safeSet('model', null);\n\t\t\t\tthis.sendAction('onSaved');\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t_this3.safeSet('showEditDialog', false);\n\t\t\t\t\t_this3.sendAction('onCancel'); // closes this view dialog\n\t\t\t\t});\n\t\t\t},\n\t\t\tviewEntryHistory: function viewEntryHistory() {\n\t\t\t\tthis.safeSet('entryHistoryDialog', true);\n\t\t\t},\n\t\t\tcloseEntryHistory: function closeEntryHistory() {\n\t\t\t\tthis.safeSet('entryHistoryDialog', false);\n\t\t\t},\n\t\t\tviewFullMap: function viewFullMap() {\n\t\t\t\tEmber.get(this, 'router').transitionTo('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: Ember.get(this, 'model.id'),\n\t\t\t\t\t\tmember_id: Ember.get(this, 'model.member.id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-off/create-time-off', ['exports', 'moment', '@busy-web/utils', 'p-limit'], function (exports, _moment, _utils, _pLimit) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar throttledPromise = (0, _pLimit.default)(1);\n\n\t/**\n  * `Components/Time/TimeOff/CreateTimeOff`\n  *\n  * @class CreateTimeOff\n  * @namespace Components.Time.TimeOff\n  * @extends Component\n  * @uses Services.Auth\n  * @uses Services.Analtyics\n  * @uses Moment\n  * @uses Utils.Assert\n  * @uses Utils.Loc\n  * @uses Utils.LocaleFormate\n  * @uses Utils.Time\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-time-card-dialog-new-time-off'],\n\n\t\tanalytics: Ember.inject.service('analytics'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tdate: null,\n\t\tdateStamp: null,\n\t\tmember: null,\n\t\tmemberEntries: null,\n\t\tmemberMode: 'single',\n\t\ttimeOff: null,\n\t\tisPaid: false,\n\t\ttype: null,\n\n\t\ttotalTime: 0,\n\n\t\ttotalHours: 0,\n\t\ttotalMinutes: 0,\n\t\tisSelectedDateLocked: true,\n\n\t\tlockDate: 0,\n\n\t\tformat: _utils.Locale.format('ddd, MMM DD', _moment.default.locale()),\n\n\t\tisMultiMemberMode: Ember.computed.equal('memberMode', 'multi'),\n\t\tuseGroupActionThrottle: Ember.computed.and('features.groupActionThrottle', 'isMultiMemberMode'),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (!Ember.isNone(this.get('memberEntries'))) {\n\t\t\t\tthis.set('memberMode', 'multi');\n\t\t\t}\n\n\t\t\tthis.setDates();\n\t\t\tthis.get('auth.member');\n\n\t\t\tthis.set('typesList', [Ember.Object.create({ key: 'holiday', value: (0, _utils.loc)('Holiday') }), Ember.Object.create({ key: 'personal', value: (0, _utils.loc)('Personal') }), Ember.Object.create({ key: 'sick', value: (0, _utils.loc)('Sick') }), Ember.Object.create({ key: 'vacation', value: (0, _utils.loc)('Vacation') }), Ember.Object.create({ key: 'other', value: (0, _utils.loc)('Other') })]);\n\n\t\t\tthis.setLockDate();\n\t\t},\n\t\tsetLockDate: function setLockDate() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('memberEntries'))) {\n\t\t\t\tvar promise = [];\n\t\t\t\tthis.get('memberEntries').forEach(function (member) {\n\t\t\t\t\tvar lock = member.get('memberLock');\n\t\t\t\t\tif (lock.then) {\n\t\t\t\t\t\tpromise.push(lock);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpromise.push(Ember.RSVP.resolve(lock));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tEmber.RSVP.all(promise).then(function () {\n\t\t\t\t\tvar lockDate = 0;\n\t\t\t\t\t_this.get('memberEntries').forEach(function (member) {\n\t\t\t\t\t\tif (member.get('lockDate') > lockDate) {\n\t\t\t\t\t\t\tlockDate = member.get('lockDate');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t_this.set('lockDate', lockDate);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvar lock = this.get('member.memberLock');\n\t\t\t\tif (lock.then) {\n\t\t\t\t\tlock.then(function () {\n\t\t\t\t\t\t_this.set('lockDate', _this.get('member.lockDate'));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('lockDate', this.get('member.lockDate'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\tsetTotalTime: Ember.observer('isPaid', function () {\n\t\t\tif (this.get('isPaid')) {\n\t\t\t\tthis.set('totalTime', 28800);\n\t\t\t} else {\n\t\t\t\tthis.set('totalTime', 0);\n\t\t\t}\n\t\t}),\n\n\t\tsetDates: function setDates() {\n\t\t\t// open the dialog to this date or default to now\n\t\t\tvar now = _utils.Time.timestamp();\n\t\t\tvar date = this.get('date');\n\t\t\tif (Ember.isNone(date) || date > now) {\n\t\t\t\tdate = now;\n\t\t\t}\n\n\t\t\t//sets the minimum and maximum date that the user can select\n\t\t\tthis.set('mindate', (0, _moment.default)().add(-89, 'days').unix());\n\t\t\tthis.set('maxdate', (0, _moment.default)().add(366, 'days').unix());\n\n\t\t\tvar start = _utils.Time.date(date).startOf('day').unix();\n\t\t\tthis.set('oldStartDate', start);\n\t\t\tthis.set('dateStamp', start);\n\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\tif (this.get('membersCombined').length && this.get('membersWithLocksBeforeStartTime').length) {\n\t\t\t\t\tthis.get('analytics').addEvent(84);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetMemberId: function getMemberId() {\n\t\t\tvar memberId = this.get('auth.member.id');\n\t\t\tif (!Ember.isNone(this.get('member'))) {\n\t\t\t\tmemberId = this.get('member.id');\n\t\t\t}\n\t\t\treturn memberId;\n\t\t},\n\t\tcreateTimeOff: function createTimeOff(member, isMulti, allowOverlap) {\n\t\t\tif (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n\t\t\t\tmember = Ember.get(member, 'content');\n\t\t\t}\n\n\t\t\tvar dateStamp = _utils.Time.date(this.get('dateStamp')).startOf('day').unix();\n\t\t\tvar type = this.get('type');\n\t\t\tvar description = this.get('description');\n\t\t\tvar paid = this.get('isPaid');\n\t\t\tvar seconds = this.get('totalTime');\n\n\t\t\tif (allowOverlap) {\n\t\t\t\t// submit happy oficer event\n\t\t\t\tvar source = 'from_' + this.get('analytics').generateTitle(window.location.pathname);\n\t\t\t\tthis.get('analytics').addEvent(58, { navSource: source, targetMemberIds: [this.get('member.id')] });\n\t\t\t}\n\n\t\t\tif (Ember.get(this, 'useGroupActionThrottle')) {\n\t\t\t\tvar numEntries = this.get('membersCombined.length');\n\t\t\t\tvar pendingCount = throttledPromise.pendingCount;\n\n\t\t\t\tvar completed = numEntries - pendingCount;\n\t\t\t\tvar saveProgress = completed + ' / ' + numEntries;\n\t\t\t\tvar savingMessage = (0, _utils.loc)('Saving') + ' ' + saveProgress + ' ';\n\n\t\t\t\tthis.get('busySave').showSavingMessage(savingMessage);\n\t\t\t}\n\n\t\t\treturn member.createTimeOffEntry(dateStamp, type, isMulti, seconds, paid, description, allowOverlap);\n\t\t},\n\n\n\t\t/**\n   * Create a unified array that contains either one `member` or all members in `memberEntries`\n   *\n   * @public\n   * @property membersCombined\n   * @type {Models.Member[]}\n   */\n\t\tmembersCombined: Ember.computed('member', 'memberEntries', function () {\n\t\t\treturn this.get('memberMode') === 'multi' ? [].concat(_toConsumableArray(this.get('memberEntries'))) : [this.get('member')];\n\t\t}),\n\n\t\t/**\n   * Filtered array of `membersCombined` who have a lock date before the selected `dateStamp`\n   *\n   * @public\n   * @property membersWithLocksBeforeStartTime\n   * @type {Models.Member[]}\n   */\n\t\tmembersWithLocksBeforeStartTime: Ember.computed('lockDate', 'dateStamp', 'membersCombined', function () {\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\tvar startDate = this.get('dateStamp');\n\t\t\t\tthis.get('membersCombined').filter(function (member) {\n\t\t\t\t\tif (!Ember.isNone(member) && !Ember.isNone(Ember.get(member, 'content'))) {\n\t\t\t\t\t\tmember = Ember.get(member, 'content');\n\t\t\t\t\t}\n\t\t\t\t\tmember.isDateLocked(startDate);\n\t\t\t\t});\n\n\t\t\t\tif (this.get('lockDate') > this.get('dateStamp')) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t/**\n   * Error message to be shown for a `dateStamp` which violates a lock date\n   *\n   * @public\n   * @property lockDateErrorMessage\n   * @type {string}\n   */\n\t\tlockDateErrorMessage: Ember.computed('membersWithLocksBeforeStartTime', 'memberMode', function () {\n\t\t\tif (this.get('memberMode') === 'single') {\n\t\t\t\tvar msg = (0, _utils.loc)('Date must be later than the lock date');\n\t\t\t\tvar date = _utils.Time.date(this.get('member.memberLock.effectiveDate')).format('L');\n\t\t\t\treturn msg + ': ' + date;\n\t\t\t} else {\n\t\t\t\tvar members = this.get('membersWithLocksBeforeStartTime');\n\t\t\t\tvar numMembers = members.get('length');\n\t\t\t\tvar _msg = (0, _utils.loc)('employees have lock dates before the selected date');\n\n\t\t\t\treturn numMembers + ' ' + _msg;\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\ttypeTimeOffSelected: function typeTimeOffSelected(item) {\n\t\t\t\tif (item.get('key') === 'holiday') {\n\t\t\t\t\tthis.set('type', 10);\n\t\t\t\t} else if (item.get('key') === 'personal') {\n\t\t\t\t\tthis.set('type', 20);\n\t\t\t\t} else if (item.get('key') === 'sick') {\n\t\t\t\t\tthis.set('type', 30);\n\t\t\t\t} else if (item.get('key') === 'vacation') {\n\t\t\t\t\tthis.set('type', 40);\n\t\t\t\t} else if (item.get('key') === 'other') {\n\t\t\t\t\tthis.set('type', 50);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\t// submit happy officer event\n\t\t\t\tvar source = 'from_' + this.get('analytics').generateTitle(window.location.pathname);\n\t\t\t\tthis.get('analytics').addEvent(56, { navSource: source, targetMemberIds: [this.get('member.id')] });\n\n\t\t\t\t//Close the Dialog onCancel. Notice Happy Officer below\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\n\n\t\t\t/**\n    * closes dialog if clicked on cancel button or clicked in background window\n    *\n    * @event close\n    */\n\t\t\tcloseAction: function closeAction() {\n\t\t\t\tthis.sendAction('onClose');\n\t\t\t},\n\t\t\ttimeOffSave: function timeOffSave(busySave) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar useGroupActionThrottle = Ember.get(this, 'useGroupActionThrottle');\n\t\t\t\tvar allowOverlap = true;\n\t\t\t\tvar isMultiMemberMode = Ember.get(this, 'isMultiMemberMode');\n\n\t\t\t\tthis.set('busySave', busySave);\n\n\t\t\t\tif (this.get('membersWithLocksBeforeStartTime')) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Errors must be fixed before saving.'));\n\t\t\t\t} else if (Ember.isNone(this.get('type'))) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must select a type.'));\n\t\t\t\t} else if (this.get('isPaid') && this.get('totalTime') <= 0) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Hours must be more than 0.'));\n\t\t\t\t} else {\n\t\t\t\t\tif (isMultiMemberMode) {\n\t\t\t\t\t\tvar members = this.get('memberEntries');\n\t\t\t\t\t\tvar promise = [];\n\n\t\t\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\t\t\tvar promisedTimeOff = _this2.createTimeOff.bind(_this2, member, isMultiMemberMode, allowOverlap);\n\n\t\t\t\t\t\t\tif (useGroupActionThrottle) {\n\t\t\t\t\t\t\t\tpromisedTimeOff = throttledPromise(promisedTimeOff);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpromisedTimeOff = promisedTimeOff();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpromise.push(promisedTimeOff);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn Ember.RSVP.all(promise).then(function (data) {\n\t\t\t\t\t\t\t_this2.sendAction('onSave', data);\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.error('create-time-off => timeOffSave -> err', err, Ember.get(_this2, 'membersCombined'));\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('An error occurred. Some actions may have completed, please double check and try again.'));\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.createTimeOff(this.get('member'), isMultiMemberMode, allowOverlap).then(function (model) {\n\t\t\t\t\t\t\t_this2.sendAction('onSave', model);\n\t\t\t\t\t\t\treturn model;\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tif (err && err.message) {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.reject(err.message);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('An error occurred. Please double check your entry and try again.'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-off/edit', ['exports', 'moment', '@busy-web/utils'], function (exports, _moment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-time-off-edit'],\n\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\thasBackButton: false,\n\n\t\tdateStamp: null,\n\t\toldStartDate: null,\n\t\tisPaid: false,\n\t\ttype: null,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\t\tinitialDateStamp: null,\n\n\t\tmodel: null,\n\n\t\ttotalTime: 0,\n\n\t\tprojectIdChange: null,\n\t\tcostCodeIdChange: null,\n\n\t\tformat: _utils.Locale.format(\"ddd, MMM DD\", _moment.default.locale()),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setDates();\n\t\t\tthis.setTypesMenu();\n\n\t\t\tthis.set('isPaid', this.get('model.paid'));\n\t\t\tthis.set('seconds', this.get('model.seconds'));\n\t\t\tthis.set('type', this.get('model.type'));\n\t\t\tthis.set('description', this.get('model.description'));\n\n\t\t\t// if the locks feature is enabled\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\t// add an observer to the initializeDate method. So it will get called again\n\t\t\t\t// if the member has not loaded.\n\t\t\t\tEmber.addObserver(this, 'model.member.id', this, 'initializeDate');\n\n\t\t\t\t// call initializeDate\n\t\t\t\tthis.initializeDate();\n\t\t\t} else {\n\t\t\t\t// for old support set the 90 day limit.\n\t\t\t\tthis.set('minDate', _utils.Time.date().subtract(89, 'days').startOf('day').unix());\n\t\t\t\tthis.set('maxDate', _utils.Time.date().add(90, 'days').endOf('day').unix());\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * initialize function for setting the lock date.\n   *\n   * This is a function by itself for support of the features.locks.\n   * It can't be an observer unless locks are enabled so in init\n   * this gets added as an observer if locks is enabled.\n   *\n   * This needs to be in an if statement to prevent it from throwing an\n   * error in cases where the member is not set or the time off model\n   * is not set.\n   *\n   * @private\n   * @method initializeDate\n   */\n\t\tinitializeDate: function initializeDate() {\n\t\t\tvar member = this.get('model.member');\n\n\t\t\t// make sure the member model is loaded.\n\t\t\tif (!Ember.isNone(member)) {\n\t\t\t\t// set the initialDateStamp to the dateStamp of the time off entry\n\t\t\t\tthis.set('initialDateStamp', this.get('model.dateStamp'));\n\n\t\t\t\t// call the get memberLock to load it on the member model.\n\t\t\t\tthis.get('model.member.memberLock');\n\t\t\t}\n\t\t},\n\t\tsetTypesMenu: function setTypesMenu() {\n\t\t\tthis.set('typesList', [Ember.Object.create({ key: 'holiday', value: (0, _utils.loc)('Holiday') }), Ember.Object.create({ key: 'personal', value: (0, _utils.loc)('Personal') }), Ember.Object.create({ key: 'sick', value: (0, _utils.loc)('Sick') }), Ember.Object.create({ key: 'vacation', value: (0, _utils.loc)('Vacation') }), Ember.Object.create({ key: 'other', value: (0, _utils.loc)('Other') })]);\n\t\t},\n\n\n\t\tsetDates: Ember.observer('model.dateStamp', function () {\n\t\t\tvar startTime = this.get('model.dateStamp');\n\t\t\tif (Ember.isNone(startTime)) {\n\t\t\t\tstartTime = _utils.Time.timestamp();\n\t\t\t}\n\t\t\tthis.set('oldStartDate', startTime);\n\t\t\tthis.set('dateStamp', startTime);\n\t\t}),\n\n\t\tsetModel: Ember.observer('dateStamp', 'model.member.memberLock.effectiveDate', function () {\n\t\t\tif (!this.get('isDestroying') && !this.get('isDestroyed') && !Ember.isNone(this.get('model'))) {\n\t\t\t\tif (!Ember.isNone(this.get('dateStamp'))) {\n\t\t\t\t\tthis.set('model.startTime', this.get('dateStamp'));\n\t\t\t\t}\n\n\t\t\t\tif (this.get('isSavedDateLocked') || this.get('isSelectedDateLocked')) {\n\t\t\t\t\tthis.get('analytics').addEvent(84);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tsubmitTimeOffEntry: function submitTimeOffEntry(forceSave) {\n\t\t\tvar dateStamp = _utils.Time.date(this.get('dateStamp')).startOf('day').unix();\n\n\t\t\tif (!this.get('isPaid')) {\n\t\t\t\tthis.set('seconds', 0);\n\t\t\t}\n\n\t\t\tif (this.get('model.dateStamp') !== dateStamp) {\n\t\t\t\tthis.set('model.dateStamp', dateStamp);\n\t\t\t}\n\n\t\t\tif (this.get('model.paid') !== this.get('isPaid')) {\n\t\t\t\tthis.set('model.paid', this.get('isPaid'));\n\t\t\t}\n\n\t\t\tif (this.get('model.seconds') !== this.get('seconds')) {\n\t\t\t\tthis.set('model.seconds', this.get('seconds'));\n\t\t\t}\n\n\t\t\tif (this.get('model.type') !== this.get('type')) {\n\t\t\t\tthis.set('model.type', this.get('type'));\n\t\t\t}\n\n\t\t\tif (this.get('model.description') !== this.get('description')) {\n\t\t\t\tthis.set('model.description', this.get('description'));\n\t\t\t}\n\n\t\t\tif (this.get('model.hasDirtyAttributes')) {\n\t\t\t\tif (this.get('isPaid') && this.get('seconds') <= 0) {\n\t\t\t\t\treturn Ember.RSVP.reject('Hours must be more than 0.');\n\t\t\t\t} else {\n\t\t\t\t\treturn this.get('model').save(forceSave);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Checks if any validation errors have been set\n   *\n   * @property isSavingDisabled\n   * @type {Boolean}\n   * @static\n   *\n   */\n\t\tisSavingDisabled: Ember.computed.or('isTooOldToEdit', 'isSavedDateLocked', 'isSelectedDateLocked'),\n\n\t\t/**\n   * Logic flip of `isSavingDisabled`\n   *\n   * @property isSavingEnabled\n   * @type {Boolean}\n   * @static\n   *\n   */\n\t\tisSavingEnabled: Ember.computed.not('isSavingDisabled'),\n\n\t\t/**\n   * Is the original `startTime` before the lock date\n   *\n   * @property isSavedDateLocked\n   * @type {Boolean}\n   * @static\n   *\n   */\n\t\tisSavedDateLocked: Ember.computed('features.locks', 'model.member.{id,memberLock.effectiveDate}', 'initialDateStamp', function () {\n\t\t\tif (!this.get('features.locks')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar lockDate = this.get('model.member.memberLock.effectiveDate');\n\t\t\treturn !Ember.isNone(lockDate) && this.get('initialDateStamp') <= lockDate;\n\t\t}),\n\n\t\t/**\n   * Is the currently selected `startTime` before the lock date\n   *\n   * @property isSelectedDateLocked\n   * @type {Boolean}\n   * @static\n   *\n   */\n\t\tisSelectedDateLocked: Ember.computed('features.locks', 'model.member.memberLock.effectiveDate', 'dateStamp', function () {\n\t\t\tif (!this.get('features.locks')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar lockDate = this.get('model.member.memberLock.effectiveDate');\n\t\t\treturn !Ember.isNone(lockDate) && this.get('dateStamp') <= lockDate;\n\t\t}),\n\n\t\tactions: {\n\t\t\ttypeTimeOffSelected: function typeTimeOffSelected(item) {\n\t\t\t\tif (item.get('key') === 'holiday') {\n\t\t\t\t\tthis.set('type', 10);\n\t\t\t\t} else if (item.get('key') === 'personal') {\n\t\t\t\t\tthis.set('type', 20);\n\t\t\t\t} else if (item.get('key') === 'sick') {\n\t\t\t\t\tthis.set('type', 30);\n\t\t\t\t} else if (item.get('key') === 'vacation') {\n\t\t\t\t\tthis.set('type', 40);\n\t\t\t\t} else if (item.get('key') === 'other') {\n\t\t\t\t\tthis.set('type', 50);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsaveAction: function saveAction(dialog) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t\treturn this.submitTimeOffEntry(forceSave).then(function (model) {\n\t\t\t\t\t_this.sendAction('onSaved', model);\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteAction: function deleteAction() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar timeOffEntry = this.get('model');\n\t\t\t\ttimeOffEntry.deleteRecord();\n\t\t\t\treturn timeOffEntry.save().then(function () {\n\t\t\t\t\t_this2.sendAction('onDelete');\n\t\t\t\t\treturn;\n\t\t\t\t});\n\t\t\t},\n\t\t\tcancelAction: function cancelAction() {\n\t\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\t\tthis.get('model').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t},\n\t\t\tcancelEdit: function cancelEdit() {\n\t\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\t\tthis.get('model').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tthis.sendAction('onCancel');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-off/view', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c--time--time-off-entry--view'],\n\n\t\tauth: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\n\t\t// attributes\n\t\tid: null,\n\t\tonSaved: null,\n\t\tonCancel: null,\n\n\t\t// properties\n\t\tmodel: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tif (!Ember.isNone(Ember.get(this, 'id'))) {\n\t\t\t\tthis.loadData(Ember.get(this, 'id'));\n\t\t\t}\n\t\t},\n\t\tloadData: function loadData(id) {\n\t\t\tEmber.set(this, 'model', Ember.get(this, 'store').findRecord('time-off', id));\n\t\t},\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!Ember.get(this, 'isDestroyed')) {\n\t\t\t\tEmber.set(this, key, val);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\teditTimeOffEntry: function editTimeOffEntry() {\n\t\t\t\tEmber.set(this, 'showEditDialog', true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tEmber.set(this, 'showEditDialog', false);\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tthis.safeSet('model', null);\n\t\t\t\tthis.sendAction('onSaved');\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t_this.safeSet('showEditDialog', false);\n\t\t\t\t\t_this.sendAction('onCancel'); // closes this view dialog\n\t\t\t\t});\n\t\t\t},\n\t\t\tonSaved: function onSaved() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tthis.safeSet('model', null);\n\t\t\t\tthis.sendAction('onSaved');\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t_this2.loadData(Ember.get(_this2, 'id'));\n\t\t\t\t\t_this2.safeSet('showEditDialog', false);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t});\n});","define('busy-app/components/time/time-sheet/dates-list-item', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet--dates-list', 'time-sheet-row'],\n\t\ttagName: 'tr',\n\t\tattributeBindings: ['title'],\n\n\t\tstore: Ember.inject.service(),\n\n\t\titem: null,\n\t\tmember: null,\n\t\topenDayActivity: null,\n\t\treloadSync: null,\n\n\t\tconflicts: null,\n\t\topenEntry: null,\n\t\tshowConflictResolver: false,\n\n\t\tstartOfDay: Ember.computed('item.date', function () {\n\t\t\treturn _utils.Time.date(Ember.get(this, 'item.date')).startOf('day').unix();\n\t\t}),\n\n\t\tendOfDay: Ember.computed('item.date', function () {\n\t\t\treturn _utils.Time.date(Ember.get(this, 'item.date')).endOf('day').unix();\n\t\t}),\n\n\t\tisItemLoading: Ember.computed.or('isLoading', 'isEmptyDate.isPending'),\n\n\t\tisEmptyDate: Ember.computed('item.{seconds,hasAggregate,hasUnpaidTimeOff}', function () {\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.checkForEmptyDate()\n\t\t\t});\n\t\t}),\n\n\t\t/*\n   * Extra checks for when the PayPeriodMemberSecond aggregate isn't enough\n   * Special case days that should show 0:00 for their hours\n   *\n   * Aggregates don't get created for Zero-Time entries,\n   * \tso if there isn't an aggregate for a day, check to see if any time entries exist\n   *\n   * Aggregates don't get deleted when all time entries on a day are deleted,\n   * \tso if there's an aggregate with 0 seconds, check to make see if are time entries on that day\n   */\n\t\tcheckForEmptyDate: function checkForEmptyDate() {\n\t\t\t// Logger.info(this, 'checkForEmptyDate', Time.date(get(this, 'startOfDay')).format('l'), !get(this, 'item.hasAggregate'), get(this, 'item.seconds') !== 0, get(this, 'item.hasUnpaidTimeOff'), );\n\n\t\t\tif (Ember.get(this, 'item.seconds') !== 0) {\n\t\t\t\treturn Ember.RSVP.resolve({ isEmpty: false });\n\t\t\t} else if (Ember.get(this, 'item.hasUnpaidTimeOff')) {\n\t\t\t\treturn Ember.RSVP.resolve({ isEmpty: false });\n\t\t\t} else {\n\n\t\t\t\t// zombie aggregates are days that have had all entries deleted, but the aggregate still exists\n\t\t\t\tvar needsZombieCheck = Ember.get(this, 'item.hasAggregate') && Ember.get(this, 'item.seconds') === 0;\n\n\t\t\t\t// zero time entries do not cause aggregates to be created\n\t\t\t\tvar needsZeroTimeCheck = !Ember.get(this, 'item.hasAggregate');\n\n\t\t\t\tif (needsZombieCheck || needsZeroTimeCheck) {\n\t\t\t\t\treturn this.isDayEmpty(needsZombieCheck, needsZeroTimeCheck).then(function (isEmpty) {\n\t\t\t\t\t\treturn { isEmpty: isEmpty };\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve({ isEmpty: true });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t// check to see if there are any time entries on the current day\n\t\tisDayEmpty: function isDayEmpty() {\n\t\t\treturn this.getTimeEntryMeta().then(function (meta) {\n\t\t\t\tvar totalRows = Ember.get(meta, 'totalRows');\n\n\t\t\t\treturn totalRows === 0;\n\t\t\t});\n\t\t},\n\t\tgetTimeEntryMeta: function getTimeEntryMeta() {\n\t\t\tvar startOfDay = Ember.get(this, 'startOfDay');\n\t\t\tvar endOfDay = Ember.get(this, 'endOfDay');\n\n\t\t\tvar params = {\n\t\t\t\t_lte: { start_time: endOfDay },\n\t\t\t\t_gte: { end_time: startOfDay },\n\t\t\t\tmember_id: Ember.get(this, 'member.id'),\n\t\t\t\tdeleted_on: '_-NULL-_',\n\t\t\t\tpage_size: 1\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').query('time-entry', params).then(function (results) {\n\t\t\t\treturn Ember.get(results, 'meta');\n\t\t\t});\n\t\t},\n\n\n\t\tshowTimeColumn: Ember.computed('item.{seconds,hasAggregate,hasUnpaidTimeOff}', 'isEmptyDate.isEmpty', function () {\n\t\t\tvar showTimeColumn = Ember.get(this, 'item.seconds') || Ember.get(this, 'item.hasUnpaidTimeOff') || !Ember.get(this, 'isEmptyDate.isEmpty');\n\n\t\t\t// Logger.info(this, 'showTimeColumn', Time.date(get(this, 'startOfDay')).format('l'), Time.date(get(this, 'endOfDay')).format('l'), showTimeColumn);\n\n\t\t\treturn showTimeColumn;\n\t\t}),\n\n\t\ttitle: Ember.computed('item.date', function () {\n\t\t\tvar date = Ember.get(this, 'item.date');\n\t\t\t_utils.Assert.isInteger(date);\n\n\t\t\treturn _utils.Time.date(date).format('LL');\n\t\t}),\n\n\t\tconflictsInDay: Ember.computed('conflicts', 'startOfDay', 'endOfDay', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar conflicts = Ember.get(this, 'conflicts');\n\n\t\t\tif (Ember.isNone(conflicts)) {\n\t\t\t\treturn [];\n\t\t\t} else {\n\t\t\t\tvar startTime = Ember.get(this, 'startOfDay');\n\t\t\t\tvar endTime = Ember.get(this, 'endOfDay');\n\n\t\t\t\treturn conflicts.filter(function (conflict) {\n\t\t\t\t\treturn _this.isRangeInRange({ startTime: startTime, endTime: endTime }, conflict.getProperties('startTime', 'endTime'));\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t// test if any of the days conflicts actually conflict with each other\n\t\t// for example, two multi-day entries might not conflict with each other,\n\t\t// \t\tbut could be in conflict with other days entries. those can't be resolved with this day as the base\n\t\thasResolvableConflicts: Ember.computed('conflictsInDay', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar conflictsInDay = Ember.get(this, 'conflictsInDay');\n\n\t\t\tif (Ember.isNone(conflictsInDay) || conflictsInDay.length < 2) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn conflictsInDay.any(function (conflict) {\n\t\t\t\treturn conflictsInDay.any(function (compare) {\n\t\t\t\t\treturn _this2.isRangeInRange(conflict.getProperties('startTime', 'endTime'), compare.getProperties('startTime', 'endTime'));\n\t\t\t\t});\n\t\t\t});\n\t\t}),\n\n\t\tisRangeInRange: function isRangeInRange(a, b) {\n\t\t\tvar startsInRange = b.startTime >= a.startTime && b.startTime <= a.endTime;\n\t\t\tvar endsInRange = b.endTime >= a.startTime && b.endTime <= a.endTime;\n\t\t\tvar encompassesRange = b.startTime <= a.startTime && b.endTime >= a.endTime;\n\n\t\t\treturn startsInRange || endsInRange || encompassesRange;\n\t\t},\n\n\n\t\thasOpenTime: Ember.computed('openEntry', 'startOfDay', 'endOfDay', function () {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['openEntry', 'startOfDay', 'endOfDay']),\n\t\t\t    openEntry = _EmberGetProperties.openEntry,\n\t\t\t    startOfDay = _EmberGetProperties.startOfDay,\n\t\t\t    endOfDay = _EmberGetProperties.endOfDay;\n\n\t\t\tvar now = _utils.Time.date().unix();\n\n\t\t\tif (Ember.isNone(openEntry)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar hasOpenTime = openEntry <= endOfDay && startOfDay <= now;\n\n\t\t\treturn hasOpenTime;\n\t\t}),\n\n\t\tactions: {\n\t\t\topenDayActivity: function openDayActivity() {\n\t\t\t\t// Logger.info(this, 'openDayActivity');\n\n\t\t\t\tthis.openDayActivity(Ember.get(this, 'item.date'));\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\topenConflictResolver: function openConflictResolver(e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// Logger.info(this, 'openConflictResolver', e);\n\n\t\t\t\tEmber.set(this, 'showConflictResolver', true);\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tcloseConflictResolver: function closeConflictResolver() {\n\t\t\t\t// Logger.info(this, 'closeConflictResolver');\n\n\t\t\t\tthis.reloadSync();\n\t\t\t\tEmber.set(this, 'showConflictResolver', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-sheet/dates-list', ['exports', 'busy-app/utils/logger', '@busy-web/utils'], function (exports, _logger, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet--dates-list'],\n\n\t\t// arguments\n\t\tmemberDaySeconds: null,\n\t\ttimeOffAggregates: null,\n\t\tstart: null,\n\t\tend: null,\n\t\topenDayActivity: null,\n\t\tconflicts: null,\n\t\topenEntry: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t},\n\n\n\t\treportDates: Ember.computed('start', 'end', function () {\n\t\t\tvar start = Ember.get(this, 'start');\n\t\t\tvar end = Ember.get(this, 'end');\n\n\t\t\t// Logger.info(this, 'reportDates', start, end);\n\n\t\t\tif (Ember.isNone(start) || Ember.isNone(end)) {\n\t\t\t\t_logger.default.error(this, 'reportDates', 'invalid start or end', { start: start, end: end });\n\t\t\t\treturn [];\n\t\t\t} else {\n\t\t\t\tvar startTime = _utils.Time.date(start).startOf('day');\n\t\t\t\tvar endTime = _utils.Time.date(end).startOf('day');\n\t\t\t\tvar numDays = endTime.diff(startTime, 'days');\n\n\t\t\t\tvar dates = [];\n\n\t\t\t\tfor (var i = 0; i <= numDays; i++) {\n\t\t\t\t\tdates.push(startTime.clone().add(i, 'days').unix());\n\t\t\t\t}\n\n\t\t\t\t// Logger.info(this, 'reportDates', start, end, dates);\n\n\t\t\t\treturn dates;\n\t\t\t}\n\t\t}),\n\n\t\treportSeconds: Ember.computed('memberDaySeconds', function () {\n\t\t\tvar memberDaySeconds = Ember.get(this, 'memberDaySeconds');\n\t\t\t// Logger.info(this, 'reportSeconds', {memberDaySeconds} );\n\n\t\t\tif (Ember.isNone(memberDaySeconds) || Ember.isEmpty(memberDaySeconds)) {\n\t\t\t\t// Logger.warn(this, 'reportSeconds', 'no data', { memberDaySeconds } );\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar reportSeconds = memberDaySeconds.map(function (r) {\n\t\t\t\tvar date = Ember.get(r, 'startDate');\n\t\t\t\tvar seconds = Ember.get(r, 'totalSeconds');\n\n\t\t\t\treturn { date: date, seconds: seconds };\n\t\t\t});\n\n\t\t\t// Logger.info(this, 'reportSeconds', { reportSeconds } );\n\n\t\t\treturn reportSeconds;\n\t\t}),\n\n\t\treportData: Ember.computed('reportSeconds', 'reportDates', 'timeOffAggregates', function () {\n\t\t\tvar reportDates = Ember.get(this, 'reportDates');\n\t\t\tvar timeOffAggregates = Ember.get(this, 'timeOffAggregates');\n\t\t\tvar reportSeconds = Ember.get(this, 'reportSeconds');\n\n\t\t\t// Logger.info(this, 'reportData', { reportDates, reportSeconds, timeOffAggregates } );\n\n\t\t\tvar reportData = reportDates.map(function (date) {\n\t\t\t\treturn {\n\t\t\t\t\tdate: date,\n\t\t\t\t\tseconds: 0,\n\t\t\t\t\ttimeOffEntries: [],\n\t\t\t\t\ttimeOffSeconds: 0,\n\t\t\t\t\thasPaidTimeOff: false,\n\t\t\t\t\thasUnpaidTimeOff: false\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tif (!Ember.isEmpty(reportSeconds) && !Ember.isEmpty(reportData)) {\n\t\t\t\treportSeconds.forEach(function (d) {\n\t\t\t\t\tvar match = reportData.findBy('date', Ember.get(d, 'date')) || {};\n\t\t\t\t\tvar timeOff = timeOffAggregates.findBy('dateStamp', Ember.get(d, 'date'));\n\n\t\t\t\t\tif (!Ember.isNone(match)) {\n\t\t\t\t\t\tEmber.setProperties(match, {\n\t\t\t\t\t\t\tseconds: Ember.get(match, 'seconds') + Ember.get(d, 'seconds'),\n\t\t\t\t\t\t\thasAggregate: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(timeOff)) {\n\t\t\t\t\t\tif (Ember.isNone(match)) {\n\t\t\t\t\t\t\tObject.assign(match, {\n\t\t\t\t\t\t\t\tdate: Ember.get(d, 'date'),\n\t\t\t\t\t\t\t\tseconds: 0\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tEmber.setProperties(match, {\n\t\t\t\t\t\t\ttimeOffEntries: Ember.get(timeOff, 'entries'),\n\t\t\t\t\t\t\thasPaidTimeOff: Ember.get(timeOff, 'hasPaid'),\n\t\t\t\t\t\t\thasUnpaidTimeOff: Ember.get(timeOff, 'hasUnpaid'),\n\t\t\t\t\t\t\thasAggregate: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Logger.info(this, 'reportData', { reportDates, reportSeconds } );\n\t\t\t} else {}\n\t\t\t\t// Logger.warn(this, 'reportData', 'no data', { reportSeconds } );\n\n\n\t\t\t\t// Logger.info(this, 'reportData', { reportData } );\n\n\n\t\t\treturn reportData;\n\t\t}),\n\n\t\tactions: {\n\t\t\topenDayActivity: function openDayActivity(summaryDate) {\n\t\t\t\t_utils.Assert.isInteger(summaryDate);\n\t\t\t\t// Logger.info(this, 'openDayActivity', summaryDate);\n\t\t\t\tthis.openDayActivity(summaryDate);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-sheet/header', ['exports', '@busy-web/utils', 'busy-app/utils/organization/overtime-period'], function (exports, _utils, _overtimePeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet--header'],\n\n\t\trouter: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\t\tauth: Ember.inject.service(),\n\n\t\tend: null,\n\t\tmember: null,\n\t\tstart: null,\n\t\topenDialog: null,\n\t\topenRangeActivity: null,\n\n\t\tisModeWeekly: Ember.computed.equal('mode', 'weekly'),\n\t\tisModePayPeriod: Ember.computed.equal('mode', 'pay-period'),\n\t\tisPreviousYear: Ember.computed('end', function () {\n\t\t\treturn _utils.Time.date(this.get('end')).year() !== _utils.Time.date().year();\n\t\t}),\n\n\t\tactionsSelectMenu: Ember.computed('isModePayPeriod', function () {\n\t\t\tvar actionsSelectMenu = [\n\t\t\t// EmberObject.create({key: 'new-time-entry', value: loc('Add Time Entry')}),\n\t\t\tEmber.Object.create({ key: 'new-time-off', value: (0, _utils.loc)('Add Time Off') })];\n\n\t\t\tif (this.get('isModePayPeriod')) {\n\t\t\t\tactionsSelectMenu.push(Ember.Object.create({ key: 'full-report', value: (0, _utils.loc)('View Full Report') }));\n\t\t\t}\n\t\t\treturn actionsSelectMenu;\n\t\t}),\n\n\t\tmodesSelectMenu: Ember.computed('isModePayPeriod', 'isModeWeekly', function () {\n\t\t\tvar modesSelectMenu = [Ember.Object.create({ key: 'pay-period', value: (0, _utils.loc)('Pay Period'), _selected: this.get('isModePayPeriod') }), Ember.Object.create({ key: 'weekly', value: (0, _utils.loc)('Weekly'), _selected: this.get('isModeWeekly') })];\n\t\t\treturn modesSelectMenu;\n\t\t}),\n\n\t\thasPrevBounds: Ember.computed('isLoading', 'isModeWeekly', 'isModePayPeriod', 'payPeriods', 'currentPayPeriodIndex', function () {\n\t\t\tif (this.get('isLoading')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.get('isModePayPeriod') && this.get('currentPayPeriodIndex') + 1 >= this.get('payPeriods.length')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}),\n\n\t\thasNextBounds: Ember.computed('isLoading', 'isModeWeekly', 'isModePayPeriod', 'start', 'end', function () {\n\t\t\tif (this.get('isLoading')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.get('isModePayPeriod') && this.get('currentPayPeriodIndex') === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.get('isModeWeekly') && this.get('end') >= _utils.Time.date().unix()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}),\n\n\t\tcurrentPayPeriodIndex: Ember.computed('mode', 'payPeriods', 'start', 'end', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.get('mode') !== 'pay-period' || Ember.isNone(this.get('payPeriods'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.get('payPeriods').toArray().findIndex(function (pp) {\n\t\t\t\treturn pp.get('startTime') === _this.get('start');\n\t\t\t});\n\t\t}),\n\n\t\tcurrentPayPeriod: Ember.computed('payPeriods', 'currentPayPeriodIndex', function () {\n\t\t\tif (Ember.isNone(this.get('currentPayPeriodIndex'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.get('payPeriods').objectAt(this.get('currentPayPeriodIndex'));\n\t\t}),\n\n\t\tprevDataBounds: Ember.computed('currentPayPeriodIndex', 'mode', 'start', 'end', function () {\n\t\t\tthis.getProperties('mode', 'start', 'end', 'currentPayPeriodIndex');\n\n\t\t\tif (!this.get('hasPrevBounds')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.getPrevDateBounds();\n\t\t}),\n\n\t\tnextDataBounds: Ember.computed('currentPayPeriodIndex', 'mode', 'start', 'end', function () {\n\t\t\tthis.getProperties('currentPayPeriodIndex', 'mode', 'start', 'end');\n\n\t\t\tif (!this.get('hasNextBounds')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.getNextDateBounds();\n\t\t}),\n\n\t\tprevRangeText: Ember.computed('prevDataBounds', 'hasPrevBounds', function () {\n\t\t\tvar prevDataBounds = this.get('prevDataBounds');\n\n\t\t\tif (Ember.isNone(prevDataBounds) || !this.get('hasPrevBounds')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar _get = this.get('prevDataBounds'),\n\t\t\t    start = _get.start,\n\t\t\t    end = _get.end;\n\n\t\t\treturn this.dateRangeString(start, end);\n\t\t}),\n\n\t\tnextRangeText: Ember.computed('nextDataBounds', 'hasNextBounds', function () {\n\t\t\tvar nextDataBounds = this.get('nextDataBounds');\n\n\t\t\tif (Ember.isNone(nextDataBounds) || !this.get('hasNextBounds')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar _get2 = this.get('nextDataBounds'),\n\t\t\t    start = _get2.start,\n\t\t\t    end = _get2.end;\n\n\t\t\treturn this.dateRangeString(start, end);\n\t\t}),\n\n\t\tdateRangeString: function dateRangeString(start, end) {\n\t\t\tvar startString = _utils.Time.date(start).format('l');\n\t\t\tvar endString = _utils.Time.date(end).format('l');\n\n\t\t\treturn startString + ' - ' + endString;\n\t\t},\n\t\tgetPrevDateBounds: function getPrevDateBounds() {\n\t\t\tswitch (this.get('mode')) {\n\t\t\t\tcase 'pay-period':\n\t\t\t\t\treturn this.getPrevPayPeriodBounds();\n\t\t\t\tcase 'weekly':\n\t\t\t\t\treturn this.getPrevWeekBounds();\n\t\t\t\tdefault:\n\t\t\t\t\tthrow 'Invalid mode: ' + this.get('mode');\n\t\t\t}\n\t\t},\n\t\tgetNextDateBounds: function getNextDateBounds() {\n\t\t\tswitch (this.get('mode')) {\n\t\t\t\tcase 'pay-period':\n\t\t\t\t\treturn this.getNextPayPeriodBounds();\n\t\t\t\tcase 'weekly':\n\t\t\t\t\treturn this.getNextWeekBounds();\n\t\t\t\tdefault:\n\t\t\t\t\tthrow 'Invalid mode: ' + this.get('mode');\n\t\t\t}\n\t\t},\n\t\tsetDateBoundsToPrev: function setDateBoundsToPrev() {\n\t\t\tvar _get3 = this.get('prevDataBounds'),\n\t\t\t    start = _get3.start,\n\t\t\t    end = _get3.end;\n\n\t\t\treturn this.send('setDateBounds', start, end);\n\t\t},\n\t\tsetDateBoundsToNext: function setDateBoundsToNext() {\n\t\t\tvar _get4 = this.get('nextDataBounds'),\n\t\t\t    start = _get4.start,\n\t\t\t    end = _get4.end;\n\n\t\t\treturn this.send('setDateBounds', start, end);\n\t\t},\n\t\tgetPrevPayPeriodBounds: function getPrevPayPeriodBounds() {\n\t\t\tvar _getProperties = this.getProperties('payPeriods', 'currentPayPeriodIndex'),\n\t\t\t    payPeriods = _getProperties.payPeriods,\n\t\t\t    currentPayPeriodIndex = _getProperties.currentPayPeriodIndex;\n\t\t\t// Logger.info(this, 'getPrevPayPeriodBounds', payPeriods, currentPayPeriodIndex);\n\n\t\t\tif (Ember.isNone(payPeriods) || Ember.isNone(currentPayPeriodIndex) || currentPayPeriodIndex === -1) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar prevIndex = this.get('currentPayPeriodIndex') + 1;\n\t\t\tvar toPayPeriod = this.get('payPeriods').objectAt(prevIndex);\n\t\t\tvar start = toPayPeriod.get('startTime');\n\t\t\tvar end = toPayPeriod.get('endTime');\n\n\t\t\treturn { start: start, end: end };\n\t\t},\n\t\tgetNextPayPeriodBounds: function getNextPayPeriodBounds() {\n\t\t\tvar _getProperties2 = this.getProperties('payPeriods', 'currentPayPeriodIndex'),\n\t\t\t    payPeriods = _getProperties2.payPeriods,\n\t\t\t    currentPayPeriodIndex = _getProperties2.currentPayPeriodIndex;\n\t\t\t// Logger.info(this, 'getNextPayPeriodBounds', payPeriods, currentPayPeriodIndex);\n\n\t\t\tif (Ember.isNone(payPeriods) || Ember.isNone(currentPayPeriodIndex) || currentPayPeriodIndex === -1) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar nextIndex = currentPayPeriodIndex - 1;\n\t\t\tvar toPayPeriod = payPeriods.objectAt(nextIndex);\n\t\t\tvar start = toPayPeriod.get('startTime');\n\t\t\tvar end = toPayPeriod.get('endTime');\n\n\t\t\treturn { start: start, end: end };\n\t\t},\n\t\tgetPrevWeekBounds: function getPrevWeekBounds() {\n\t\t\treturn (0, _overtimePeriod.createOvertimeBoundWeek)(this.get('auth.organizationOvertimePeriod'), _utils.Time.date(this.get('start')).subtract(1, 'week').unix());\n\t\t},\n\t\tgetNextWeekBounds: function getNextWeekBounds() {\n\t\t\tif (!this.get('hasNextBounds')) return null;\n\n\t\t\treturn (0, _overtimePeriod.createOvertimeBoundWeek)(this.get('auth.organizationOvertimePeriod'), _utils.Time.date(this.get('start')).add(1, 'week').unix());\n\t\t},\n\n\n\t\t// UTILITIES\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\treturn this.set(key, val);\n\t\t\t}\n\t\t},\n\t\tsafeSetProperties: function safeSetProperties(hash) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\treturn this.setProperties(hash);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\t// pass up to parent\n\t\t\topenDialog: function openDialog(dialogName) {\n\t\t\t\t_utils.Assert.isString(dialogName);\n\t\t\t\t// Logger.info(this, 'openDialog', dialogName);\n\n\t\t\t\treturn this.openDialog(dialogName);\n\t\t\t},\n\n\n\t\t\t// pass up to parent\n\t\t\tsetMode: function setMode(mode) {\n\t\t\t\t_utils.Assert.isString(mode);\n\t\t\t\t// Logger.info(this, 'setMode', mode);\n\n\t\t\t\treturn this.setMode(mode);\n\t\t\t},\n\n\n\t\t\t// pass up to parent\n\t\t\topenRangeActivity: function openRangeActivity(start, end) {\n\t\t\t\t_utils.Assert.isInteger(start);\n\t\t\t\t_utils.Assert.isInteger(end);\n\t\t\t\t// Logger.info(this, 'openRangeActivity', { start, end });\n\n\t\t\t\treturn this.openRangeActivity(start, end);\n\t\t\t},\n\t\t\topenFullReport: function openFullReport() {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tend: this.get('end'),\n\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\tstart: this.get('start')\n\t\t\t\t};\n\t\t\t\t// Logger.info(this, 'openFullReport', { queryParams });\n\n\t\t\t\treturn this.get('router').transitionTo('time-card.full-report', { queryParams: queryParams });\n\t\t\t},\n\t\t\tsetDateBounds: function setDateBounds(start, end) {\n\t\t\t\t// Logger.info(this, 'setDateBounds', { start, end });\n\n\t\t\t\t_utils.Assert.isInteger(start);\n\t\t\t\t_utils.Assert.isInteger(end);\n\n\t\t\t\treturn this.setDateBounds(start, end);\n\t\t\t},\n\t\t\tonNext: function onNext() {\n\t\t\t\t// Logger.info(this, 'onNext');\n\t\t\t\treturn this.setDateBoundsToNext();\n\t\t\t},\n\t\t\tonPrev: function onPrev() {\n\t\t\t\t// Logger.info(this, 'onPrev');\n\t\t\t\treturn this.setDateBoundsToPrev();\n\t\t\t},\n\t\t\tonSelectAction: function onSelectAction(item) {\n\t\t\t\tif (item.get('key') === 'new-time-entry') {\n\t\t\t\t\treturn this.send('openDialog', 'NewTimeEntryDialog');\n\t\t\t\t} else if (item.get('key') === 'new-time-off') {\n\t\t\t\t\treturn this.send('openDialog', 'NewTimeOffDialog');\n\t\t\t\t} else if (item.get('key') === 'full-report') {\n\t\t\t\t\treturn this.send('openFullReport');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSelectMode: function onSelectMode(item) {\n\t\t\t\t// Logger.info(this, 'onSelectMode', item);\n\n\t\t\t\treturn this.send('setMode', item.key);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-sheet/index', ['exports', '@busy-web/utils', 'busy-app/utils/organization/overtime-period'], function (exports, _utils, _overtimePeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet'],\n\t\tclassNameBindings: ['isLoading:is-loading'],\n\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriod: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\t\tgraylog: Ember.inject.service(),\n\n\t\t// arguments\n\t\tmember: null,\n\t\tstart: null,\n\t\tend: null,\n\t\tmode: null,\n\n\t\t// recordsets created in loadModel()\n\t\tmemberDaySeconds: null,\n\t\tconflicts: null,\n\t\topenEntry: null,\n\t\t// orgOvertime: null,\n\t\tpayPeriods: null,\n\n\t\tdirtyFlag: false,\n\t\tisLoading: false,\n\t\thasLoaded: false,\n\t\tshowSummaryDialog: false,\n\t\trefreshTimestamp: null,\n\n\t\tactivityReportEnd: null,\n\t\tactivityReportStart: null,\n\t\tactivityReportSettings: null,\n\n\t\tshowTimeEntryView: true,\n\n\t\tentryConflictCutoff: _utils.Time.date().startOf('day').subtract(90, 'days').unix(),\n\n\t\tisRenderable: Ember.computed.and('hasLoaded', 'auth.organizationOvertimePeriod.length', 'payPeriods.length', 'start', 'end', 'mode'),\n\t\tisModePayPeriod: Ember.computed.equal('mode', 'pay-period'),\n\t\tisModeWeekly: Ember.computed.equal('mode', 'weekly'),\n\n\t\t// this is the currently selected pay period\n\t\tcurrentPayPeriod: Ember.computed('mode', 'payPeriods', 'start', 'end', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('isModePayPeriod') || Ember.isNone(this.get('payPeriods'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.get('payPeriods').toArray().find(function (pp) {\n\t\t\t\treturn pp.get('startTime') === _this.get('start');\n\t\t\t});\n\t\t}),\n\n\t\t// this is the live pay period encompassing todays date\n\t\tlivePayPeriod: Ember.computed('payPeriods', function () {\n\t\t\tif (Ember.isNone(this.get('payPeriods'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar now = _utils.Time.date();\n\t\t\treturn this.get('payPeriods').find(function (pp) {\n\t\t\t\tvar startTime = _utils.Time.date(pp.get('startTime'));\n\t\t\t\tvar endTime = _utils.Time.date(pp.get('endTime'));\n\n\t\t\t\treturn now.isBetween(startTime, endTime, null, '[]'); // [] argument means inclusive, moment is exclusive by default\n\t\t\t});\n\t\t}),\n\n\t\tactivityReportModel: Ember.computed('member', function () {\n\t\t\treturn {\n\t\t\t\tmember: this.get('member')\n\t\t\t};\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\t// Logger.info(this, 'init');\n\t\t\tthis.graylogViewedTimeCardSection();\n\n\t\t\tif (!Ember.isNone(this.get('member'))) {\n\t\t\t\tthis.initData();\n\t\t\t}\n\t\t},\n\t\tinitData: function initData() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _getProperties = this.getProperties('start', 'end', 'mode'),\n\t\t\t    start = _getProperties.start,\n\t\t\t    end = _getProperties.end;\n\t\t\t// Logger.info(this, 'initData', start, end, mode);\n\n\t\t\tthis.fixStringDates(start, end);\n\n\t\t\tthis.safeSet('isLoading', true);\n\t\t\tthis.loadStaticData().then(function () {\n\t\t\t\treturn _this2.initDates();\n\t\t\t});\n\t\t},\n\t\tfixStringDates: function fixStringDates(start, end) {\n\t\t\tif (!Ember.isNone(start) && parseInt(start, 10) !== start) {\n\t\t\t\tthis.set('start', parseInt(start, 10));\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(end) && parseInt(end, 10) !== end) {\n\t\t\t\tthis.set('end', parseInt(end, 10));\n\t\t\t}\n\t\t\t// Logger.info(this, 'fixStringDates', this.getProperties('start', 'end', 'mode'));\n\t\t},\n\t\tinitDates: function initDates() {\n\t\t\tvar _getProperties2 = this.getProperties('start', 'end', 'mode'),\n\t\t\t    start = _getProperties2.start,\n\t\t\t    end = _getProperties2.end,\n\t\t\t    mode = _getProperties2.mode;\n\t\t\t// Logger.info(this, 'initDates', { start, end, mode });\n\n\t\t\tif (!Ember.isNone(start) && !Ember.isNone(end) && !Ember.isNone(mode)) {\n\t\t\t\tthis.setDateBounds(start, end);\n\t\t\t\t// } else if (this.get('mode') === 'pay-period') {\n\t\t\t} else if (this.get('mode') === 'weekly') {\n\t\t\t\tthis.initDatesWeekly();\n\t\t\t} else {\n\t\t\t\tthis.set('mode', 'pay-period');\n\t\t\t\tthis.initDatesPayPeriod();\n\t\t\t}\n\t\t},\n\t\tinitDatesPayPeriod: function initDatesPayPeriod() {\n\t\t\t// const now = Time.date().unix();\n\t\t\t// const payPeriod = this.get('payPeriod').getPayPeriod(now);\n\t\t\tvar _get$getProperties = this.get('livePayPeriod').getProperties('startTime', 'endTime'),\n\t\t\t    startTime = _get$getProperties.startTime,\n\t\t\t    endTime = _get$getProperties.endTime;\n\n\t\t\t_utils.Assert.isNumber(startTime);\n\t\t\t_utils.Assert.isNumber(endTime);\n\n\t\t\t// Logger.info(this, 'initDatesPayPeriod', { startTime, endTime }, { startTime: Time.date(startTime).format(), endTime: Time.date(endTime).format() });\n\n\t\t\tthis.setDateBounds(startTime, endTime);\n\t\t},\n\t\tgetWeekBounds: function getWeekBounds(timestamp) {\n\t\t\treturn (0, _overtimePeriod.createOvertimeBoundWeek)(this.get('auth.organizationOvertimePeriod'), timestamp);\n\t\t},\n\t\tinitDatesWeekly: function initDatesWeekly() {\n\t\t\tvar _getWeekBounds = this.getWeekBounds(_utils.Time.date().unix()),\n\t\t\t    start = _getWeekBounds.start,\n\t\t\t    end = _getWeekBounds.end;\n\t\t\t// Logger.info(this, 'initDatesWeekly', { start, end });\n\n\t\t\tthis.setDateBounds(start, end);\n\t\t},\n\t\tloadStaticData: function loadStaticData() {\n\t\t\tvar _this3 = this;\n\n\t\t\t// Logger.info(this, 'loadStaticData');\n\n\t\t\treturn this.getMergedPayPeriods() // needed early to init the pay periods selector\n\t\t\t.then(function (payPeriods) {\n\t\t\t\treturn _this3.safeSetProperties({ payPeriods: payPeriods });\n\t\t\t});\n\t\t},\n\t\tloadModel: function loadModel() {\n\t\t\tvar _this4 = this;\n\n\t\t\t// Logger.info(this, 'loadModel', this.getProperties('start', 'end', 'mode'));\n\n\t\t\t// should only happen when running CI tests\n\t\t\tif (Ember.isNone(this.get('member'))) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tthis.safeSet('isLoading', true);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmemberDaySeconds: this.loadMemberDaySeconds(),\n\t\t\t\tmemberDayCost: this.loadMemberDayCost(),\n\t\t\t\ttimeOffAggregates: this.loadTimeOffAggregates(),\n\t\t\t\tconflicts: this.loadConflicts(),\n\t\t\t\topenEntry: this.loadOpenEntry(),\n\t\t\t\tpayPeriods: this.getMergedPayPeriods(),\n\t\t\t\torganizationInfo: Ember.get(this, 'auth.organizationInfo') // make sure this is loaded before format-currency is used\n\t\t\t}).then(function (props) {\n\t\t\t\t// Logger.info(this, 'loadModel', props);\n\n\t\t\t\treturn _this4.safeSetProperties(props);\n\t\t\t}).finally(function () {\n\t\t\t\t// Logger.info(this, 'loadModel', 'done');\n\n\t\t\t\treturn _this4.safeSetProperties({\n\t\t\t\t\tisLoading: false,\n\t\t\t\t\thasLoaded: true,\n\t\t\t\t\trefreshTimestamp: _utils.Time.date().unix()\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadMemberDaySeconds: function loadMemberDaySeconds() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_gte: { start_date: this.get('start') },\n\t\t\t\t_lte: { start_date: this.get('end') }\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadMemberDaySeconds', { params });\n\n\t\t\treturn this.get('store').query('member-day-seconds', params);\n\t\t},\n\t\tloadMemberDayCost: function loadMemberDayCost() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_gte: { start_date: this.get('start') },\n\t\t\t\t_lte: { start_date: this.get('end') }\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadMemberDayCost', { params });\n\n\t\t\treturn this.get('store').query('member-day-cost', params);\n\t\t},\n\t\tloadConflicts: function loadConflicts() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\trange_start: this.get('start'),\n\t\t\t\trange_end: this.get('end')\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadConflicts', { params });\n\n\t\t\treturn this.get('store').query('time-entry-member-conflicts', params);\n\t\t},\n\t\tloadOpenEntry: function loadOpenEntry() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\tend_time: '_-NULL-_',\n\t\t\t\t_asc: ['start_time'],\n\t\t\t\tpage_size: 1\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadOpenEntries', { params });\n\n\t\t\treturn this.get('store').query('time-entry', params).then(function (entries) {\n\t\t\t\tvar entry = entries.get('firstObject');\n\n\t\t\t\tif (!Ember.isNone(entry)) {\n\t\t\t\t\treturn entry.get('startTime');\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tloadOldestTimeEntry: function loadOldestTimeEntry() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_gt: { start_time: 0 }, // no negative time entries\n\t\t\t\t_asc: ['start_time', 'submitted_on'],\n\t\t\t\tpage_size: 1\n\t\t\t};\n\n\t\t\t// Logger.log(this, 'loadOldestTimeEntry', params);\n\n\t\t\treturn this.get('store').query('pay-period-member-seconds', params);\n\t\t},\n\t\tgeneratePayPeriods: function generatePayPeriods() {\n\t\t\tvar _this5 = this;\n\n\t\t\t// Logger.log(this, 'generatePayPeriods');\n\t\t\tvar currentPayPeriod = this.get('payPeriod').getPayPeriod();\n\t\t\tvar start = currentPayPeriod.get('end'); // include through tthe end of this pay period in generation\n\t\t\tvar excludeEnd = false;\n\t\t\t// Logger.log(this, 'generatePayPeriods', { currentPayPeriod, start, currentPayPeriod });\n\n\t\t\treturn this.loadOldestTimeEntry().then(function (results) {\n\t\t\t\tvar oldestEntry = results.objectAt('0');\n\t\t\t\tvar end = _this5.get('member.createdOn');\n\n\t\t\t\tif (!Ember.isNone(oldestEntry)) {\n\t\t\t\t\tend = Math.min(end, oldestEntry.get('startTime'));\n\t\t\t\t}\n\t\t\t\t// Logger.log(this, 'generatePayPeriods', results, oldestEntry, end);\n\n\t\t\t\tvar payPeriods = _this5.get('payPeriod').getPayPeriodDateRange(start, end, excludeEnd).sortBy('start').reverse();\n\n\t\t\t\t// Logger.log(this, 'generatePayPeriods', {start, end, currentPayPeriod, payPeriods});\n\n\t\t\t\treturn Ember.RSVP.resolve(payPeriods);\n\t\t\t});\n\t\t},\n\t\tloadPayPeriodAggregates: function loadPayPeriodAggregates() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_desc: ['start_time'],\n\t\t\t\tpage_size: 99999\n\t\t\t};\n\n\t\t\treturn this.get('store').query('pay-period-member-seconds', params);\n\t\t},\n\t\tgetMergedPayPeriods: function getMergedPayPeriods() {\n\t\t\tvar _this6 = this;\n\n\t\t\t// Logger.info(this, 'getMergedPayPeriods');\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tallPayPeriods: this.generatePayPeriods(),\n\t\t\t\taggPayPeriods: this.loadPayPeriodAggregates()\n\t\t\t}).then(function (props) {\n\t\t\t\t// Logger.log(this, 'getMergedPayPeriods', props);\n\n\t\t\t\treturn _this6.mergePayPeriodData(props.allPayPeriods, props.aggPayPeriods);\n\t\t\t});\n\t\t},\n\t\tmergePayPeriodData: function mergePayPeriodData(allPayPeriods, aggPayPeriods) {\n\t\t\t// Logger.info(this, 'getMergedPayPeriods');\n\t\t\tvar aggKeyedByStart = this.keyArrayBy(aggPayPeriods, 'startTime');\n\t\t\t// Logger.info(this, 'getMergedPayPeriods', aggKeyedByStart);\n\n\t\t\tvar mergedPayPeriods = allPayPeriods.map(function (pp) {\n\t\t\t\tvar aggKey = pp.get('start').toString();\n\t\t\t\tvar agg = aggKeyedByStart.get(aggKey);\n\n\t\t\t\t// hacky workaround since parts are expecting startTime and endTime props as used in PayPeriodMemberSeconds\n\t\t\t\tpp.setProperties({\n\t\t\t\t\tstartTime: Ember.computed.alias('start'),\n\t\t\t\t\tendTime: Ember.computed.alias('end')\n\t\t\t\t});\n\n\t\t\t\tif (!Ember.isNone(agg) && agg.get('endTime') === pp.get('end')) {\n\t\t\t\t\tvar aggProps = agg.getProperties('regularSeconds', 'doubletimeSeconds', 'overtimeSeconds', 'totalSeconds', // computed\n\t\t\t\t\t'regularCost', 'overtimeCost', 'doubletimeCost', 'totalCost');\n\n\t\t\t\t\tpp.setProperties(aggProps);\n\t\t\t\t}\n\n\t\t\t\treturn pp;\n\t\t\t});\n\t\t\t// Logger.info(this, 'getMergedPayPeriods', mergedPayPeriods);\n\n\t\t\treturn mergedPayPeriods;\n\t\t},\n\t\tloadOrganizationOvertimePeriods: function loadOrganizationOvertimePeriods() {\n\t\t\tvar params = {\n\t\t\t\t_desc: ['start_time'],\n\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadOrganizationOvertimePeriods', params);\n\n\t\t\treturn this.get('store').query('organization-overtime-period', params);\n\t\t},\n\t\tloadTimeOffAggregates: function loadTimeOffAggregates() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t_gte: { date_stamp: this.get('start') },\n\t\t\t\t_lte: { date_stamp: this.get('end') }\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadMemberDaySeconds', { params });\n\n\t\t\treturn this.get('store').query('time-off', params).then(function (timeOffEntries) {\n\t\t\t\treturn _this7.aggregateTimeOffEntries(timeOffEntries);\n\t\t\t});\n\t\t},\n\t\taggregateTimeOffEntries: function aggregateTimeOffEntries(timeOffEntries) {\n\t\t\t// Logger.info(this, 'aggregateTimeOffEntries', { timeOffEntries });\n\n\t\t\tvar dates = timeOffEntries.mapBy('dateStamp').uniq();\n\n\t\t\tvar timeoffAggregates = dates.map(function (dateStamp) {\n\t\t\t\tvar entries = timeOffEntries.filterBy('dateStamp', dateStamp);\n\t\t\t\tvar seconds = entries.reduce(function (acc, entry) {\n\t\t\t\t\treturn acc = +parseInt(Ember.get(entry, 'seconds'), 10);\n\t\t\t\t}, 0);\n\t\t\t\tvar hasPaid = entries.any(function (entry) {\n\t\t\t\t\treturn Ember.get(entry, 'paid');\n\t\t\t\t});\n\t\t\t\tvar hasUnpaid = entries.any(function (entry) {\n\t\t\t\t\treturn !Ember.get(entry, 'paid');\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdateStamp: dateStamp,\n\t\t\t\t\tentries: entries,\n\t\t\t\t\tseconds: seconds,\n\t\t\t\t\thasPaid: hasPaid,\n\t\t\t\t\thasUnpaid: hasUnpaid\n\t\t\t\t};\n\t\t\t});\n\n\t\t\t// Logger.info(this, 'aggregateTimeOffEntries', { timeoffAggregates });\n\n\n\t\t\treturn timeoffAggregates;\n\t\t},\n\n\n\t\t// action helpers\n\t\tsetDateBounds: function setDateBounds(start, end) {\n\t\t\tvar _this8 = this;\n\n\t\t\t// Logger.info(this, 'setDateBounds', { start, end });\n\n\t\t\tEmber.RSVP.resolve(this.safeSetProperties({\n\t\t\t\tstart: parseInt(start, 10),\n\t\t\t\tend: parseInt(end, 10)\n\t\t\t})).then(function () {\n\t\t\t\tEmber.run.next(_this8, function () {\n\t\t\t\t\treturn _this8.loadModel();\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsetMode: function setMode(mode) {\n\t\t\tvar _this9 = this;\n\n\t\t\t// Logger.info(this, 'setMode', mode);\n\n\t\t\tEmber.RSVP.resolve(this.safeSetProperties({\n\t\t\t\tmode: mode,\n\t\t\t\tstart: null,\n\t\t\t\tend: null\n\t\t\t})).then(function () {\n\t\t\t\tEmber.run.next(_this9, function () {\n\t\t\t\t\treturn _this9.initDates();\n\t\t\t\t});\n\t\t\t\t// next(this, () => this.loadModel());\n\t\t\t});\n\t\t},\n\t\tkeyArrayBy: function keyArrayBy(collection, key) {\n\t\t\tvar keyedCollection = collection.reduce(function (acc, item) {\n\t\t\t\tvar itemKey = item.get(key).toString();\n\n\t\t\t\treturn Object.assign(acc, _defineProperty({}, itemKey, item));\n\t\t\t}, {});\n\n\t\t\treturn Ember.Object.create(keyedCollection);\n\t\t},\n\n\n\t\t// utility helpers\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set(key, val);\n\t\t\t\treturn this.get(key);\n\t\t\t}\n\t\t},\n\t\tsafeSetProperties: function safeSetProperties(hash) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.setProperties(hash);\n\t\t\t\treturn Ember.RSVP.resolve(this.getProperties.apply(this, _toConsumableArray(Object.keys(hash))));\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\t\tgetDialogToggle: function getDialogToggle(dialogName) {\n\t\t\treturn 'show' + dialogName;\n\t\t},\n\t\tsetupActivityReport: function setupActivityReport(start) {\n\t\t\tvar end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n\n\t\t\tend = _utils.Time.date(end).utc().endOf('day').unix();\n\n\t\t\tvar activityReportSettings = Ember.Object.create({\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\ttype: 'member',\n\t\t\t\tselected: this.get('mode'),\n\t\t\t\tcolumn: 'total-hours',\n\t\t\t\ttotalHours: true,\n\t\t\t\thideMemberName: true\n\t\t\t});\n\n\t\t\tvar createTimeEntryConfig = {\n\t\t\t\tdate: end,\n\t\t\t\tmember: this.get('member')\n\t\t\t};\n\n\t\t\treturn this.safeSetProperties({\n\t\t\t\tactivityReportStart: start,\n\t\t\t\tactivityReportEnd: end,\n\t\t\t\tactivityReportSettings: activityReportSettings,\n\t\t\t\tcreateTimeEntryConfig: createTimeEntryConfig\n\t\t\t});\n\t\t},\n\n\n\t\t/* graylog events */\n\n\t\tgraylogViewedTimeCardSection: function graylogViewedTimeCardSection() {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Viewed Time Card Section',\n\t\t\t\tfull_message: 'Viewed Time Card Section',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_type: 'pay_period'\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenDialog: function openDialog(dialogName) {\n\t\t\t\t_utils.Assert.isString(dialogName);\n\t\t\t\t// Logger.info(this, 'openDialog', dialogName);\n\n\t\t\t\tthis.safeSet(this.getDialogToggle(dialogName), true);\n\t\t\t},\n\t\t\tcloseDialog: function closeDialog(dialogName) {\n\t\t\t\t_utils.Assert.isString(dialogName);\n\t\t\t\t// Logger.info(this, 'closeDialog', dialogName);\n\n\t\t\t\tthis.send('reloadSync');\n\n\t\t\t\tthis.safeSet(this.getDialogToggle(dialogName), false);\n\t\t\t},\n\t\t\ttoggleDialog: function toggleDialog(dialogName) {\n\t\t\t\t_utils.Assert.isString(dialogName);\n\t\t\t\t// Logger.info(this, 'toggleDialog', dialogName);\n\n\t\t\t\treturn this.toggleProperty(this.getDialogToggle(dialogName));\n\t\t\t},\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.loadModel();\n\t\t\t},\n\t\t\treloadSync: function reloadSync() {\n\t\t\t\tthis.safeSet('dirtyFlag', _utils.Time.date().unix());\n\t\t\t},\n\t\t\topenDayActivity: function openDayActivity(summaryDate) {\n\t\t\t\t_utils.Assert.isNumber(summaryDate);\n\t\t\t\t// Logger.info(this, 'openDayActivity', { summaryDate });\n\n\t\t\t\tthis.setupActivityReport(summaryDate);\n\n\t\t\t\tthis.send('openDialog', 'SummaryDialog');\n\t\t\t},\n\t\t\topenRangeActivity: function openRangeActivity(start, end) {\n\t\t\t\t_utils.Assert.isNumber(start);\n\t\t\t\t_utils.Assert.isNumber(end);\n\t\t\t\t// Logger.info(this, 'openRangeActivity', { start, end });\n\n\t\t\t\tthis.setupActivityReport(start, end);\n\n\t\t\t\tthis.send('openDialog', 'SummaryDialog');\n\t\t\t},\n\t\t\tsetDateBounds: function setDateBounds(start, end) {\n\t\t\t\tthis.setDateBounds(start, end);\n\t\t\t},\n\t\t\tsetMode: function setMode(mode) {\n\t\t\t\tthis.setMode(mode);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-sheet/signature-notification', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet-signature-notification'],\n\t\telementId: 'c-time-sheet-signature-notification',\n\n\t\tfeatures: Ember.inject.service(),\n\t\tpayPeriod: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\t\tsession: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\n\t\tmember: null,\n\t\tcurrentPayPeriod: null,\n\t\tvisiblePayPeriod: null,\n\t\tdirtyFlag: null,\n\n\t\tisCurrentPayPeriodActive: Ember.computed('currentPayPeriod.start', 'visiblePayPeriod.start', function () {\n\t\t\treturn Ember.get(this, 'currentPayPeriod.start') === Ember.get(this, 'visiblePayPeriod.start');\n\t\t}),\n\n\t\tisSignaturePossible: Ember.computed('features.signatures', 'signature.isTimecardSigningEnabled', 'previousPayPeriod', 'session.isAuthenticated', function () {\n\t\t\treturn Ember.get(this, 'previousPayPeriod') && Ember.get(this, 'session.isAuthenticated') && Ember.get(this, 'features.signatures') && Ember.get(this, 'signature.isTimecardSigningEnabled') && Ember.get(this, 'previousPayPeriod.isSignable');\n\t\t}),\n\n\t\tshowNotification: Ember.computed('isCurrentPayPeriodActive', 'isSignaturePossible', 'needsTimecardSignature', 'dirtyFlag', function () {\n\t\t\treturn Ember.get(this, 'isCurrentPayPeriodActive') && !Ember.get(this, 'dirtyFlag') && Ember.get(this, 'isSignaturePossible') && Ember.get(this, 'needsTimecardSignature');\n\t\t}),\n\n\t\tpreviousPayPeriod: Ember.computed('currentPayPeriod', function () {\n\t\t\tvar currentPayPeriod = Ember.get(this, 'currentPayPeriod');\n\n\t\t\tif (Ember.isNone(currentPayPeriod)) {\n\t\t\t\treturn currentPayPeriod;\n\t\t\t}\n\n\t\t\tvar prevEnd = Ember.get(currentPayPeriod, 'start') - 1;\n\n\t\t\treturn Ember.get(this, 'payPeriod').getPayPeriod(prevEnd);\n\t\t}),\n\n\t\tmemberTimeDocument: Ember.computed('member.id', 'previousPayPeriod.{start,end}', function () {\n\t\t\treturn _emberData.default.PromiseObject.create({ promise: this.loadMemberTimeDocument() });\n\t\t}),\n\n\t\tneedsTimecardSignature: Ember.computed('member.id', 'dirtyFlag', function () {\n\t\t\t// Logger.info(this, 'needsTimecardSignature', 'member.id', get(this, 'member.id'));\n\t\t\t// Logger.info(this, 'needsTimecardSignature', 'dirtyFlag', get(this, 'dirtyFlag'));\n\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.get('signature').getNeedsTimecardSignature(Ember.get(this, 'member.id'))\n\t\t\t});\n\t\t}),\n\n\t\tactions: {\n\t\t\topenFullReport: function openFullReport() {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tend: Ember.get(this, 'previousPayPeriod.end'),\n\t\t\t\t\tmember_id: Ember.get(this, 'member.id'),\n\t\t\t\t\tstart: Ember.get(this, 'previousPayPeriod.start')\n\t\t\t\t};\n\n\t\t\t\treturn Ember.get(this, 'router').transitionTo('time-card.full-report', { queryParams: queryParams });\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/time/time-sheet/signature-status', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet--signature-status'],\n\n\t\taccess: Ember.inject.service(),\n\t\tsession: Ember.inject.service(),\n\t\tfeatures: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\t\tsignature: Ember.inject.service(),\n\t\tstore: Ember.inject.service(),\n\n\t\tcurrentPayPeriod: null,\n\t\tmember: null,\n\t\tstart: null,\n\t\tend: null,\n\n\t\tshowSignatures: Ember.computed('features.signatures', 'signature.isTimecardSigningEnabled', 'currentPayPeriod', 'session.isAuthenticated', function () {\n\t\t\treturn this.get('session.isAuthenticated') && this.get('features.signatures') && this.get('signature.isTimecardSigningEnabled') && this.get('currentPayPeriod.isSignable');\n\t\t}),\n\n\t\tmemberTimeDocument: Ember.computed('member.id', 'start', 'end', 'currentPayPeriod', function () {\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.loadMemberTimeDocument()\n\t\t\t});\n\t\t}),\n\n\t\tselfSignature: Ember.computed('hasMemberTimeDocument', 'memberTimeDocument.selfSignatureId', function () {\n\t\t\tvar id = this.get('memberTimeDocument.selfSignatureId');\n\t\t\tvar promise = id ? this.loadSelfSignature(id) : Ember.RSVP.resolve();\n\n\t\t\treturn _emberData.default.PromiseObject.create({ promise: promise });\n\t\t}),\n\n\t\tauthoritativeSignature: Ember.computed('hasMemberTimeDocument', 'memberTimeDocument.authoritativeSignatureId', function () {\n\t\t\tvar id = this.get('memberTimeDocument.authoritativeSignatureId');\n\t\t\tvar promise = id ? this.loadAuthoritativeSignature(id) : Ember.RSVP.resolve();\n\n\t\t\treturn _emberData.default.PromiseObject.create({ promise: promise });\n\t\t}),\n\n\t\thasMemberTimeDocument: Ember.computed('memberTimeDocument.{id,isPending}', function () {\n\t\t\treturn !Ember.isNone(this.get('memberTimeDocument')) && !this.get('memberTimeDocument.isPending');\n\t\t}),\n\n\t\thasSelfSignature: Ember.computed('memberTimeDocument.selfSignatureId', 'selfSignature.{id,isPending}', function () {\n\t\t\treturn this.get('memberTimeDocument.selfSignatureId') && !Ember.isNone(this.get('selfSignature')) && !this.get('selfSignature.isPending');\n\t\t}),\n\n\t\thasAuthoritativeSignature: Ember.computed('memberTimeDocument.authoritativeSignatureId', 'authoritativeSignature.{id,isPending}', function () {\n\t\t\treturn this.get('memberTimeDocument.authoritativeSignatureId') && !Ember.isNone(this.get('authoritativeSignature')) && !this.get('authoritativeSignature.isPending');\n\t\t}),\n\n\t\tisLoadingSelfSignature: Ember.computed.or('memberTimeDocument.isPending', 'selfSignature.isPending'),\n\t\tisLoadingAuthoritativeSignature: Ember.computed.or('memberTimeDocument.isPending', 'authoritativeSignature.isPending'),\n\n\t\tisSupervisor: Ember.computed('member', function () {\n\t\t\tvar supervisorAction = 'timeEvents';\n\t\t\tvar member = this.get('member');\n\n\t\t\tif (Ember.isNone(member) || Ember.isNone(member.get('id'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.get('access').canTakeActionFor(supervisorAction, member);\n\t\t}),\n\n\t\trequestSupervisorSignature: Ember.computed('isSupervisor', 'signature.isTimecardSigningEnabled', 'currentPayPeriod.isSignable,hasAuthoritativeSignature', function () {\n\t\t\treturn this.get('isSupervisor') && this.get('signature.isTimecardSigningEnabled') && this.get('currentPayPeriod.isSignable') && !this.get('hasAuthoritativeSignature');\n\t\t}),\n\n\t\t// loadData() {\n\t\t// \t// should only happen when running CI tests\n\t\t// \tif (!this.get('member.id')) {\n\t\t// \t\treturn resolve();\n\t\t// \t}\n\t\t//\n\t\t// \tthis.safeSet('isLoading', true);\n\t\t//\n\t\t// \treturn hash({\n\t\t// \t\tmemberTimeDocument: this.loadMemberTimeDocument(),\n\t\t// \t}).then(props => {\n\t\t// \t\tLogger.info(this, 'loadData', props);\n\t\t//\n\t\t// \t\tthis.safeSetProperties(props);\n\t\t// \t}).finally(() => {\n\t\t// \t\tthis.safeSet('isLoading', false)\n\t\t// \t});\n\t\t// },\n\n\t\tloadMemberTimeDocument: function loadMemberTimeDocument() {\n\t\t\tvar params = {\n\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\tstart_time: this.get('start'),\n\t\t\t\tend_time: this.get('end'),\n\t\t\t\tedited: '_-NULL-_',\n\t\t\t\tpage_size: 1,\n\t\t\t\t_desc: 'submitted_on'\n\t\t\t};\n\n\t\t\t// Logger.info(this, 'loadMemberTimeDocument', { params });\n\n\t\t\treturn this.get('store').query('member-time-document', params).then(function (results) {\n\t\t\t\treturn results.get('firstObject');\n\t\t\t});\n\t\t},\n\t\tloadSelfSignature: function loadSelfSignature(id) {\n\t\t\treturn this.get('store').query('self-signature', { id: id }).then(function (results) {\n\t\t\t\treturn results.get('firstObject');\n\t\t\t});\n\t\t},\n\t\tloadAuthoritativeSignature: function loadAuthoritativeSignature(id) {\n\t\t\treturn this.get('store').query('authoritative-signature', { id: id }).then(function (results) {\n\t\t\t\treturn results.get('firstObject');\n\t\t\t});\n\t\t},\n\n\n\t\t// utility helpers\n\t\tsafeSet: function safeSet(key, val) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\treturn this.set(key, val);\n\t\t\t}\n\t\t},\n\t\tsafeSetProperties: function safeSetProperties(hash) {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\treturn this.setProperties(hash);\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenFullReport: function openFullReport() {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tend: this.get('end'),\n\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\tstart: this.get('start')\n\t\t\t\t};\n\n\t\t\t\t// Logger.info(this, 'openFullReport', { queryParams });\n\n\t\t\t\treturn this.get('router').transitionTo('time-card.full-report', { queryParams: queryParams });\n\t\t\t}\n\t\t}\n\n\t});\n});","define('busy-app/components/time/time-sheet/summary', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['c-time-sheet--summary'],\n\n\t\tmember: null,\n\t\tmemberDaySeconds: null,\n\n\t\treportTotals: Ember.computed('memberDaySeconds', 'memberDayCost', function () {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['memberDaySeconds', 'memberDayCost']),\n\t\t\t    memberDaySeconds = _EmberGetProperties.memberDaySeconds,\n\t\t\t    memberDayCost = _EmberGetProperties.memberDayCost;\n\n\t\t\tvar reportTotals = {\n\t\t\t\tregular: 0,\n\t\t\t\tovertime: 0,\n\t\t\t\tdoubletime: 0,\n\t\t\t\ttotalSeconds: 0,\n\t\t\t\tregularCost: 0,\n\t\t\t\tovertimeCost: 0,\n\t\t\t\tdoubletimeCost: 0,\n\t\t\t\ttotalCost: 0\n\t\t\t};\n\n\t\t\tif (Ember.isNone(memberDaySeconds) && Ember.isNone(memberDayCost)) {\n\t\t\t\treturn reportTotals;\n\t\t\t}\n\n\t\t\tmemberDaySeconds.forEach(function (item) {\n\t\t\t\treportTotals.regular += Ember.get(item, 'regular');\n\t\t\t\treportTotals.overtime += Ember.get(item, 'overtime');\n\t\t\t\treportTotals.doubletime += Ember.get(item, 'doubletime');\n\t\t\t\treportTotals.totalSeconds += Ember.get(item, 'totalSeconds');\n\t\t\t});\n\n\t\t\tmemberDayCost.forEach(function (item) {\n\t\t\t\treportTotals.regularCost += Ember.get(item, 'regularCost');\n\t\t\t\treportTotals.overtimeCost += Ember.get(item, 'overtimeCost');\n\t\t\t\treportTotals.doubletimeCost += Ember.get(item, 'doubletimeCost');\n\t\t\t\treportTotals.totalCost += Ember.get(item, 'totalCost');\n\t\t\t});\n\n\t\t\t// Logger.info(this, 'reportTotals', reportTotals);\n\n\t\t\treturn reportTotals;\n\t\t})\n\t});\n});","define('busy-app/components/version-refresher', ['exports', '@busy-web/utils', 'busy-app/utils/settings'], function (exports, _utils, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar kVersionKey = 'busy-version-info';\n\n\t/**\n  *\n  */\n\t/**\n  * @module Components\n  *\n  */\n\texports.default = Ember.Component.extend({\n\t\tclassNames: ['v-version-box'],\n\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * flag for showing the version dialog\n   *\n   * @property isNewVersion\n   * @type boolean\n   */\n\t\tisNewVersion: false,\n\n\t\tisMinor: false,\n\t\tisPatch: false,\n\t\tversion: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (this.get('features.version-refresh')) {\n\t\t\t\tthis.interval();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * returns a default list for local storeage\n   *\n   */\n\t\tdefaultList: function defaultList() {\n\t\t\treturn { current: _settings.default.get('version'), ignore: [] };\n\t\t},\n\t\tblackList: function blackList() {\n\t\t\t// get list from local storage\n\t\t\tvar list = _utils.LocalStorage.getProperty(kVersionKey);\n\n\t\t\t// if the list has never been set it will be undefined\n\t\t\tif (Ember.isNone(list)) {\n\t\t\t\tlist = this.defaultList();\n\t\t\t} else {\n\t\t\t\t// parse the json string\n\t\t\t\tlist = JSON.parse(list);\n\n\t\t\t\t// if the current version does not math the app version\n\t\t\t\t// then return a new default list\n\t\t\t\tif (list.current !== _settings.default.get('version')) {\n\t\t\t\t\tlist = this.defaultList();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn list;\n\t\t},\n\t\taddToBlackList: function addToBlackList(version) {\n\t\t\t_utils.Assert.isString(version);\n\n\t\t\t// get the black listed versions\n\t\t\tvar list = this.blackList();\n\n\t\t\t// if its not already in the list then add it\n\t\t\tif (list.ignore.indexOf(version) === -1) {\n\t\t\t\tlist.ignore.push(version);\n\t\t\t\t_utils.LocalStorage.setProperty(kVersionKey, JSON.stringify(list));\n\t\t\t}\n\t\t},\n\t\treset: function reset() {\n\t\t\t// reset the local store black list to a new default list\n\t\t\t_utils.LocalStorage.setProperty(kVersionKey, JSON.stringify(this.defaultList()));\n\t\t},\n\t\tinterval: function interval() {\n\t\t\t// set timer for 5 minute interval checking\n\t\t\tEmber.run.later(this, function () {\n\t\t\t\t// check version data\n\t\t\t\tthis.checkVersion();\n\n\t\t\t\t// reset timer\n\t\t\t\tthis.interval();\n\t\t\t}, 300000);\n\t\t},\n\t\tcheckVersion: function checkVersion() {\n\t\t\tvar _this = this;\n\n\t\t\t// make a call to get the json version number\n\t\t\tEmber.$.getJSON('//' + window.location.host + '/version.json', function (data) {\n\t\t\t\t// if data is an object with a version\n\t\t\t\tif (data && data.version) {\n\t\t\t\t\t// validate the version number\n\t\t\t\t\t_this.validate(data.version);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tvalidate: function validate(version) {\n\t\t\t_utils.Assert.isString(version);\n\n\t\t\t// store the version for later\n\t\t\tthis.set('version', version);\n\n\t\t\t// set bollean default values\n\t\t\tvar isNewVersion = false;\n\t\t\tvar isMinor = false;\n\t\t\tvar isPatch = false;\n\n\t\t\t// make sure we are not already on the new version\n\t\t\tif (version !== _settings.default.get('version')) {\n\t\t\t\t// get the black list\n\t\t\t\tvar list = this.blackList();\n\n\t\t\t\t// check if the version is in the black list\n\t\t\t\tif (list.ignore.indexOf(version) === -1) {\n\t\t\t\t\t// split the versions into arrays to check minor and patch changes\n\t\t\t\t\tvar oldVer = list.current.split('.');\n\t\t\t\t\tvar newVer = version.split('.');\n\n\t\t\t\t\t// future check for only triggering a message on minor version changes\n\t\t\t\t\tif (oldVer[oldVer.length - 2] !== newVer[newVer.length - 2]) {\n\t\t\t\t\t\tisMinor = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// future check for triggering a message on patch changes\n\t\t\t\t\tif (oldVer[oldVer.length - 1] !== newVer[newVer.length - 1]) {\n\t\t\t\t\t\tisPatch = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// always trigger message for now\n\t\t\t\t\tif (isMinor || isPatch) {\n\t\t\t\t\t\tisNewVersion = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set('isNewVersion', isNewVersion);\n\t\t\tthis.set('isMinor', isMinor);\n\t\t\tthis.set('isPatch', isPatch);\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefresh: function refresh() {\n\t\t\t\tthis.set('isNewVersion', false);\n\t\t\t\tthis.set('isMinor', false);\n\t\t\t\tthis.set('isPatch', false);\n\n\t\t\t\t// reset the black list with the new version info.\n\t\t\t\tthis.reset();\n\n\t\t\t\t// refresh the current page\n\t\t\t\twindow.location = window.location.pathname;\n\t\t\t},\n\t\t\tcancel: function cancel() {\n\t\t\t\tthis.set('isNewVersion', false);\n\t\t\t\tthis.set('isMinor', false);\n\t\t\t\tthis.set('isPatch', false);\n\n\t\t\t\t// add the version to the black list\n\t\t\t\tthis.addToBlackList(this.get('version'));\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/components/window-resize', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Component.extend({\n\t\ttagName: '',\n\n\t\teventEmitter: Ember.inject.service('event-emitter'),\n\n\t\tsetupResize: function setupResize() {\n\t\t\tEmber.get(this, 'eventEmitter').on('dom', 'resize', this.resizeHandler, this);\n\t\t},\n\t\tdestroyResize: function destroyResize() {\n\t\t\tEmber.get(this, 'eventEmitter').off('dom', 'resize', this.resizeHandler, this);\n\t\t},\n\t\tresizeHandler: function resizeHandler(event, width, height) {\n\t\t\tthis.sendAction('onChange', event, width, height);\n\t\t},\n\t\tdidInsertElement: function didInsertElement() {\n\t\t\tthis._super();\n\n\t\t\tthis.setupResize();\n\t\t},\n\t\tdidDestroyElement: function didDestroyElement() {\n\t\t\tthis._super();\n\n\t\t\tthis.destroyResize();\n\t\t}\n\t});\n});","define('busy-app/controllers/account-ready', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({});\n});","define('busy-app/controllers/account-settings', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    access: Ember.inject.service('access'),\n    auth: Ember.inject.service('auth'),\n    session: Ember.inject.service('session'),\n\n    member: Ember.computed.alias('auth.member'),\n    organization: Ember.computed.alias('auth.organization'),\n    authSession: Ember.computed.alias('session.session.authenticated'),\n\n    memberIsOwner: Ember.computed('member.id', function () {\n      return this.get('access').isOwner(this.get('member.id'));\n    }),\n\n    memberIsAdmin: Ember.computed('member.positionId', function () {\n      var adminPosition = this.get('auth.positions').filter(function (pos) {\n        if (pos.get('title').toLowerCase() === 'admin') {\n          return pos;\n        }\n      });\n      return this.get('member.positionId') === adminPosition[0].get('id');\n    }),\n\n    showEmailVerificationBanner: Ember.computed.and('member.pendingEmail'),\n\n    sendVerification: Ember.computed(function () {\n      return _utils.LocalStorage.getProperty('send-verification') ? true : false;\n    }),\n\n    notifName: Ember.computed('sendVerification', 'showEmailVerificationBanner', function () {\n      var name = '';\n      if (this.get('showEmailVerificationBanner')) {\n        if (!this.get('sendVerification')) {\n          name = 'send-verification';\n        } else {\n          name = 'resend-verification';\n        }\n      }\n      return name;\n    }),\n\n    notifText: Ember.computed('sendVerification', 'showEmailVerificationBanner', function () {\n      var text = '';\n      if (this.get('showEmailVerificationBanner')) {\n        if (!this.get('sendVerification')) {\n          text = (0, _utils.loc)(\"We noticed your email address hasn’t been verified.\");\n        } else {\n          text = (0, _utils.loc)(\"We’ve sent a verification email to %@. It may take a few minutes to arrive.\", [this.get('member.pendingEmail')]);\n        }\n      }\n      return text;\n    }),\n\n    notifClickText: Ember.computed('sendVerification', 'showEmailVerificationBanner', function () {\n      var text = '';\n      if (this.get('showEmailVerificationBanner')) {\n        if (!this.get('sendVerification')) {\n          text = (0, _utils.loc)(\"Verify your email here.\");\n        } else {\n          text = (0, _utils.loc)(\"Resend email.\");\n        }\n      }\n      return text;\n    }),\n\n    actions: {\n      sendVerificationEmail: function sendVerificationEmail() {\n        return this.get('store').rpcRequest('account', 'request-verification-email', { member_id: this.get('member.id') }).finally(function () {\n          _utils.LocalStorage.setProperty('send-verification', true);\n          window.location.reload();\n        });\n      }\n    }\n  });\n});","define(\"busy-app/controllers/application\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/settings\"], function (exports, _utils, _settings) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tsession: Ember.inject.service(\"session\"),\n\t\tfeatures: Ember.inject.service(\"features\"),\n\n\t\tisReady: false,\n\n\t\tinit: function init() {\n\t\t\tthis.set(\"isReady\", true);\n\n\t\t\tif (window.BusyApp._application !== undefined) {\n\t\t\t\twindow.BusyApp._application.set(\"controller\", this);\n\t\t\t}\n\n\t\t\tif (_settings.default.get(\"build\") !== \"production\") {\n\t\t\t\tvar build = _settings.default.get(\"build\") === \"betaio\" ? \"beta\" : _settings.default.get(\"build\");\n\t\t\t\tEmber.$(\"html > head > title\").html(\"busybusy (\" + build + \")\");\n\t\t\t}\n\n\t\t\tvar osType = _utils.Browser.osType();\n\t\t\tEmber.$(\"body\").addClass(Ember.String.dasherize(osType));\n\n\t\t\tvar browserType = _utils.Browser.type();\n\t\t\tEmber.$(\"body\").addClass(Ember.String.dasherize(browserType));\n\n\t\t\tthis.sessionInit();\n\n\t\t\tthis._super();\n\t\t},\n\n\n\t\tsessionInit: Ember.observer(\"session.isAuthenticated\", function () {\n\t\t\tif (this.get(\"session.isAuthenticated\")) {\n\t\t\t\tEmber.$(\"body\").removeClass(\"no-auth\");\n\t\t\t\tEmber.$(\"body\").removeClass(\"signup\");\n\t\t\t} else {\n\t\t\t\tEmber.$(\"body\").addClass(\"no-auth\");\n\t\t\t}\n\t\t}),\n\n\t\thomeUrl: Ember.computed(function () {\n\t\t\treturn _settings.default.get(\"home_url\");\n\t\t}),\n\n\t\tshowNavView: Ember.computed(\"session.isAuthenticated\", \"currentPath\", function () {\n\t\t\tvar hideNavPaths = [\"ticket\", \"account-ready\", \"not-found\"];\n\t\t\tif (this.get(\"session.isAuthenticated\") && hideNavPaths.indexOf(this.get(\"currentPath\")) === -1) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}),\n\n\t\tdoRender: Ember.computed(\"currentPath\", \"session.isAuthenticated\", \"features.onboardingInterop\", function () {\n\t\t\tvar allowedUnauthenticatedRoutes = [\"signup\", \"ticket\", \"not-found\"];\n\t\t\tvar currentPath = Ember.get(this, \"currentPath\");\n\t\t\tvar isPathWhiteListed = allowedUnauthenticatedRoutes.includes(currentPath);\n\n\t\t\tvar isInteropMode = Ember.get(this, \"features.onboardingInterop\");\n\t\t\tvar isLoggedIn = Ember.get(this, \"session.isAuthenticated\");\n\n\t\t\tvar doRender = isPathWhiteListed || !isInteropMode || isInteropMode && isLoggedIn;\n\n\t\t\treturn doRender;\n\t\t})\n\t});\n});","define(\"busy-app/controllers/company-settings/index\", [\"exports\", \"@busy-web/utils\"], function (exports, _utils) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tsubscription: Ember.inject.service(\"subscription\"),\n\t\tfeatures: Ember.inject.service(),\n\n\t\t// show the warning if the trial ended automatically\n\t\tshowFreeTrialExpirationWarning: Ember.computed(\"subscription.subscriptionStatus.{isTrialEnded,userCanceled}\", function () {\n\t\t\treturn this.get(\"subscription.subscriptionStatus.isTrialEnded\") && !this.get(\"subscription.subscriptionStatus.userCanceled\");\n\t\t}),\n\n\t\temberMainApp: Ember.computed(\"features.reactMainApp\", function () {\n\t\t\treturn !this.get(\"features.reactMainApp\");\n\t\t}),\n\n\t\tnotificationName: Ember.computed(\"showFreeTrialExpirationWarning\", \"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn \"past-due-account\";\n\t\t\t} else if (this.get(\"showFreeTrialExpirationWarning\")) {\n\t\t\t\treturn \"free-trial-expired\";\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}),\n\n\t\tnotificationText: Ember.computed(\"showFreeTrialExpirationWarning\", \"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn (0, _utils.loc)(\"Your account is past due. To avoid service interruption\");\n\t\t\t} else if (this.get(\"showFreeTrialExpirationWarning\")) {\n\t\t\t\treturn (0, _utils.loc)(\"Your free trial has expired.\");\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}),\n\n\t\tnotificationType: Ember.computed(\"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn \"error\";\n\t\t\t}\n\t\t\treturn \"warning\";\n\t\t}),\n\n\t\tclickText: Ember.computed(\"showFreeTrialExpirationWarning\", \"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn (0, _utils.loc)(\"please resolve this issue now.\");\n\t\t\t} else if (this.get(\"showFreeTrialExpirationWarning\")) {\n\t\t\t\treturn (0, _utils.loc)(\"If you enjoyed the service, upgrade to Pro.\");\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}),\n\n\t\tisDismissable: Ember.computed(\"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}),\n\n\t\tclickAction: Ember.computed(\"showFreeTrialExpirationWarning\", \"subscription.subscriptionStatus.isPastDue\", function () {\n\t\t\tif (this.get(\"subscription.subscriptionStatus.isPastDue\")) {\n\t\t\t\treturn \"openSubscription\";\n\t\t\t} else if (this.get(\"showFreeTrialExpirationWarning\")) {\n\t\t\t\treturn \"startUpgrade\";\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.set(\"qbpc1\", []);\n\t\t\tthis.set(\"qbpc2\", []);\n\t\t\tthis.set(\"qbpc3\", []);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tstartUpgrade: function startUpgrade() {\n\t\t\t\twindow.location = \"/company-settings#tab-subscription\";\n\t\t\t\tthis.set(\"showUpgradeDialog\", true);\n\t\t\t},\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\tthis.set(\"showUpgradeDialog\", false);\n\n\t\t\t\t// allowing the location change to happen inside this event triggers the `onClose` event in FS-Dialog to fire, causing an infininte loop\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\twindow.location = \"/company-settings#tab-subscription\";\n\t\t\t\t});\n\t\t\t},\n\t\t\topenSubscription: function openSubscription() {\n\t\t\t\twindow.location = \"/company-settings#tab-subscription\";\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/company-settings/intuit-quickbooks', ['exports', 'moment', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/settings', 'busy-app/utils/docs'], function (exports, _moment, _utils, _logger, _settings, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tquickbooksConnected: false,\n\t\thourlyItems: null,\n\t\tovertimeItems: null,\n\t\tdoubletimeItems: null,\n\t\tsalaryItems: null,\n\t\tpayrollItems: null,\n\t\tsaveItems: null,\n\t\tshowMapping: false,\n\t\tisLoading: true,\n\t\tsyncLog: null,\n\t\tcurrentLog: null,\n\t\tshowSyncOptionsDialog: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.set('hourlyItems', []);\n\t\t\tthis.set('overtimeItems', []);\n\t\t\tthis.set('doubletimeItems', []);\n\t\t\tthis.set('salaryItems', []);\n\t\t\tthis.set('payrollItems', []);\n\t\t\tthis.set('saveItems', []);\n\n\t\t\tthis.setQuickBooksStatus();\n\t\t},\n\t\tdownloadQwc: function downloadQwc() {\n\t\t\tvar orgId = this.get('auth.organization.id');\n\t\t\treturn this.store.rpcRequest('quick-books', 'createQWCFile', { organization_id: orgId }, _settings.default.get('qb_url')).then(function (result) {\n\t\t\t\tif (result.success) {\n\t\t\t\t\t_docs.default.download('busybusy.qwc', 'application/octet-stream', result.data);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tvar errStr = (0, _utils.loc)(\"Something went wrong, please try again later.\");\n\t\t\t\t\treturn Ember.RSVP.reject(errStr);\n\t\t\t\t}\n\t\t\t}).catch(function () /*res*/{\n\t\t\t\tvar errStr = (0, _utils.loc)(\"Something went wrong, please try again later.\");\n\t\t\t\treturn Ember.RSVP.reject(errStr);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * gets the member connector data for the payroll mapping\n   * dialog\n   *\n   * @public\n   * @method getMemberData\n   * @return {RSPV.Promise}\n   */\n\t\tgetMemberData: function getMemberData() {\n\t\t\tvar _this = this;\n\n\t\t\t// get the member connector data with the qb payroll data\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\twageItems: this.store.findAll('quickbooks-payroll-item-wage', { organization_id: this.get('auth.organization.id') }),\n\t\t\t\tmemberConnectors: this.store.findAll('member-connector', { organization_id: this.get('auth.organization.id'), archived_on: '_-NULL-_' })\n\t\t\t}).then(function (mainData) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\tvar memberConnectorIds = [];\n\t\t\t\tmainData.memberConnectors.forEach(function (connector) {\n\t\t\t\t\tmemberIds.push(connector.get('memberId'));\n\t\t\t\t\tmemberConnectorIds.push(connector.get('id'));\n\t\t\t\t});\n\n\t\t\t\t// get the members and the employee payroll connector data\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.findByIds('member', memberIds),\n\t\t\t\t\tpayrollConnectors: _this.store.findWhereIn('employee-payroll-item-connector', 'member_connector_id', memberConnectorIds, { deleted_on: '_-NULL-_' })\n\t\t\t\t}).then(function (subData) {\n\t\t\t\t\tvar connectorIds = [];\n\t\t\t\t\tsubData.payrollConnectors.forEach(function (connector) {\n\t\t\t\t\t\tconnectorIds.push(connector.id);\n\t\t\t\t\t});\n\n\t\t\t\t\t// get the employee wage types and return the reset of the data\n\t\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\t\twageItems: mainData.wageItems,\n\t\t\t\t\t\tmemberConnectors: mainData.memberConnectors,\n\t\t\t\t\t\tmembers: subData.members,\n\t\t\t\t\t\tpayrollConnectors: subData.payrollConnectors,\n\t\t\t\t\t\twageTypes: _this.store.findWhereIn('employee-wage-type', 'employee_payroll_item_connector_id', connectorIds, { deleted_on: '_-NULL-_' })\n\t\t\t\t\t}).then(function (allData) {\n\t\t\t\t\t\t// put the data together for rendering\n\t\t\t\t\t\treturn _this.buildWageTypeObjects(allData);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * builds an array of member connectors with the data needed to\n   * list and show the current wage types\n   *\n   * @public\n   * @method buildWageTypeObjects\n   * @param data {object}\n   * @return {array}\n   */\n\t\tbuildWageTypeObjects: function buildWageTypeObjects(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar removeItems = [];\n\n\t\t\t// loop through the memberConnectors first because all the data\n\t\t\t// will be stored on the member connector models\n\t\t\tdata.memberConnectors.forEach(function (memberConnector) {\n\t\t\t\t// get the member model\n\t\t\t\tvar member = data.members.findBy('id', memberConnector.get('memberId'));\n\t\t\t\tmemberConnector.set('member', member);\n\n\t\t\t\tif (!Ember.isNone(member.get('archivedOn'))) {\n\t\t\t\t\tremoveItems.pushObject(memberConnector);\n\t\t\t\t}\n\n\t\t\t\t// get the payroll connectors\n\t\t\t\tvar connectors = data.payrollConnectors.filterBy('memberConnectorId', memberConnector.get('id'));\n\t\t\t\tmemberConnector.set('employeePayrollItemConnectors', connectors);\n\n\t\t\t\t// create the select menus\n\t\t\t\tvar headerTypes = [];\n\t\t\t\tvar regularList = [];\n\t\t\t\tvar overtimeList = [];\n\t\t\t\tvar doubletimeList = [];\n\n\t\t\t\t// loop the connector data and get wage types and add qb payroll types\n\t\t\t\tconnectors.forEach(function (payrollConnector) {\n\t\t\t\t\tvar qbpayrollItem = data.wageItems.findBy('id', payrollConnector.get('payrollItemWageId'));\n\t\t\t\t\tpayrollConnector.set('quickbooksPayrollItemWage', qbpayrollItem);\n\n\t\t\t\t\tvar wageTypeKey = _this2.wageTypeKey(qbpayrollItem.get('wageType'));\n\t\t\t\t\tif (headerTypes.indexOf(qbpayrollItem.get('wageType')) === -1) {\n\t\t\t\t\t\t// add a list item for each type regular, overtime, doubletime, and salary\n\t\t\t\t\t\tregularList.pushObject(Ember.Object.create({ wageName: qbpayrollItem.get('wageTypeFormatted'), _unselectable: true, sortKey: wageTypeKey }));\n\n\t\t\t\t\t\tif (wageTypeKey !== 40) {\n\t\t\t\t\t\t\tovertimeList.pushObject(Ember.Object.create({ wageName: qbpayrollItem.get('wageTypeFormatted'), _unselectable: true, sortKey: wageTypeKey }));\n\t\t\t\t\t\t\tdoubletimeList.pushObject(Ember.Object.create({ wageName: qbpayrollItem.get('wageTypeFormatted'), _unselectable: true, sortKey: wageTypeKey }));\n\t\t\t\t\t\t}\n\t\t\t\t\t\theaderTypes.push(qbpayrollItem.get('wageType'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// add a list item for each type regular, overtime, doubletime, and salary\n\t\t\t\t\tregularList.pushObject(Ember.Object.create({\n\t\t\t\t\t\tid: payrollConnector.get('id'),\n\t\t\t\t\t\twageName: payrollConnector.get('wageName'),\n\t\t\t\t\t\tsortKey: wageTypeKey + 1,\n\t\t\t\t\t\twageType: wageTypeKey,\n\t\t\t\t\t\tmemberId: member.get('id')\n\t\t\t\t\t}));\n\n\t\t\t\t\tif (wageTypeKey !== 40) {\n\t\t\t\t\t\tovertimeList.pushObject(Ember.Object.create({\n\t\t\t\t\t\t\tid: payrollConnector.get('id'),\n\t\t\t\t\t\t\twageName: payrollConnector.get('wageName'),\n\t\t\t\t\t\t\tsortKey: wageTypeKey + 1,\n\t\t\t\t\t\t\twageType: wageTypeKey,\n\t\t\t\t\t\t\tmemberId: member.get('id')\n\t\t\t\t\t\t}));\n\n\t\t\t\t\t\tdoubletimeList.pushObject(Ember.Object.create({\n\t\t\t\t\t\t\tid: payrollConnector.get('id'),\n\t\t\t\t\t\t\twageName: payrollConnector.get('wageName'),\n\t\t\t\t\t\t\tsortKey: wageTypeKey + 1,\n\t\t\t\t\t\t\twageType: wageTypeKey,\n\t\t\t\t\t\t\tmemberId: member.get('id')\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\n\t\t\t\t\t// get the wage types and add selected to the lists for any type found in the wage types\n\t\t\t\t\tvar wageTypes = data.wageTypes.filterBy('employeePayrollItemConnectorId', payrollConnector.get('id'));\n\t\t\t\t\twageTypes.forEach(function (wageType) {\n\t\t\t\t\t\tif (wageType.get('payrollType') === 10 || wageType.get('payrollType') === 40) {\n\t\t\t\t\t\t\tregularList[regularList.length - 1].set('_selected', true);\n\t\t\t\t\t\t\tregularList[regularList.length - 1].set('currentWageType', true);\n\t\t\t\t\t\t} else if (wageType.get('payrollType') === 20) {\n\t\t\t\t\t\t\tovertimeList[overtimeList.length - 1].set('_selected', true);\n\t\t\t\t\t\t\tovertimeList[overtimeList.length - 1].set('currentWageType', true);\n\t\t\t\t\t\t} else if (wageType.get('payrollType') === 30) {\n\t\t\t\t\t\t\tdoubletimeList[doubletimeList.length - 1].set('_selected', true);\n\t\t\t\t\t\t\tdoubletimeList[doubletimeList.length - 1].set('currentWageType', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tpayrollConnector.set('employeeWageTypes', wageTypes);\n\t\t\t\t});\n\n\t\t\t\t// add the lists to the memberconnector\n\t\t\t\tmemberConnector.set('regularList', regularList.sortBy('sortKey', 'employeePayrollItemConnectors.wageName'));\n\t\t\t\tmemberConnector.set('overtimeList', overtimeList.sortBy('sortKey', 'employeePayrollItemConnectors.wageName'));\n\t\t\t\tmemberConnector.set('doubletimeList', doubletimeList.sortBy('sortKey', 'employeePayrollItemConnectors.wageName'));\n\t\t\t});\n\n\t\t\t// remove archived members from list.\n\t\t\tdata.memberConnectors.removeObjects(removeItems);\n\n\t\t\treturn data.memberConnectors.sortBy('member.firstName', 'member.lastName');\n\t\t},\n\t\twageTypeKey: function wageTypeKey(wageType) {\n\t\t\tif (wageType === 'HourlyRegular') {\n\t\t\t\treturn 10;\n\t\t\t} else if (wageType === 'HourlyOvertime') {\n\t\t\t\treturn 20;\n\t\t\t} else if (wageType === 'HourlyDoubletime') {\n\t\t\t\treturn 30;\n\t\t\t} else if (wageType === 'SalaryRegular') {\n\t\t\t\treturn 40;\n\t\t\t} else {\n\t\t\t\treturn 90;\n\t\t\t}\n\t\t},\n\t\tsetQuickBooksStatus: function setQuickBooksStatus() {\n\t\t\tvar _this3 = this;\n\n\t\t\tif (this.get('features.quickbooks')) {\n\t\t\t\tvar orgId = this.get('auth.organization.id');\n\t\t\t\tthis.store.rpcRequest('quick-books', 'getStatus', { organization_id: orgId }, _settings.default.get('qb_url')).then(function (result) {\n\t\t\t\t\t_this3.set('quickbooksStatus', result.data);\n\t\t\t\t\tif (result.data === 'connected' || result.data === 'pending') {\n\t\t\t\t\t\t_this3.set('quickbooksConnected', true);\n\t\t\t\t\t}\n\t\t\t\t}).catch(function (reason) {\n\t\t\t\t\t_logger.default.error('IntuitQuickbooks', 'setQuickBooksStatus', { reason: reason });\n\t\t\t\t\tthrow reason;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.set('quickbooksStatus', 'Subscription Required');\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * gets the changed items for saving the payroll mapping\n   *\n   * @public\n   * @method getSaveItems\n   * @return {array}\n   */\n\t\tgetSaveItems: function getSaveItems() {\n\t\t\tvar items = [];\n\t\t\tvar memberConnectors = this.get('memberConnectors');\n\t\t\tmemberConnectors.forEach(function (connector) {\n\t\t\t\tvar isNewConnector = connector.get('syncTimeEntries') === false && connector.get('mappingConfirmation') === false;\n\n\t\t\t\t// Any selected items will be set before the view renders or when a user\n\t\t\t\t// selects an item from the drop down.\n\t\t\t\tvar regularSelected = connector.get('regularList').findBy('_selected', true);\n\t\t\t\tvar overtimeSelected = connector.get('overtimeList').findBy('_selected', true);\n\t\t\t\tvar doubletimeSelected = connector.get('doubletimeList').findBy('_selected', true);\n\n\t\t\t\t// Any current wage types will be set before rendering the view\n\t\t\t\tvar regularOrig = connector.get('regularList').findBy('currentWageType', true);\n\t\t\t\tvar overtimeOrig = connector.get('overtimeList').findBy('currentWageType', true);\n\t\t\t\tvar doubletimeOrig = connector.get('doubletimeList').findBy('currentWageType', true);\n\n\t\t\t\tvar hasRegular = !Ember.isNone(regularSelected) && regularSelected.get('wageType') !== 40;\n\t\t\t\tvar hasOvertime = !Ember.isNone(overtimeSelected);\n\t\t\t\tvar hasDoubletime = !Ember.isNone(doubletimeSelected);\n\t\t\t\tvar hasSalary = !Ember.isNone(regularSelected) && regularSelected.get('wageType') === 40;\n\n\t\t\t\t// if a selected item exists and it does not match a currentWageType item then it is considered changed\n\t\t\t\tvar regularChanged = hasRegular && (Ember.isNone(regularOrig) || regularSelected.get('id') !== regularOrig.get('id') || isNewConnector);\n\t\t\t\tvar overtimeChanged = hasOvertime && (Ember.isNone(overtimeOrig) || overtimeSelected.get('id') !== overtimeOrig.get('id') || isNewConnector);\n\t\t\t\tvar doubletimeChanged = hasDoubletime && (Ember.isNone(doubletimeOrig) || doubletimeSelected.get('id') !== doubletimeOrig.get('id') || isNewConnector);\n\t\t\t\tvar salaryChanged = hasSalary && (Ember.isNone(regularOrig) || regularSelected.get('id') !== regularOrig.get('id') || isNewConnector);\n\n\t\t\t\t// if one item changes then submit all items for that member again if they exist.\n\t\t\t\tif (!salaryChanged && (regularChanged || overtimeChanged || doubletimeChanged)) {\n\t\t\t\t\tif (hasRegular) {\n\t\t\t\t\t\titems.push({ epic_id: regularSelected.get('id'), type: 10 });\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasOvertime) {\n\t\t\t\t\t\titems.push({ epic_id: overtimeSelected.get('id'), type: 20 });\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasDoubletime) {\n\t\t\t\t\t\titems.push({ epic_id: doubletimeSelected.get('id'), type: 30 });\n\t\t\t\t\t}\n\t\t\t\t} else if (salaryChanged) {\n\t\t\t\t\tif (hasSalary) {\n\t\t\t\t\t\titems.push({ epic_id: regularSelected.get('id'), type: 40 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// return the save list\n\t\t\treturn items;\n\t\t},\n\t\tgetSyncLogData: function getSyncLogData() {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar orgId = this.get('auth.organization.id');\n\t\t\tthis.set('syncLog', []);\n\t\t\tthis.store.findAll('sync-log', { organization_id: orgId }).then(function (result) {\n\t\t\t\tresult = result.sortBy('createdOn').reverse();\n\t\t\t\tresult.forEach(function (data) {\n\t\t\t\t\tvar employeeData = JSON.parse(data.get('employeeData'));\n\t\t\t\t\tvar projectData = JSON.parse(data.get('projectData'));\n\t\t\t\t\tvar costCodeData = JSON.parse(data.get('costCodeData'));\n\t\t\t\t\tvar payrollItemData = JSON.parse(data.get('payrollItemData'));\n\t\t\t\t\tvar createdOn = data.get('createdOn');\n\t\t\t\t\tvar newDataObject = Ember.Object.create({\n\t\t\t\t\t\temployeeData: employeeData,\n\t\t\t\t\t\tprojectData: projectData,\n\t\t\t\t\t\tcostCodeData: costCodeData,\n\t\t\t\t\t\tpayrollItemData: payrollItemData,\n\t\t\t\t\t\tcreatedOn: createdOn,\n\t\t\t\t\t\tdisplayDate: (0, _moment.default)(createdOn * 1000).format('MMM DD, YYYY h:mm A'),\n\t\t\t\t\t\t_isSelected: false\n\t\t\t\t\t});\n\n\t\t\t\t\t_this4.get('syncLog').pushObject(newDataObject);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\tsliceSyncLog: Ember.observer('syncLog.[]', function () {\n\t\t\tthis.get('syncLog').slice(0, 10);\n\t\t}),\n\n\t\tsetTransition: function setTransition(item, forceState) {\n\t\t\tvar toggle = item.get('showMapping');\n\t\t\tvar transitionState = item.get('doneTransition');\n\t\t\tif (toggle === transitionState) {\n\t\t\t\tif (!toggle && forceState === undefined || forceState === true) {\n\t\t\t\t\titem.set('showMapping', true);\n\t\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t\titem.set('doneTransition', true);\n\t\t\t\t\t}, 300);\n\t\t\t\t} else if (toggle && forceState === undefined || forceState === false) {\n\t\t\t\t\titem.set('showMapping', false);\n\t\t\t\t\titem.set('doneTransition', false);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\tisMappingOpen: Ember.computed('memberConnectors.@each.showMapping', function () {\n\t\t\tvar connectors = this.get('memberConnectors').filterBy('hasPayrollItems', true);\n\t\t\tvar totalConnectors = connectors.get('length');\n\t\t\tvar openConnectors = connectors.filterBy('showMapping', true).get('length');\n\t\t\tvar currentState = this.get('showMapping');\n\n\t\t\tif (currentState === true && openConnectors > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (currentState === false && totalConnectors === openConnectors) {\n\t\t\t\tthis.set('showMapping', true);\n\t\t\t\treturn true;\n\t\t\t} else if (currentState === true && openConnectors === 0) {\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tactions: {\n\t\t\tregularSelected: function regularSelected(item) {\n\t\t\t\tif (item.get('wageType') === 40) {\n\t\t\t\t\tvar connector = this.get('memberConnectors').findBy('memberId', item.get('memberId'));\n\t\t\t\t\tconnector.set('hasHourlyItems', false);\n\t\t\t\t\tconnector.set('hasSalaryItems', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsalarySelected: function salarySelected(item) {\n\t\t\t\tif (item.get('wageType') !== 40) {\n\t\t\t\t\tvar connector = this.get('memberConnectors').findBy('memberId', item.get('memberId'));\n\t\t\t\t\tconnector.set('hasHourlyItems', true);\n\t\t\t\t\tconnector.set('hasSalaryItems', false);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenConnector: function openConnector() {\n\t\t\t\tif (this.get('quickbooksConnected')) {\n\t\t\t\t\tthis.set('showQuickBooksDialog', true);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('showConnectorDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenMappingDialog: function openMappingDialog() {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tif (this.get('quickbooksConnected')) {\n\t\t\t\t\tthis.set('showQuickBooksDialog', false);\n\t\t\t\t\tthis.set('showMappingDialog', true);\n\t\t\t\t\tthis.set('isLoading', true);\n\n\t\t\t\t\tthis.getMemberData().then(function (data) {\n\t\t\t\t\t\t_this5.set('memberConnectors', data);\n\t\t\t\t\t\t_this5.set('isLoading', false);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\topenDisconnectDialog: function openDisconnectDialog() {\n\t\t\t\tthis.set('showDisconnectDialog', true);\n\t\t\t},\n\t\t\tcloseDisconnectDialog: function closeDisconnectDialog() {\n\t\t\t\tthis.set('showDisconnectDialog', false);\n\t\t\t},\n\t\t\tdisconnectQuickBooks: function disconnectQuickBooks() {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tvar orgId = this.get('auth.organization.id');\n\t\t\t\tthis.store.rpcRequest('quick-books', 'disconnect', { organization_id: orgId }, _settings.default.get('qb_url')).then(function (result) {\n\t\t\t\t\t// TODO:\n\t\t\t\t\t// show a success box that tells the user quickbooks was disconnected.\n\t\t\t\t\t_this6.set('showDisconnectDialog', false);\n\t\t\t\t\t_logger.default.info(result);\n\t\t\t\t});\n\t\t\t},\n\t\t\topenSyncLogDialog: function openSyncLogDialog() {\n\t\t\t\tif (this.get('quickbooksConnected')) {\n\t\t\t\t\tthis.set('showSyncLogDialog', true);\n\t\t\t\t\tthis.getSyncLogData();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseSyncLogDialog: function closeSyncLogDialog() {\n\t\t\t\tthis.set('currentLog', null);\n\t\t\t\tthis.set('showSyncLogDialog', false);\n\t\t\t},\n\t\t\tcloseQuickBooksDialog: function closeQuickBooksDialog() {\n\t\t\t\tthis.set('showQuickBooksDialog', false);\n\t\t\t\tthis.set('showConnectorDialog', false);\n\t\t\t\tthis.set('showMappingDialog', false);\n\t\t\t\tthis.set('showStepThreeDialog', false);\n\t\t\t\tthis.set('isLoading', true);\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t},\n\t\t\tdownloadQwcFile: function downloadQwcFile() {\n\t\t\t\treturn this.downloadQwc();\n\t\t\t},\n\t\t\tsaveQuickBooks: function saveQuickBooks(dialog) {\n\t\t\t\tdialog.showSavingMessage();\n\t\t\t\tvar epicIdArray = this.getSaveItems();\n\t\t\t\tif (epicIdArray.length > 0) {\n\t\t\t\t\tthis.store.rpcRequest('quick-books', 'confirmMemberMapping', { member_mapping: epicIdArray }, _settings.default.get('qb_url')).then(function () {\n\t\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdialog.showErrorMessage((0, _utils.loc)('No payroll items set or changed!'));\n\t\t\t\t}\n\t\t\t},\n\t\t\ttoggleMapping: function toggleMapping(item) {\n\t\t\t\tthis.setTransition(item);\n\t\t\t},\n\t\t\texpandAll: function expandAll() {\n\t\t\t\tvar _this7 = this;\n\n\t\t\t\tvar mappingMembers = this.get('memberConnectors');\n\t\t\t\tthis.set('showMapping', true);\n\t\t\t\tmappingMembers.forEach(function (member) {\n\t\t\t\t\t_this7.setTransition(member, true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tcollapseAll: function collapseAll() {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\tvar mappingMembers = this.get('memberConnectors');\n\t\t\t\tthis.set('showMapping', false);\n\t\t\t\tmappingMembers.forEach(function (member) {\n\t\t\t\t\t_this8.setTransition(member, false);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetCurrentLog: function setCurrentLog(item) {\n\t\t\t\tthis.set('currentLog', item);\n\t\t\t},\n\t\t\topenSyncOptionsDialog: function openSyncOptionsDialog() {\n\t\t\t\tif (this.get('quickbooksConnected')) {\n\t\t\t\t\tthis.set('showSyncOptionsDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseSyncOptionsDialog: function closeSyncOptionsDialog() {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tthis.set('showSyncOptionsDialog', false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/company-settings/procore/callback', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['code'],\n\t\tcode: null\n\t});\n});","define('busy-app/controllers/company-settings/procore/index', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({});\n});","define('busy-app/controllers/cost-code/index', ['exports', '@busy-web/utils', 'busy-app/mixins/controller-filter', 'busy-app/utils/debug', 'busy-app/utils/logger'], function (exports, _utils, _controllerFilter, _debug, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend(_controllerFilter.default, {\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tqueryParams: ['group', 'search', 'page_size', 'page', 'filter'],\n\n\t\tgroup: null,\n\t\tsearch: '',\n\t\tpage_size: 30,\n\t\tpage: 1,\n\t\tfilter: false,\n\n\t\tisLoading: false,\n\n\t\tedit: false,\n\n\t\tinsuranceClassMenu: null,\n\n\t\tclassTitle: '',\n\t\tinsuranceClassType: null,\n\t\tinsuranceClassItem: null,\n\t\tworkersComp: null,\n\t\tgeneralLiability: null,\n\n\t\tcostCode: null,\n\t\tnewCostCode: null,\n\t\tgroups: null,\n\n\t\tnewGroupName: '',\n\n\t\tselectedGroup: null,\n\t\tgroupItems: null,\n\n\t\tnameMenu: null,\n\t\tdescriptionMenu: null,\n\t\twcMenu: null,\n\t\tglMenu: null,\n\t\tunitMenu: null,\n\t\tcatMenu: null,\n\n\t\tcurrentCostCode: null,\n\n\t\tshouldAddGroup: false,\n\n\t\tshowMoveGroupDialog: false,\n\t\tshowNewDialog: false,\n\t\tshowEditDialog: false,\n\t\tshowAddInsuranceClassDialog: false,\n\t\tshowInsuranceClassDialog: false,\n\t\tdeleteCostCodeDialog: false,\n\t\thideRowActions: false,\n\n\t\tcurrentType: null,\n\t\tupdatedClassType: null,\n\n\t\tisProcoreIntegrationEnabled: false,\n\t\tprocoreCostCodesWarningText: (0, _utils.loc)('Due to a limitation in Procore, busybusy cannot alter Procore cost codes. When updating cost codes, please perform the edits on Procore and the changes will sync to busybusy.'),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'insuranceClassMenu', [Ember.Object.create({ key: 'workers-comp', value: (0, _utils.loc)(\"Workers' Compensation\") }), Ember.Object.create({ key: 'general-liability', value: (0, _utils.loc)('General Liability') })]);\n\n\t\t\t// loads the organization\n\t\t\tEmber.get(this, 'auth.organization');\n\t\t\tthis.isEditMode();\n\t\t},\n\n\n\t\tisEditMode: Ember.observer('filter', function () {\n\t\t\tif (Ember.get(this, 'filter')) {\n\t\t\t\tEmber.set(this, 'edit', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'edit', false);\n\t\t\t}\n\t\t}),\n\n\t\tcanManageCostCodeGroups: Ember.computed('auth.authMemberPosition.manageCostCodes', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageCostCodes');\n\t\t}),\n\n\t\tcanManageCostCodes: Ember.computed('auth.authMemberPosition.manageCostCodes', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageCostCodes');\n\t\t}),\n\n\t\tcanAddCostCodes: Ember.computed('canManageCostCodes', 'group', function () {\n\t\t\treturn Ember.get(this, 'canManageCostCodes') && Ember.get(this, 'group') !== 'archived';\n\t\t}),\n\n\t\tcanViewManagementTools: Ember.computed.and('canManageCostCodes', 'features.managementListsCostCodes'),\n\n\t\thasRowActions: Ember.computed('canManageCostCodes', 'hideRowActions', function () {\n\t\t\treturn Ember.get(this, 'canManageCostCodes') && !Ember.get(this, 'hideRowActions');\n\t\t}),\n\n\t\ttotalRows: Ember.computed('model.@each.id', function () {\n\t\t\tvar rows = 0;\n\t\t\tvar meta = Ember.get(this, 'model.meta');\n\t\t\tif (!Ember.isNone(meta)) {\n\t\t\t\trows = meta.totalRows;\n\t\t\t}\n\t\t\treturn rows;\n\t\t}),\n\n\t\tmergedClassList: Ember.computed('workersComp', 'generalLiability', function () {\n\t\t\tvar workers = Ember.get(this, 'workersComp').sortBy('title');\n\t\t\tvar general = Ember.get(this, 'generalLiability').sortBy('title');\n\t\t\tvar combined = [].concat(workers, general);\n\t\t\tcombined = combined.filter(function (item) {\n\t\t\t\treturn Ember.get(item, 'title') !== 'No Insurance';\n\t\t\t});\n\t\t\treturn combined.sortBy('title');\n\t\t}),\n\n\t\tworkersCompList: Ember.computed('workersComp', 'costCode.workersComp', function () {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'workersComp'))) {\n\t\t\t\tvar selected = Ember.get(this, 'costCode.workersComp');\n\t\t\t\tvar models = Ember.get(this, 'workersComp').toArray();\n\t\t\t\tmodels.forEach(function (item) {\n\t\t\t\t\tEmber.set(item, '_selected', !Ember.isNone(selected) && Ember.get(item, 'title') === Ember.get(selected, 'title') ? true : false);\n\t\t\t\t\tEmber.set(item, 'sortWeight', Ember.get(item, 'title') === 'No Insurance' ? 1 : 2);\n\t\t\t\t});\n\t\t\t\treturn models.sortBy('sortWeight', 'title');\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\tgeneralLiabilityList: Ember.computed('generalLiability', 'costCode.generalLiability', function () {\n\t\t\tif (!Ember.isNone(Ember.get(this, 'generalLiability'))) {\n\t\t\t\tvar selected = Ember.get(this, 'costCode.generalLiability');\n\t\t\t\tvar models = Ember.get(this, 'generalLiability').toArray();\n\t\t\t\tmodels.forEach(function (item) {\n\t\t\t\t\tEmber.set(item, '_selected', !Ember.isNone(selected) && Ember.get(item, 'title') === Ember.get(selected, 'title') ? true : false);\n\t\t\t\t\tEmber.set(item, 'sortWeight', Ember.get(item, 'title') === 'No Insurance' ? 1 : 2);\n\t\t\t\t});\n\t\t\t\treturn models.sortBy('sortWeight', 'title');\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\tresetInsuranceClassMenu: function resetInsuranceClassMenu() {\n\t\t\tEmber.set(this, 'insuranceClassMenu', [Ember.Object.create({ key: 'workers-comp', value: (0, _utils.loc)(\"Workers' Compensation\") }), Ember.Object.create({ key: 'general-liability', value: (0, _utils.loc)('General Liability') })]);\n\t\t},\n\n\n\t\tselectMenu: Ember.computed('group', function () {\n\t\t\tif (Ember.get(this, 'group') === 'archived') {\n\t\t\t\treturn [Ember.Object.create({ key: 'unarchive', value: (0, _utils.loc)('Unarchive') })];\n\t\t\t} else {\n\t\t\t\treturn [Ember.Object.create({ key: 'move-to-group', value: (0, _utils.loc)('Move to Group') }), Ember.Object.create({ key: 'archive', value: (0, _utils.loc)('Archive') })];\n\t\t\t}\n\t\t}),\n\n\t\tgetGroups: function getGroups() {\n\t\t\tvar _this = this;\n\n\t\t\treturn (0, _debug.component_safe_api)(function () {\n\t\t\t\treturn _this.store.query('cost-code-group', { _asc: ['group_name'], page_size: 10000 }).then(function (models) {\n\t\t\t\t\treturn Ember.set(_this, 'groups', models);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetInsuranceClasses: function getInsuranceClasses() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tworkersComp: this.store.findAll('workers-comp', { deleted_on: '_-NULL-_' }).then(function (workersComp) {\n\t\t\t\t\treturn Ember.set(_this2, 'workersComp', workersComp);\n\t\t\t\t}),\n\t\t\t\tgeneralLiability: this.store.findAll('general-liability', { deleted_on: '_-NULL-_' }).then(function (generalLiability) {\n\t\t\t\t\treturn Ember.set(_this2, 'generalLiability', generalLiability);\n\t\t\t\t})\n\t\t\t});\n\t\t},\n\n\n\t\teditAction: null,\n\t\teditItems: null,\n\n\t\tvalidateFilters: function validateFilters(options) {\n\t\t\tif (options.filter) {\n\t\t\t\tif ((!Ember.isEmpty(options.search) || !Ember.isNone(options.group) && options.group !== 'ungrouped' && options.group !== 'archived') && !options.page) {\n\t\t\t\t\toptions.page = 1;\n\t\t\t\t\toptions.page_size = 1000;\n\t\t\t\t} else if ((options.group === 'ungrouped' || options.group === 'archived') && !options.page) {\n\t\t\t\t\toptions.page = 1;\n\t\t\t\t\toptions.page_size = Ember.get(this, 'page_size');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toptions.filter = options.filter === true ? true : false;\n\t\t\toptions.group = Ember.isNone(options.group) ? null : options.group;\n\t\t\toptions.search = Ember.isEmpty(options.search) ? '' : options.search;\n\t\t\treturn true;\n\t\t},\n\n\n\t\t/**\n   * Clears the edit action\n   *\n   * @public\n   * @method clearEdit\n   */\n\t\tclearEdit: function clearEdit() {\n\t\t\t// bc-list sets isSelected on the model\n\t\t\t// so loop through the models and set isSelected\n\t\t\t// to false to uncheck the checkboxes\n\t\t\tEmber.get(this, 'editItems').forEach(function (item) {\n\t\t\t\treturn Ember.set(item, 'isSelected', false);\n\t\t\t});\n\n\t\t\t// set local vars back to defaults\n\t\t\tEmber.set(this, 'editAction', null);\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'edit', false);\n\t\t\tEmber.set(this, 'hideRowActions', false);\n\n\t\t\tthis.sendFilter({\n\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t});\n\t\t},\n\t\topenArchiveDialog: function openArchiveDialog(items) {\n\t\t\tif (items.length < 2) {\n\t\t\t\tEmber.set(this, 'currentCostCode', items.objectAt(0));\n\t\t\t}\n\t\t\tEmber.set(this, 'archiveItems', items);\n\n\t\t\tEmber.set(this, 'showArchiveDialog', true);\n\t\t},\n\t\tarchive: function archive() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar items = Ember.get(this, 'archiveItems');\n\t\t\treturn Ember.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', _utils.Time.timestamp());\n\t\t\t\titem.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this3.clearEdit();\n\t\t\t\tEmber.set(_this3, 'archiveItems', null);\n\t\t\t\tEmber.set(_this3, 'showArchiveDialog', false);\n\t\t\t\t_this3.refreshRoute();\n\t\t\t});\n\t\t},\n\t\tunarchive: function unarchive(items, callback) {\n\t\t\tvar _this4 = this;\n\n\t\t\tcallback = callback !== undefined ? callback : function () {};\n\t\t\treturn Ember.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', '_-NULL-_');\n\t\t\t\titem.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this4.refreshRoute();\n\t\t\t\tEmber.run.next(function () {\n\t\t\t\t\treturn callback();\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tmoveToGroup: function moveToGroup(items) {\n\t\t\tif (!Ember.isNone(items) && Ember.get(items, 'length') > 0) {\n\t\t\t\tEmber.set(this, 'groupItems', items);\n\t\t\t\tEmber.set(this, 'showMoveGroupDialog', true);\n\t\t\t}\n\t\t},\n\t\tsaveCostCode: function saveCostCode(costCode) {\n\t\t\tEmber.set(costCode, 'costCode', (Ember.get(costCode, 'costCode') || '').trim());\n\t\t\tEmber.set(costCode, 'title', (Ember.get(costCode, 'title') || '').trim());\n\t\t\tEmber.set(costCode, 'unitTitle', (Ember.get(costCode, 'unitTitle') || '').trim());\n\n\t\t\tif (!Ember.isEmpty(Ember.get(costCode, 'costCode'))) {\n\t\t\t\treturn costCode.save().then(function (model) {\n\t\t\t\t\tmodel.getChildren();\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must fill in the required fields'));\n\t\t},\n\t\taddCostCodeToGroup: function addCostCodeToGroup(group) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar groupId = '_-NULL-_';\n\t\t\tif (!Ember.isNone(group)) {\n\t\t\t\tgroupId = Ember.get(group, 'id');\n\t\t\t}\n\n\t\t\tvar groupItems = Ember.get(this, 'groupItems');\n\t\t\treturn Ember.RSVP.all(groupItems.map(function (item) {\n\t\t\t\tEmber.set(item, 'costCodeGroupId', groupId);\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\tif (!Ember.isNone(Ember.get(_this5, 'group')) && groupId !== Ember.get(_this5, 'group') || Ember.get(_this5, 'group') !== 'ungrouped') {\n\t\t\t\t\tEmber.get(_this5, 'model').removeObjects(groupItems);\n\t\t\t\t}\n\n\t\t\t\tEmber.set(_this5, 'groupItems', []);\n\t\t\t\tEmber.set(_this5, 'selectedGroup', null);\n\t\t\t\tEmber.set(_this5, 'showMoveGroupDialog', false);\n\n\t\t\t\treturn _this5.refreshRoute();\n\t\t\t});\n\t\t},\n\t\t_createGroup: function _createGroup(groupName) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar organizationId = Ember.get(this, 'auth.organization.id');\n\t\t\treturn this.store.createRecord('cost-code-group', { groupName: groupName, organizationId: organizationId }).save().finally(function () {\n\t\t\t\treturn _this6.getGroups();\n\t\t\t});\n\t\t},\n\t\trefreshRoute: function refreshRoute() {\n\t\t\treturn location.reload();\n\t\t},\n\n\n\t\tarchiveDialogMessage: Ember.computed('currentCostCode', function () {\n\t\t\tvar costCodeText = (0, _utils.loc)(\"these cost codes\");\n\t\t\tif (!Ember.isNone(Ember.get(this, 'currentCostCode.title'))) {\n\t\t\t\tcostCodeText = Ember.get(this, 'currentCostCode.title');\n\t\t\t}\n\t\t\treturn (0, _utils.loc)(\"Are you sure you want to archive %@ ?\", [costCodeText]);\n\t\t}),\n\n\t\t// when a group is deleted, ungroup all the cost-code's which were assigned to it\n\t\tungroupOrphans: function ungroupOrphans(group) {\n\t\t\tvar _this7 = this;\n\n\t\t\t_logger.default.info(this, 'ungroupOrphans', group, Ember.get(group, 'id'));\n\n\t\t\tif (Ember.isNone(group)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tvar cost_code_group_id = Ember.get(group, 'id');\n\t\t\tvar params = {\n\t\t\t\tcost_code_group_id: cost_code_group_id,\n\t\t\t\tpage_size: 1000\n\t\t\t};\n\n\t\t\tEmber.set(this, 'isLoading', true);\n\t\t\treturn Ember.get(this, 'store').findAll('cost-code', params).then(function (costCodes) {\n\t\t\t\tcostCodes.setEach('costCodeGroupId', null);\n\n\t\t\t\treturn Ember.RSVP.all(costCodes.invoke('save'));\n\t\t\t}).then(function () {\n\t\t\t\treturn _this7.refreshRoute();\n\t\t\t}).finally(function () {\n\t\t\t\treturn Ember.set(_this7, 'isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\taddCostCodeToGroupAction: function addCostCodeToGroupAction(costCode) {\n\t\t\t\treturn this.addCostCodeToGroup(costCode);\n\t\t\t},\n\t\t\trowItemSelectAction: function rowItemSelectAction(action, member, costCode) {\n\t\t\t\tif (Ember.get(action, 'key') === 'archive') {\n\t\t\t\t\treturn this.openArchiveDialog([costCode]);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'unarchive') {\n\t\t\t\t\treturn this.unarchive([costCode]);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'move-to-group') {\n\t\t\t\t\treturn this.moveToGroup([costCode]);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error(\"An unrecognized action was called in the controller/project/index actionView\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tcostCodeSelected: function costCodeSelected(isChecked, item) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.get(this, 'editItems').pushObject(item);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.get(this, 'editItems').removeObject(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectAll: function selectAll(isChecked, items) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.set(this, 'editItems', items);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'editItems', []);\n\t\t\t\t}\n\t\t\t},\n\t\t\teditListAction: function editListAction(action) {\n\t\t\t\tEmber.set(this, 'editAction', Ember.get(action, 'key'));\n\t\t\t\tEmber.set(this, 'hideRowActions', true);\n\t\t\t\tEmber.set(this, 'edit', true);\n\n\t\t\t\tvar params = {\n\t\t\t\t\tfilter: true,\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tungrouped: Ember.get(this, 'ungrouped'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t};\n\n\t\t\t\tif (Ember.get(action, 'key') === 'unarchive') {\n\t\t\t\t\tparams.group === 'archived';\n\t\t\t\t}\n\n\t\t\t\tthis.sendFilter(params);\n\t\t\t},\n\t\t\tsubmitEditAction: function submitEditAction() {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\tvar filteredItems = Ember.get(this, 'editItems');\n\t\t\t\tif (Ember.isNone(filteredItems) || Ember.get(this, 'editItems.length') === 0) {\n\t\t\t\t\tthis.clearEdit();\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'archive') {\n\t\t\t\t\tthis.openArchiveDialog(filteredItems);\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'unarchive') {\n\t\t\t\t\tthis.unarchive(filteredItems, function () {\n\t\t\t\t\t\t_this8.clearEdit();\n\t\t\t\t\t});\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'move-to-group') {\n\t\t\t\t\tif (!Ember.isNone(filteredItems) && Ember.get(this, 'editItems.length') > 0) {\n\t\t\t\t\t\tEmber.set(this, 'groupItems', filteredItems);\n\t\t\t\t\t\tEmber.set(this, 'showMoveGroupDialog', true);\n\t\t\t\t\t}\n\t\t\t\t\tthis.clearEdit();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelEditAction: function cancelEditAction() {\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tselectWorkersComp: function selectWorkersComp(item) {\n\t\t\t\tif (!Ember.isNone(Ember.get(this, 'newCostCode'))) {\n\t\t\t\t\tif (item.id !== '_-NULL-_') {\n\t\t\t\t\t\tEmber.set(this, 'newCostCode.workersCompId', Ember.get(item, 'id'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(this, 'newCostCode.workersCompId', null);\n\t\t\t\t\t}\n\t\t\t\t} else if (!Ember.isNone(Ember.get(this, 'costCode'))) {\n\t\t\t\t\t// TODO:\n\t\t\t\t\t// rewrite next line to use embers check for a set property that is not yet saved.\n\t\t\t\t\tif (item.id === '_-NULL-_' && Ember.get(this, 'costCode._internalModel._data.workersCompId') !== null) {\n\t\t\t\t\t\tEmber.set(this, 'costCode.workersCompId', Ember.get(item, 'id'));\n\t\t\t\t\t} else if (item.id === '_-NULL-_' && Ember.get(this, 'costCode.workersCompId') !== null) {\n\t\t\t\t\t\tEmber.set(this, 'costCode.workersCompId', null);\n\t\t\t\t\t\tEmber.set(this, 'costCode.workersComp', null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(this, 'costCode.workersCompId', Ember.get(item, 'id'));\n\t\t\t\t\t\tEmber.set(this, 'costCode.workersComp', item);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tEmber.Error('The newCostCode or costCode must be set before selectWorkersComp is called');\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectGeneralLiability: function selectGeneralLiability(item) {\n\t\t\t\tif (!Ember.isNone(Ember.get(this, 'newCostCode'))) {\n\t\t\t\t\tif (item.id !== '_-NULL-_') {\n\t\t\t\t\t\tEmber.set(this, 'newCostCode.generalLiabilityId', item.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(this, 'newCostCode.generalLiabilityId', null);\n\t\t\t\t\t}\n\t\t\t\t} else if (!Ember.isNone(Ember.get(this, 'costCode'))) {\n\t\t\t\t\t// TODO:\n\t\t\t\t\t// rewrite next line to use embers check for a set property that is not yet saved.\n\t\t\t\t\tif (item.id === '_-NULL-_' && Ember.get(this, 'costCode._internalModel._data.generalLiabilityId') !== null) {\n\t\t\t\t\t\tEmber.set(this, 'costCode.generalLiabilityId', Ember.get(item, 'id'));\n\t\t\t\t\t} else if (item.id === '_-NULL-_' && Ember.get(this, 'costCode.generalLiabilityId') !== null) {\n\t\t\t\t\t\tEmber.set(this, 'costCode.generalLiabilityId', null);\n\t\t\t\t\t\tEmber.set(this, 'costCode.generalLiability', null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(this, 'costCode.generalLiabilityId', Ember.get(item, 'id'));\n\t\t\t\t\t\tEmber.set(this, 'costCode.generalLiability', item);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tEmber.Error('The newCostCode or costCode must be set before selectGeneralLiability is called');\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectNewClass: function selectNewClass(item) {\n\t\t\t\tif (Ember.get(this, 'insuranceClassItem._internalModel.modelName') !== item.key) {\n\t\t\t\t\tEmber.set(this, 'insuranceClassItem._changeType', item.key);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenEditCostCodeDialog: function openEditCostCodeDialog(costCode) {\n\t\t\t\tthis.getInsuranceClasses();\n\t\t\t\tif (!Ember.get(this, 'edit')) {\n\t\t\t\t\tEmber.set(this, 'showEditDialog', true);\n\t\t\t\t\tEmber.set(this, 'costCode', costCode);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseEditCostCodeDialog: function closeEditCostCodeDialog() {\n\t\t\t\tEmber.set(this, 'showEditDialog', false);\n\t\t\t\tEmber.get(this, 'costCode').rollbackAttributes();\n\t\t\t\tEmber.set(this, 'costCode', null);\n\t\t\t},\n\t\t\tsaveCostCode: function saveCostCode() {\n\t\t\t\tvar costCode = Ember.get(this, 'costCode');\n\n\t\t\t\tif (Ember.get(costCode, 'hasDirtyAttributes')) {\n\t\t\t\t\treturn this.saveCostCode(costCode).catch(function (err) {\n\t\t\t\t\t\tif (typeof err === 'string') {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"Something went wrong. Please try again later.\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeleteCostCode: function deleteCostCode() {\n\t\t\t\tvar _this9 = this;\n\n\t\t\t\tvar costCode = Ember.get(this, 'costCode');\n\t\t\t\tEmber.set(costCode, 'archivedOn', _utils.Time.timestamp());\n\t\t\t\treturn costCode.save().then(function () {\n\t\t\t\t\tEmber.set(_this9, 'showEditDialog', false);\n\t\t\t\t\t_this9.refreshRoute();\n\t\t\t\t});\n\t\t\t},\n\t\t\tsaveNewCostCode: function saveNewCostCode() {\n\t\t\t\tvar _this10 = this;\n\n\t\t\t\tvar costCode = Ember.get(this, 'newCostCode');\n\t\t\t\treturn this.saveCostCode(costCode).catch(function (err) {\n\t\t\t\t\treturn Ember.RSVP.reject(typeof err === 'string' ? err : (0, _utils.loc)(\"Something went wrong. Please try again later.\"));\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this10.refreshRoute();\n\t\t\t\t});\n\t\t\t},\n\t\t\topenNewCostCodeDialog: function openNewCostCodeDialog() {\n\t\t\t\tthis.getInsuranceClasses();\n\n\t\t\t\tvar costCode = this.store.createRecord('cost-code', {\n\t\t\t\t\torganizationId: Ember.get(this, 'auth.organization.id')\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, 'newCostCode', costCode);\n\t\t\t\tEmber.set(this, 'showNewDialog', true);\n\t\t\t},\n\t\t\tcloseNewCostCodeDialog: function closeNewCostCodeDialog() {\n\t\t\t\tEmber.get(this, 'mergedClassList').forEach(function (item) {\n\t\t\t\t\treturn Ember.set(item, '_selected', false);\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, 'showNewDialog', false);\n\t\t\t\tEmber.set(this, 'newCostCode', null);\n\t\t\t},\n\t\t\topenEditInsuranceClassDialog: function openEditInsuranceClassDialog(item) {\n\t\t\t\tthis.getInsuranceClasses();\n\n\t\t\t\tEmber.set(this, 'insuranceClassItem', item);\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', false);\n\t\t\t\tEmber.set(this, 'showEditInsuranceClassDialog', true);\n\t\t\t\tEmber.set(this, 'currentType', item.type);\n\t\t\t},\n\t\t\tcloseEditInsuranceClassDialog: function closeEditInsuranceClassDialog() {\n\t\t\t\tthis.getInsuranceClasses();\n\n\t\t\t\tEmber.get(this, 'insuranceClassItem').rollbackAttributes();\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', true);\n\t\t\t\tEmber.set(this, 'showEditInsuranceClassDialog', false);\n\t\t\t},\n\t\t\topenAddInsuranceClassDialog: function openAddInsuranceClassDialog() {\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', false);\n\t\t\t\tEmber.set(this, 'showAddInsuranceClassDialog', true);\n\t\t\t\tEmber.set(this, 'insuranceClassType', null);\n\t\t\t\tEmber.set(this, 'insuranceClassTitle', null);\n\n\t\t\t\tthis.resetInsuranceClassMenu();\n\t\t\t},\n\t\t\tcloseAddInsuranceClassDialog: function closeAddInsuranceClassDialog() {\n\t\t\t\tEmber.set(this, 'classTitle', '');\n\t\t\t\tEmber.set(this, 'showAddInsuranceClassDialog', false);\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', true);\n\t\t\t},\n\t\t\topenInsuranceClassDialog: function openInsuranceClassDialog() {\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', true);\n\t\t\t},\n\t\t\tcloseInsuranceClassDialog: function closeInsuranceClassDialog() {\n\t\t\t\tEmber.set(this, 'showInsuranceClassDialog', false);\n\t\t\t\tEmber.set(this, 'showEditInsuranceClassDialog', false);\n\t\t\t\tEmber.set(this, 'showAddInsuranceClassDialog', false);\n\t\t\t},\n\t\t\tsaveNewClass: function saveNewClass() {\n\t\t\t\tvar _this11 = this;\n\n\t\t\t\tvar type = Ember.get(this, 'insuranceClassType');\n\n\t\t\t\tif (!Ember.isEmpty(type)) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must select an insurance type'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(Ember.get(this, 'classTitle'))) {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must provide a title for this insurance class'));\n\t\t\t\t}\n\n\t\t\t\tvar model = Ember.get(this, type);\n\t\t\t\tEmber.set(model, 'title', Ember.get(this, 'classTitle'));\n\t\t\t\treturn model.save().finally(function () {\n\t\t\t\t\treturn Ember.get(_this11, Ember.String.camelize(type)).update() && Ember.set(_this11, type, null);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsaveInsuranceClass: function saveInsuranceClass() {\n\t\t\t\tvar _this12 = this;\n\n\t\t\t\tvar insurance = Ember.get(this, 'insuranceClassItem');\n\t\t\t\tvar type = Ember.get(insurance, '_changeType');\n\t\t\t\tif (!Ember.isNone(insurance)) {\n\t\t\t\t\tif (!Ember.isNone(type)) {\n\t\t\t\t\t\tvar organizationId = Ember.get(insurance, 'organizationId');\n\t\t\t\t\t\tvar title = Ember.get(insurance, 'title');\n\t\t\t\t\t\treturn this.store.createRecord(type, { title: title, organizationId: organizationId }).save() // save new insuranceClassItem\n\t\t\t\t\t\t.then(function (model) {\n\t\t\t\t\t\t\treturn insurance.destroyRecord() && Ember.set(_this12, 'insuranceClassItem', model) && model;\n\t\t\t\t\t\t}) // delete old insuranceClassItem and set new insuranceClassItem\n\t\t\t\t\t\t.finally(function () {\n\t\t\t\t\t\t\treturn Ember.get(_this12, Ember.String.camelize(type)).update();\n\t\t\t\t\t\t}); // reload insuranceClassItems lists\n\t\t\t\t\t} else if (Ember.get(insurance, 'hasDirtyAttributes')) {\n\t\t\t\t\t\treturn insurance.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Ember.RSVP.resolve(Ember.get(this, 'insuranceClassItem'));\n\t\t\t},\n\t\t\tdeleteInsuranceClass: function deleteInsuranceClass() {\n\t\t\t\tvar _this13 = this;\n\n\t\t\t\treturn Ember.get(this, 'insuranceClassItem').destroyRecord().finally(function () {\n\t\t\t\t\tEmber.get(_this13, 'workersComp').update();\n\t\t\t\t\tEmber.get(_this13, 'generalLiability').update();\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetSelectedGroup: function setSelectedGroup(view, group) {\n\t\t\t\tEmber.set(this, 'selectedGroup', group);\n\t\t\t},\n\t\t\taddNewGroup: function addNewGroup(value) {\n\t\t\t\treturn this._createGroup(value);\n\t\t\t},\n\t\t\tcreateGroup: function createGroup() {\n\t\t\t\tvar _this14 = this;\n\n\t\t\t\tif (!Ember.isEmpty(Ember.get(this, 'newGroupName'))) {\n\t\t\t\t\treturn this._createGroup(Ember.get(this, 'newGroupName')).finally(function () {\n\t\t\t\t\t\treturn Ember.set(_this14, 'newGroupName', '');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn Ember.RSVP.reject(\"The group must have a title\");\n\t\t\t},\n\t\t\tonDeleteGroup: function onDeleteGroup(group) {\n\t\t\t\t_logger.default.info(this, 'onDeleteGroup', group);\n\n\t\t\t\treturn this.ungroupOrphans(group);\n\t\t\t},\n\t\t\tshowAddGroup: function showAddGroup() {\n\t\t\t\tEmber.set(this, 'shouldAddGroup', !Ember.get(this, 'shouldAddGroup'));\n\t\t\t},\n\t\t\tcloseGroupDialog: function closeGroupDialog() {\n\t\t\t\tEmber.set(this, 'showMoveGroupDialog', false);\n\t\t\t},\n\t\t\tarchiveCostCode: function archiveCostCode() {\n\t\t\t\treturn this.archive();\n\t\t\t},\n\t\t\tcloseArchiveDialog: function closeArchiveDialog() {\n\t\t\t\tEmber.set(this, 'archiveItems', null);\n\t\t\t\tEmber.set(this, 'showArchiveDialog', false);\n\t\t\t},\n\t\t\tfilterGroup: function filterGroup(group) {\n\t\t\t\tvar options = {\n\t\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(group, 'id')\n\t\t\t\t};\n\t\t\t\tthis.sendFilter(options);\n\t\t\t},\n\t\t\tsearchAction: function searchAction(keyword) {\n\t\t\t\tkeyword = !Ember.isEmpty(keyword) ? keyword : '';\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tsearch: keyword,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangeSize: function changeSize(size) {\n\t\t\t\tsize = parseInt(size, 10);\n\t\t\t\tsize = !isNaN(size) && size > 30 ? size : 30;\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tpage_size: size,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangePage: function changePage(page) {\n\t\t\t\tpage = parseInt(page, 10);\n\t\t\t\tpage = !isNaN(page) && page > 1 ? page : 1;\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: page,\n\t\t\t\t\tpage_size: Ember.get(this, 'page_size'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/*** Cost Code Import ***/\n\n\t\t\topenImportAction: function openImportAction() {\n\t\t\t\tEmber.set(this, 'showNewDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', true);\n\t\t\t},\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showNewDialog', false);\n\t\t\t},\n\t\t\tcancelImportAction: function cancelImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showNewDialog', true);\n\t\t\t},\n\t\t\timportCompleteAction: function importCompleteAction() {\n\t\t\t\tEmber.set(this, 'showNewDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t}\n\n\t\t\t/*** Cost Code Import End ***/\n\n\t\t}\n\t});\n});","define('busy-app/controllers/currency', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t(0, _utils.loc)(\"USD - United States Dollars\");\n\t\t\t(0, _utils.loc)(\"USD -  United States dollar\");\n\t\t\t(0, _utils.loc)(\"AED -  United Arab Emirates dirham\");\n\t\t\t(0, _utils.loc)(\"AFN -  Afghan afghani\");\n\t\t\t(0, _utils.loc)(\"ALL -  Albanian lek\");\n\t\t\t(0, _utils.loc)(\"AMD -  Armenian dram\");\n\t\t\t(0, _utils.loc)(\"ANG -  Netherlands Antillean guilder\");\n\t\t\t(0, _utils.loc)(\"AOA -  Angolan kwanza\");\n\t\t\t(0, _utils.loc)(\"ARS -  Argentine peso\");\n\t\t\t(0, _utils.loc)(\"AUD -  Australian dollar\");\n\t\t\t(0, _utils.loc)(\"AWG -  Aruban florin\");\n\t\t\t(0, _utils.loc)(\"AZN -  Azerbaijani manat\");\n\t\t\t(0, _utils.loc)(\"BAM -  Bosnia and Herzegovina convertible mark\");\n\t\t\t(0, _utils.loc)(\"BBD -  Barbados dollar\");\n\t\t\t(0, _utils.loc)(\"BDT -  Bangladeshi taka\");\n\t\t\t(0, _utils.loc)(\"BGN -  Bulgarian lev\");\n\t\t\t(0, _utils.loc)(\"BHD -  Bahraini dinar\");\n\t\t\t(0, _utils.loc)(\"BIF -  Burundian franc\");\n\t\t\t(0, _utils.loc)(\"BMD -  Bermudian dollar\");\n\t\t\t(0, _utils.loc)(\"BND -  Brunei dollar\");\n\t\t\t(0, _utils.loc)(\"BOB -  Boliviano\");\n\t\t\t(0, _utils.loc)(\"BRL -  Brazilian real\");\n\t\t\t(0, _utils.loc)(\"BSD -  Bahamian dollar\");\n\t\t\t(0, _utils.loc)(\"BTN -  Bhutanese ngultrum\");\n\t\t\t(0, _utils.loc)(\"BWP -  Botswana pula\");\n\t\t\t(0, _utils.loc)(\"BYR -  Belarusian ruble\");\n\t\t\t(0, _utils.loc)(\"BZD -  Belize dollar\");\n\t\t\t(0, _utils.loc)(\"CAD -  Canadian dollar\");\n\t\t\t(0, _utils.loc)(\"CDF -  Congolese franc\");\n\t\t\t(0, _utils.loc)(\"CHF -  Swiss franc\");\n\t\t\t(0, _utils.loc)(\"CLP -  Chilean peso\");\n\t\t\t(0, _utils.loc)(\"CNY -  Chinese yuan\");\n\t\t\t(0, _utils.loc)(\"COP -  Colombian peso\");\n\t\t\t(0, _utils.loc)(\"COU -  Unidad de Valor Real\");\n\t\t\t(0, _utils.loc)(\"CRC -  Costa Rican colon\");\n\t\t\t(0, _utils.loc)(\"CUC -  Cuban convertible peso\");\n\t\t\t(0, _utils.loc)(\"CUP -  Cuban peso\");\n\t\t\t(0, _utils.loc)(\"CVE -  Cape Verde escudo\");\n\t\t\t(0, _utils.loc)(\"CZK -  Czech koruna\");\n\t\t\t(0, _utils.loc)(\"DJF -  Djiboutian franc\");\n\t\t\t(0, _utils.loc)(\"DKK -  Danish krone\");\n\t\t\t(0, _utils.loc)(\"DOP -  Dominican peso\");\n\t\t\t(0, _utils.loc)(\"DZD -  Algerian dinar\");\n\t\t\t(0, _utils.loc)(\"EGP -  Egyptian pound\");\n\t\t\t(0, _utils.loc)(\"ERN -  Eritrean nakfa\");\n\t\t\t(0, _utils.loc)(\"ETB -  Ethiopian birr\");\n\t\t\t(0, _utils.loc)(\"EUR -  Euro\");\n\t\t\t(0, _utils.loc)(\"FJD -  Fiji dollar\");\n\t\t\t(0, _utils.loc)(\"FKP -  Falkland Islands pound\");\n\t\t\t(0, _utils.loc)(\"GBP -  Pound sterling\");\n\t\t\t(0, _utils.loc)(\"GEL -  Georgian lari\");\n\t\t\t(0, _utils.loc)(\"GHS -  Ghanaian cedi\");\n\t\t\t(0, _utils.loc)(\"GIP -  Gibraltar pound\");\n\t\t\t(0, _utils.loc)(\"GMD -  Gambian dalasi\");\n\t\t\t(0, _utils.loc)(\"GNF -  Guinean franc\");\n\t\t\t(0, _utils.loc)(\"GTQ -  Guatemalan quetzal\");\n\t\t\t(0, _utils.loc)(\"GYD -  Guyanese dollar\");\n\t\t\t(0, _utils.loc)(\"HKD -  Hong Kong dollar\");\n\t\t\t(0, _utils.loc)(\"HNL -  Honduran lempira\");\n\t\t\t(0, _utils.loc)(\"HRK -  Croatian kuna\");\n\t\t\t(0, _utils.loc)(\"HTG -  Haitian gourde\");\n\t\t\t(0, _utils.loc)(\"HUF -  Hungarian forint\");\n\t\t\t(0, _utils.loc)(\"IDR -  Indonesian rupiah\");\n\t\t\t(0, _utils.loc)(\"ILS -  Israeli new shekel\");\n\t\t\t(0, _utils.loc)(\"INR -  Indian rupee\");\n\t\t\t(0, _utils.loc)(\"IQD -  Iraqi dinar\");\n\t\t\t(0, _utils.loc)(\"IRR -  Iranian rial\");\n\t\t\t(0, _utils.loc)(\"ISK -  Icelandic króna\");\n\t\t\t(0, _utils.loc)(\"JMD -  Jamaican dollar\");\n\t\t\t(0, _utils.loc)(\"JOD -  Jordanian dinar\");\n\t\t\t(0, _utils.loc)(\"JPY -  Japanese yen\");\n\t\t\t(0, _utils.loc)(\"KES -  Kenyan shilling\");\n\t\t\t(0, _utils.loc)(\"KGS -  Kyrgyzstani som\");\n\t\t\t(0, _utils.loc)(\"KHR -  Cambodian riel\");\n\t\t\t(0, _utils.loc)(\"KMF -  Comoro franc\");\n\t\t\t(0, _utils.loc)(\"KPW -  North Korean won\");\n\t\t\t(0, _utils.loc)(\"KRW -  South Korean won\");\n\t\t\t(0, _utils.loc)(\"KWD -  Kuwaiti dinar\");\n\t\t\t(0, _utils.loc)(\"KYD -  Cayman Islands dollar\");\n\t\t\t(0, _utils.loc)(\"KZT -  Kazakhstani tenge\");\n\t\t\t(0, _utils.loc)(\"LAK -  Lao kip\");\n\t\t\t(0, _utils.loc)(\"LBP -  Lebanese pound\");\n\t\t\t(0, _utils.loc)(\"LKR -  Sri Lankan rupee\");\n\t\t\t(0, _utils.loc)(\"LRD -  Liberian dollar\");\n\t\t\t(0, _utils.loc)(\"LSL -  Lesotho loti\");\n\t\t\t(0, _utils.loc)(\"LTL -  Lithuanian litas\");\n\t\t\t(0, _utils.loc)(\"LVL -  Latvian lats\");\n\t\t\t(0, _utils.loc)(\"LYD -  Libyan dinar\");\n\t\t\t(0, _utils.loc)(\"MAD -  Moroccan dirham\");\n\t\t\t(0, _utils.loc)(\"MDL -  Moldovan leu\");\n\t\t\t(0, _utils.loc)(\"MKD -  Macedonian denar\");\n\t\t\t(0, _utils.loc)(\"MMK -  Myanma kyat\");\n\t\t\t(0, _utils.loc)(\"MNT -  Mongolian tugrik\");\n\t\t\t(0, _utils.loc)(\"MOP -  Macanese pataca\");\n\t\t\t(0, _utils.loc)(\"MUR -  Mauritian rupee\");\n\t\t\t(0, _utils.loc)(\"MVR -  Maldivian rufiyaa\");\n\t\t\t(0, _utils.loc)(\"MWK -  Malawian kwacha\");\n\t\t\t(0, _utils.loc)(\"MXN -  Mexican peso\");\n\t\t\t(0, _utils.loc)(\"MYR -  Malaysian ringgit\");\n\t\t\t(0, _utils.loc)(\"MZN -  Mozambican metical\");\n\t\t\t(0, _utils.loc)(\"NAD -  Namibian dollar\");\n\t\t\t(0, _utils.loc)(\"NGN -  Nigerian naira\");\n\t\t\t(0, _utils.loc)(\"NIO -  Nicaraguan córdoba\");\n\t\t\t(0, _utils.loc)(\"NOK -  Norwegian krone\");\n\t\t\t(0, _utils.loc)(\"NPR -  Nepalese rupee\");\n\t\t\t(0, _utils.loc)(\"NZD -  New Zealand dollar\");\n\t\t\t(0, _utils.loc)(\"OMR -  Omani rial\");\n\t\t\t(0, _utils.loc)(\"PAB -  Panamanian balboa\");\n\t\t\t(0, _utils.loc)(\"PEN -  Peruvian nuevo sol\");\n\t\t\t(0, _utils.loc)(\"PGK -  Papua New Guinean kina\");\n\t\t\t(0, _utils.loc)(\"PHP -  Philippine peso\");\n\t\t\t(0, _utils.loc)(\"PKR -  Pakistani rupee\");\n\t\t\t(0, _utils.loc)(\"PLN -  Polish złoty\");\n\t\t\t(0, _utils.loc)(\"PYG -  Paraguayan guaraní\");\n\t\t\t(0, _utils.loc)(\"QAR -  Qatari riyal\");\n\t\t\t(0, _utils.loc)(\"RON -  Romanian new leu\");\n\t\t\t(0, _utils.loc)(\"RSD -  Serbian dinar\");\n\t\t\t(0, _utils.loc)(\"RUB -  Russian rouble\");\n\t\t\t(0, _utils.loc)(\"RWF -  Rwandan franc\");\n\t\t\t(0, _utils.loc)(\"SAR -  Saudi riyal\");\n\t\t\t(0, _utils.loc)(\"SBD -  Solomon Islands dollar\");\n\t\t\t(0, _utils.loc)(\"SCR -  Seychelles rupee\");\n\t\t\t(0, _utils.loc)(\"SDG -  Sudanese pound\");\n\t\t\t(0, _utils.loc)(\"SEK -  Swedish krona/kronor\");\n\t\t\t(0, _utils.loc)(\"SGD -  Singapore dollar\");\n\t\t\t(0, _utils.loc)(\"SHP -  Saint Helena pound\");\n\t\t\t(0, _utils.loc)(\"SLL -  Sierra Leonean leone\");\n\t\t\t(0, _utils.loc)(\"SOS -  Somali shilling\");\n\t\t\t(0, _utils.loc)(\"SRD -  Surinamese dollar\");\n\t\t\t(0, _utils.loc)(\"SSP -  South Sudanese pound\");\n\t\t\t(0, _utils.loc)(\"STD -  São Tomé and Príncipe dobra\");\n\t\t\t(0, _utils.loc)(\"SYP -  Syrian pound\");\n\t\t\t(0, _utils.loc)(\"SZL -  Swazi lilangeni\");\n\t\t\t(0, _utils.loc)(\"THB -  Thai baht\");\n\t\t\t(0, _utils.loc)(\"TJS -  Tajikistani somoni\");\n\t\t\t(0, _utils.loc)(\"TMT -  Turkmenistani manat\");\n\t\t\t(0, _utils.loc)(\"TND -  Tunisian dinar\");\n\t\t\t(0, _utils.loc)(\"TOP -  Tongan paʻanga\");\n\t\t\t(0, _utils.loc)(\"TRY -  Turkish lira\");\n\t\t\t(0, _utils.loc)(\"TTD -  Trinidad and Tobago dollar\");\n\t\t\t(0, _utils.loc)(\"TWD -  New Taiwan dollar\");\n\t\t\t(0, _utils.loc)(\"TZS -  Tanzanian shilling\");\n\t\t\t(0, _utils.loc)(\"UAH -  Ukrainian hryvnia\");\n\t\t\t(0, _utils.loc)(\"UGX -  Ugandan shilling\");\n\t\t\t(0, _utils.loc)(\"UYI -  Uruguay Peso en Unidades Indexadas\");\n\t\t\t(0, _utils.loc)(\"UYU -  Uruguayan peso\");\n\t\t\t(0, _utils.loc)(\"UZS -  Uzbekistan som\");\n\t\t\t(0, _utils.loc)(\"VEF -  Venezuelan bolívar\");\n\t\t\t(0, _utils.loc)(\"VND -  Vietnamese dong\");\n\t\t\t(0, _utils.loc)(\"VUV -  Vanuatu vatu\");\n\t\t\t(0, _utils.loc)(\"WST -  Samoan tala\");\n\t\t\t(0, _utils.loc)(\"XAF -  CFA franc BEAC\");\n\t\t\t(0, _utils.loc)(\"XBT -  Bitcoin\");\n\t\t\t(0, _utils.loc)(\"XCD -  East Caribbean dollar\");\n\t\t\t(0, _utils.loc)(\"XOF -  CFA franc BCEAO\");\n\t\t\t(0, _utils.loc)(\"XPF -  CFP franc (Franc du Pacifique)\");\n\t\t\t(0, _utils.loc)(\"YER -  Yemeni rial\");\n\t\t\t(0, _utils.loc)(\"ZAR -  South African rand\");\n\t\t\t(0, _utils.loc)(\"ZMW -  Zambian kwacha\");\n\t\t}\n\t});\n});","define('busy-app/controllers/employees/employee-locations', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['id', 'member_id', 'filter'],\n\n\t\tid: null,\n\t\tmember_id: null,\n\t\tfilter: null,\n\t\tgroups: null,\n\n\t\tlocationFilter: Ember.computed('filter', function () {\n\t\t\tvar filter = [];\n\t\t\tif (/break/.test(this.get('filter'))) {\n\t\t\t\tvar breakId = this.get('filter').replace(/break-/, '');\n\t\t\t\tvar breakEntry = this.get('model.timeEntryBreaks').findBy('id', breakId);\n\t\t\t\tif (!Ember.isNone(breakEntry)) {\n\t\t\t\t\tfilter.push(breakEntry.get('startLocation.id'));\n\t\t\t\t\tfilter.push(breakEntry.get('endLocation.id'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.get('filter') === 'start-location') {\n\t\t\t\tfilter.push(this.get('model.startLocation.id'));\n\t\t\t}\n\n\t\t\tif (this.get('filter') === 'end-location') {\n\t\t\t\tfilter.push(this.get('model.endLocation.id'));\n\t\t\t}\n\t\t\treturn filter;\n\t\t}),\n\n\t\tsetGroups: Ember.observer('model.{startLocationId,isStartLocationValid,endLocationId,isEndLocationValid}', 'model.timeEntryBreaks.@each.{startLocationId,endLocationId}', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tvar groups = [Ember.Object.create({ key: 'all-locations', value: (0, _utils.loc)('All Locations') })];\n\t\t\t\tif (!Ember.isNone(this.get('model.isStartLocationValid'))) {\n\t\t\t\t\tgroups.pushObject(Ember.Object.create({\n\t\t\t\t\t\tkey: 'start-location',\n\t\t\t\t\t\tvalue: (0, _utils.loc)('Clock in'),\n\t\t\t\t\t\t_selected: 'start-location' === this.get('filter')\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(this.get('model.endLocationId'))) {\n\t\t\t\t\tgroups.pushObject(Ember.Object.create({\n\t\t\t\t\t\tkey: 'end-location',\n\t\t\t\t\t\tvalue: (0, _utils.loc)('Clock out'),\n\t\t\t\t\t\t_selected: 'end-location' === this.get('filter')\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\tvar idx = 1;\n\t\t\t\tthis.get('model.timeEntryBreaks').forEach(function (item) {\n\t\t\t\t\tif (!Ember.isNone(item.get('startLocationId')) || !Ember.isNone(item.get('endLocationId'))) {\n\t\t\t\t\t\tvar keyName = 'break-' + item.id;\n\t\t\t\t\t\tvar isSelected = false;\n\t\t\t\t\t\tif (keyName === _this.get('filter')) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroups.push(Ember.Object.create({\n\t\t\t\t\t\t\tkey: keyName,\n\t\t\t\t\t\t\tvalue: (0, _utils.loc)('Break %@', [idx]),\n\t\t\t\t\t\t\t_selected: isSelected\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tidx++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.set('groups', groups);\n\t\t\t}\n\t\t}),\n\n\t\tsetDefaultGroup: Ember.observer('group.@each.key', function () {\n\t\t\tthis.set('group', this.get('groups').objectAt(0));\n\t\t}),\n\n\t\tactions: {\n\t\t\tsetSelectedGroup: function setSelectedGroup(view, group) {\n\t\t\t\tthis.set('selectedGroup', group);\n\t\t\t},\n\t\t\tfilterGroup: function filterGroup(group) {\n\t\t\t\tvar filter = group.get('key') === 'all-locations' ? null : group.get('key');\n\t\t\t\tthis.set('filter', filter);\n\t\t\t\tthis.transitionToRoute('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: this.get('id'),\n\t\t\t\t\t\tmember_id: this.get('member_id'),\n\t\t\t\t\t\tfilter: filter\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/employees/employee', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['timesheet_start', 'timesheet_end', 'timesheet_mode'],\n\n\t\taccess: Ember.inject.service('access'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\torganization: Ember.computed.alias('access.auth.organization'),\n\n\t\tselectMenu: null,\n\t\tshowNewTimeEntryDialog: false,\n\t\tshowClockInAtDialog: false,\n\t\tshowClockOutAtDialog: false,\n\n\t\ttimecardBadgeContent: '',\n\t\ttimecardBadgeColor: 'red',\n\n\t\ttimesheet_start: null,\n\t\ttimesheet_end: null,\n\t\ttimesheet_mode: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setSelectMenu();\n\t\t},\n\n\t\tonStartChange: Ember.observer('timesheet_start', function () {\n\t\t\tvar timesheet_start = this.get('timesheet_start');\n\n\t\t\tif (!Ember.isNone(timesheet_start) && parseInt(timesheet_start, 10) !== timesheet_start) {\n\t\t\t\tthis.set('timesheet_start', parseInt(timesheet_start, 10));\n\t\t\t}\n\t\t}),\n\n\t\tonEndChange: Ember.observer('timesheet_end', function () {\n\t\t\tvar timesheet_end = this.get('timesheet_end');\n\n\t\t\tif (!Ember.isNone(timesheet_end) && parseInt(timesheet_end, 10) !== timesheet_end) {\n\t\t\t\tthis.set('timesheet_end', parseInt(timesheet_end, 10));\n\t\t\t}\n\t\t}),\n\n\t\tcanShowEntries: Ember.computed('model.member.id', 'access.auth.authMemberPosition', function () {\n\t\t\tif (!Ember.isNone(this.get('model.member.id')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id'))) {\n\t\t\t\treturn this.get('access').canTakeActionFor('timeEvents', this.get('model.member'));\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tcanShowStatus: Ember.computed('canShowEntries', 'model.member.id', 'access.auth.authMemberPosition', function () {\n\t\t\tvar result = false;\n\t\t\tif (this.get('canShowEntries')) {\n\t\t\t\tresult = true;\n\t\t\t} else if (!Ember.isNone(this.get('model.member.id')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id'))) {\n\t\t\t\tresult = this.get('access').canTakeActionFor('timeEvents', this.get('model.member'));\n\t\t\t}\n\t\t\treturn result;\n\t\t}),\n\n\t\tcanShowWages: Ember.computed('model.member.id', 'access.auth.authMemberPosition', function () {\n\t\t\tif (!Ember.isNone(this.get('model.member.id')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id'))) {\n\t\t\t\treturn this.get('access').canTakeActionFor('manageEmployees', this.get('model.member'));\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tcanShowDetails: Ember.computed('model.member.id', 'access.auth.authMemberPosition', function () {\n\t\t\tif (!Ember.isNone(this.get('model.member.id')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id'))) {\n\t\t\t\treturn this.get('access').canTakeActionFor('manageEmployees', this.get('model.member'));\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisArchived: Ember.computed('model.member.archivedOn', function () {\n\t\t\tif (!Ember.isNone(this.get('model.member.archivedOn'))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t/**\n   * Sets up the select Menu for this view\n   *\n   * Observes member.openEntry.id on Init\n   *\n   * @public\n   * @method setSelectMenu\n   */\n\t\tsetSelectMenu: Ember.observer('model.member.openEntry.id', function () {\n\t\t\tif (Ember.isNone(this.get('model.member.openEntry'))) {\n\t\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'new-time-entry', value: (0, _utils.loc)('New Time Entry') }), Ember.Object.create({ key: 'clock-in-at', value: (0, _utils.loc)('Clock In At') })]);\n\t\t\t} else {\n\t\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'new-time-entry', value: (0, _utils.loc)('New Time Entry') }), Ember.Object.create({ key: 'clock-out-at', value: (0, _utils.loc)('Clock Out At') })]);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\topenLoacationAction: function openLoacationAction(member) {\n\t\t\t\tthis.transitionToRoute('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: member.get('openEntry.id'),\n\t\t\t\t\t\tmember_id: member.get('id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * Set each selectMenu item\n    */\n\t\t\tselectItemAction: function selectItemAction(item) {\n\t\t\t\tif (item.get('key') === 'new-time-entry') {\n\t\t\t\t\tthis.set('showNewTimeEntryDialog', true);\n\t\t\t\t} else if (item.get('key') === 'clock-in-at') {\n\t\t\t\t\tthis.set('showClockInAtDialog', true);\n\t\t\t\t} else if (item.get('key') === 'clock-out-at') {\n\t\t\t\t\tthis.set('showClockOutAtDialog', true);\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * close dialog for adding Time Entry\n    */\n\t\t\tcloseTimeEntryAdd: function closeTimeEntryAdd() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', false);\n\t\t\t},\n\n\n\t\t\t/**\n    * close dialog for adding Time Entry\n    */\n\t\t\tcloseClockInAt: function closeClockInAt() {\n\t\t\t\tthis.set('showClockInAtDialog', false);\n\t\t\t},\n\t\t\tcloseClockOutAt: function closeClockOutAt() {\n\t\t\t\tthis.set('showClockOutAtDialog', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/employees/index', ['exports', '@busy-web/utils', 'busy-app/mixins/controller-filter', 'busy-app/utils/debug', 'busy-app/utils/logger', 'busy-app/utils/settings'], function (exports, _utils, _controllerFilter, _debug, _logger, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend(_controllerFilter.default, {\n\t\tqueryParams: ['group', 'search', 'filter', 'page', 'page_size'],\n\n\t\tanalytics: Ember.inject.service('analytics'),\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tpayPeriodUtils: Ember.inject.service('pay-period'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tgraylog: Ember.inject.service('graylog'),\n\n\t\tgroup: null,\n\t\tsearch: '',\n\t\tfilter: null,\n\n\t\tisLoading: false,\n\n\t\tedit: false,\n\t\tshowDialog: false,\n\t\tshowDetail: false,\n\t\tskipClear: false,\n\n\t\tposition: null,\n\n\t\tselectMenu: null,\n\t\timportMenu: null,\n\n\t\tmemberCount: null,\n\n\t\tnewMember: null,\n\t\tnewMemberWage: null,\n\t\tgroups: null,\n\t\tmembers: null,\n\t\tcurrentMember: null,\n\t\tnewMembersArray: null,\n\n\t\tnewGroupName: '',\n\n\t\tselectedGroup: null,\n\t\tgroupMembers: null,\n\n\t\tshouldAddGroup: false,\n\n\t\tfirstNameHeader: null,\n\t\tlastNameHeader: null,\n\t\temployeeIdHeader: null,\n\t\tpayrollRateHeader: null,\n\t\tpayrollTypeHeader: null,\n\t\tphoneHeader: null,\n\t\temailHeader: null,\n\n\t\tshowMoveGroupDialog: false,\n\t\tshowClockInDialog: false,\n\t\tshownewTimeOffDialog: false,\n\t\tshowSwitchDialog: false,\n\t\tshowArchiveDialog: false,\n\t\tshowUpgradeDialog: false,\n\t\tshowSubscriptionDialog: false,\n\t\tshowImportDialog: false,\n\t\tshowLockDateDialog: false,\n\t\tshowSafetySignOffDialog: false,\n\t\tshowGpsLocationRequiredDialog: false,\n\n\t\thideRowActions: false,\n\n\t\tsendEmailInvite: false,\n\t\tsendTextInvite: false,\n\t\tmanualInvite: false,\n\t\trequirePassword: false,\n\n\t\tshowHelpDialog: false,\n\t\tdebugMode: _settings.default.get('debug_mode'),\n\n\t\tentryConflictCutoff: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tvar previousPayPeriod = Ember.get(this, 'payPeriodUtils').getPreviousPayPeriod();\n\t\t\tvar entryConflictCutoff = Ember.get(previousPayPeriod, 'startDate').unix();\n\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'groupMembers', []);\n\t\t\tEmber.set(this, 'entryConflictCutoff', entryConflictCutoff);\n\n\t\t\t// loads the organization\n\t\t\tEmber.get(this, 'auth.organization');\n\t\t\tEmber.get(this, 'auth.memberCount');\n\n\t\t\tthis.isEditMode();\n\t\t\tthis.setupMenu();\n\t\t},\n\n\n\t\tmodelFilteredByPermission: Ember.computed('model', 'edit', 'editAction', 'auth.authMemberPosition.id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tEmber.get(this, 'auth.authMemberPosition.id');\n\n\t\t\tvar model = Ember.get(this, 'model');\n\t\t\tif (Ember.get(this, 'edit') && !Ember.isNone(Ember.get(this, 'editAction'))) {\n\t\t\t\tmodel = model.filter(function (member) {\n\t\t\t\t\treturn _this.canTakeAction(member, Ember.get(_this, 'editAction'));\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn model.sortBy('fullName');\n\t\t}),\n\n\t\tisEditMode: Ember.observer('filter', function () {\n\t\t\tif (!Ember.isNone(Ember.get(this, 'filter'))) {\n\t\t\t\tEmber.set(this, 'edit', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'edit', false);\n\t\t\t}\n\t\t}),\n\n\t\tcanManageEmployeeGroups: Ember.computed('auth.{useGroupPermissionScoping,authMemberPosition.manageEmployeeGroups}', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageEmployeeGroups') && !Ember.get(this, 'auth.useGroupPermissionScoping');\n\t\t}),\n\n\t\tcanManageEmployees: Ember.computed('auth.authMemberPosition.id', function () {\n\t\t\tif (!Ember.isNone(Ember.get(this, 'auth.authMemberPosition.id'))) {\n\t\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageEmployees') > 0 || Ember.get(this, 'auth.authMemberPosition.manageTime') > 0 || Ember.get(this, 'auth.authMemberPosition.timeEvents') > 0 || Ember.get(this, 'auth.authMemberPosition.manageEmployeeGroups');\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tcanAddEmployees: Ember.computed('auth.{authMemberPosition.manageEmployees,member.memberGroupId,useGroupPermissionScoping}', 'group', function () {\n\t\t\tvar canPositionManageEmployees = Ember.get(this, 'auth.authMemberPosition.manageEmployees') > 1;\n\t\t\tvar isViewingArchived = Ember.get(this, 'group') === 'archived';\n\t\t\tvar useGroupPermissionScoping = Ember.get(this, 'auth.useGroupPermissionScoping');\n\t\t\tvar memberGroupId = Ember.get(this, 'auth.member.memberGroupId');\n\n\t\t\t// if the Group Scoped Permissions feature is enabled,\n\t\t\t// \tand the current user doesn't have a group, they cannot add employees\n\t\t\tif (useGroupPermissionScoping && Ember.isNone(memberGroupId)) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn canPositionManageEmployees && !isViewingArchived;\n\t\t\t}\n\t\t}),\n\n\t\tcanViewCostCodes: Ember.computed.and('features.costCodes', 'auth.organization.trackCostCode'),\n\n\t\tcanViewEquipment: Ember.computed.bool('features.equipment'),\n\n\t\thasRowActions: Ember.computed('canManageEmployees', 'hideRowActions', function () {\n\t\t\treturn Ember.get(this, 'canManageEmployees') && !Ember.get(this, 'hideRowActions');\n\t\t}),\n\n\t\ttotalRows: Ember.computed('model.@each.id', function () {\n\t\t\tvar rows = 0;\n\t\t\tvar meta = Ember.get(this, 'model.meta');\n\t\t\tif (!Ember.isNone(meta)) {\n\t\t\t\trows = meta.totalRows;\n\t\t\t}\n\t\t\treturn rows;\n\t\t}),\n\n\t\tcanViewManagementTools: Ember.computed('canManageEmployees', 'auth.authMemberPosition.manageEmployees', 'features.managementListsEmployees', function () {\n\t\t\tvar canManageEmployees = Ember.get(this, 'auth.authMemberPosition.manageEmployees') > 0;\n\t\t\tvar isFeatureEnabled = Ember.get(this, 'features.managementListsEmployees');\n\n\t\t\treturn canManageEmployees && isFeatureEnabled;\n\t\t}),\n\n\t\tsetupMenu: Ember.observer('group', function () {\n\t\t\tif (Ember.get(this, 'group') === 'archived') {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({\n\t\t\t\t\tkey: 'unarchive',\n\t\t\t\t\tvalue: (0, _utils.loc)('Unarchive'),\n\t\t\t\t\tpermissions: ['manageEmployees', 'isNotSelf']\n\t\t\t\t})]);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({\n\t\t\t\t\tkey: 'clock-in',\n\t\t\t\t\tvalue: (0, _utils.loc)('Clock In'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['!clockedIn']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'clock-out',\n\t\t\t\t\tvalue: (0, _utils.loc)('Clock Out'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['clockedIn', '!onBreak']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'go-on-break',\n\t\t\t\t\tvalue: (0, _utils.loc)('Go on Break'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['clockedIn', '!onBreak']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'go-off-break',\n\t\t\t\t\tvalue: (0, _utils.loc)('End Break'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['onBreak']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'switch',\n\t\t\t\t\tvalue: (0, _utils.loc)('Switch'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['clockedIn', '!onBreak']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'move-to-group',\n\t\t\t\t\tvalue: (0, _utils.loc)('Move to Group'),\n\t\t\t\t\tpermissions: ['manageEmployeeGroups']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'clock-in-at',\n\t\t\t\t\tvalue: (0, _utils.loc)('Clock In At'),\n\t\t\t\t\tpermissions: ['manageTimeEntries'],\n\t\t\t\t\tfilters: ['!clockedIn']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'clock-out-at',\n\t\t\t\t\tvalue: (0, _utils.loc)('Clock Out At'),\n\t\t\t\t\tpermissions: ['manageTimeEntries'],\n\t\t\t\t\tfilters: ['clockedIn', '!onBreak']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'archive',\n\t\t\t\t\tvalue: (0, _utils.loc)('Archive'),\n\t\t\t\t\tpermissions: ['manageEmployees', 'isNotSelf', 'isNotOwner'],\n\t\t\t\t\tfilters: []\n\t\t\t\t}), Ember.Object.create({ key: 'new-time-entry', value: (0, _utils.loc)('New Time Entry'), permissions: ['manageTimeEntries'] }), Ember.Object.create({ key: 'new-time-off', value: (0, _utils.loc)('Add Time Off'), permissions: ['manageTimeEntries'] }), Ember.Object.create({\n\t\t\t\t\tkey: 'locations',\n\t\t\t\t\tvalue: (0, _utils.loc)('View Location'),\n\t\t\t\t\tpermissions: ['timeEvents'],\n\t\t\t\t\tfilters: ['clockedIn', 'hasLocation']\n\t\t\t\t}), Ember.Object.create({\n\t\t\t\t\tkey: 'edit-lock-date',\n\t\t\t\t\tvalue: (0, _utils.loc)('Edit Lock Date'),\n\t\t\t\t\tpermissions: ['memberLock', 'features.locks']\n\t\t\t\t})]\n\t\t\t\t// EmberObject.create({key: 'invite', value: 'Invite to busybusy', permissions: ['manageEmployees']})\n\t\t\t\t);\n\t\t\t}\n\t\t}),\n\n\t\tpositionsMenu: Ember.computed('auth.{positions.[],authMemberPosition.level}', function () {\n\t\t\tvar memberPosition = Ember.get(this, 'auth.authMemberPosition');\n\t\t\tvar positions = Ember.get(this, 'auth.positions');\n\t\t\tif (!Ember.isNone(memberPosition) && !Ember.isNone(positions)) {\n\t\t\t\tvar allowedPositions = positions.filter(function (position) {\n\t\t\t\t\treturn Ember.get(memberPosition, 'level') <= Ember.get(position, 'level');\n\t\t\t\t});\n\t\t\t\treturn allowedPositions;\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\t// get a filtered SelectMenu containing only the actions available for the current user\n\t\tallowedSelectMenu: Ember.computed('selectMenu', 'model', 'auth.authMemberPosition.id', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar filterablePermissions = ['manageEmployees', 'timeEvents', 'manageTimeEntries', 'manageEmployeeGroups', 'memberLock'];\n\t\t\tEmber.get(this, 'auth.authMemberPosition.id');\n\n\t\t\treturn Ember.get(this, 'selectMenu').filter(function (entry) {\n\t\t\t\t// make sure the current user can take all applicable `permissions` attached to the select menu entry\n\t\t\t\t// if they are \"self\" or higher, they should get the menu option\n\t\t\t\treturn Ember.get(entry, 'permissions').reduce(function (result, permission) {\n\t\t\t\t\tif (filterablePermissions.indexOf(permission) !== -1) {\n\t\t\t\t\t\treturn result && Ember.get(_this2, 'access').hasPermissionFor(permission); // valid results are `true` and `>= 1`, fails are `false` and `0`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn result && true; // make everything else have no effect\n\t\t\t\t\t}\n\t\t\t\t}, true);\n\t\t\t});\n\t\t}),\n\n\t\tgpsLocationMenu: Ember.computed('newMember.timeLocationRequired', function () {\n\t\t\tvar curentValue = this.get('newMember.timeLocationRequired');\n\n\t\t\tvar options = [Ember.Object.create({ key: 'YES', title: (0, _utils.loc)('Required'), _selected: curentValue === 'YES' }), Ember.Object.create({ key: 'AUTO', title: (0, _utils.loc)('Not Required'), _selected: curentValue === 'AUTO' }), Ember.Object.create({ key: 'NO', title: (0, _utils.loc)('Off'), _selected: curentValue === 'NO' })];\n\n\t\t\t// If the account is not pro, the only option is the current value\n\t\t\tif (!Ember.get(this, 'features.memberGpsSetting')) {\n\t\t\t\toptions.forEach(function (item) {\n\t\t\t\t\tvar _unselectable = Ember.get(item, 'key') !== curentValue;\n\t\t\t\t\tEmber.setProperties(item, { _unselectable: _unselectable });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}),\n\n\t\t// tests if the current user can take the specified action on any of the provided members\n\t\tcanTakeActionForAnyOf: function canTakeActionForAnyOf(permission, members) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn members.reduce(function (result, member) {\n\t\t\t\treturn result || Ember.get(_this3, 'access').canTakeActionFor(permission, member);\n\t\t\t}, false);\n\t\t},\n\t\tgetGroups: function getGroups() {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn (0, _debug.component_safe_api)(function () {\n\t\t\t\treturn _this4.store.query('member-group', { _asc: ['group_name'], page_size: 10000 }).then(function (models) {\n\t\t\t\t\treturn Ember.set(_this4, 'groups', models);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tupdateList: function updateList(type) {\n\t\t\tvar params = {\n\t\t\t\tfilter: type,\n\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t};\n\n\t\t\tif (type === 'unarchive') {\n\t\t\t\tparams.group === 'archived';\n\t\t\t}\n\n\t\t\tthis.sendFilter(params);\n\t\t},\n\t\tvalidateFilters: function validateFilters(options) {\n\t\t\tvar isAll = Ember.isNone(options.group);\n\t\t\tvar isUngrouped = !Ember.isNone(options.group) && options.group === 'ungrouped';\n\t\t\tvar isArchived = !Ember.isNone(options.group) && options.group !== 'archived';\n\n\t\t\tif ((!Ember.isEmpty(options.search) || !isAll && !isUngrouped && !isArchived || !Ember.isNone(options.filter)) && !options.page) {\n\t\t\t\toptions.page = 1;\n\t\t\t\toptions.page_size = 1000;\n\t\t\t} else if ((isUngrouped || isArchived) && !options.page) {\n\t\t\t\toptions.page = 1;\n\t\t\t\toptions.page_size = Ember.get(this, 'page_size');\n\t\t\t}\n\n\t\t\toptions.filter = Ember.isNone(options.filter) ? null : options.filter;\n\t\t\toptions.group = Ember.isNone(options.group) ? null : options.group;\n\t\t\toptions.search = Ember.isEmpty(options.search) ? '' : options.search;\n\n\t\t\treturn true;\n\t\t},\n\t\tunarchive: function unarchive(items) {\n\t\t\tvar _this5 = this;\n\n\t\t\tif (this.usersLeft() >= Ember.get(items, 'length')) {\n\t\t\t\tvar promise = items.map(function (item) {\n\t\t\t\t\tEmber.set(item, 'archivedOn', '_-NULL-_');\n\t\t\t\t\treturn Ember.RSVP.resolve(item.save());\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\t\treturn Ember.get(_this5, 'subscription').reloadSubscriptionSize();\n\t\t\t\t}).finally(function () {\n\t\t\t\t\treturn _this5.refreshRoute();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.set(this, 'showUpgradeDialog', true);\n\t\t\t}\n\t\t},\n\t\tfilterList: function filterList(list, type) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar nlist = list.filter(function (item) {\n\t\t\t\tif (_this6.canTakeAction(item, type)) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn nlist;\n\t\t},\n\t\tcanTakeAction: function canTakeAction(member, action) {\n\t\t\tvar accessManager = Ember.get(this, 'access');\n\t\t\tvar authUser = Ember.get(this, 'auth.member');\n\t\t\tvar hasPermission = false;\n\n\t\t\tif (action === 'clock-in') {\n\t\t\t\tif (!Ember.get(member, 'clockedIn')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('timeEvents', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'clock-out' || action === 'go-on-break' || action === 'switch') {\n\t\t\t\tif (Ember.get(member, 'clockedIn') && !Ember.get(member, 'onBreak')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('timeEvents', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'go-off-break') {\n\t\t\t\tif (Ember.get(member, 'onBreak')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('timeEvents', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'clock-in-at') {\n\t\t\t\tif (!Ember.get(member, 'clockedIn')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('manageTimeEntries', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'clock-out-at') {\n\t\t\t\tif (Ember.get(member, 'clockedIn') && !Ember.get(member, 'onBreak')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('manageTimeEntries', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'locations') {\n\t\t\t\tif (Ember.get(member, 'clockedIn') && Ember.get(member, 'hasLocation')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('timeEvents', member);\n\t\t\t\t}\n\t\t\t} else if (action === 'new-time-entry') {\n\t\t\t\thasPermission = accessManager.canTakeActionFor('timeEvents', member);\n\t\t\t} else if (action === 'new-time-off') {\n\t\t\t\thasPermission = accessManager.canTakeActionFor('manageTimeEntries', member);\n\t\t\t} else if (action === 'move-to-group') {\n\t\t\t\thasPermission = accessManager.hasPermissionFor('manageEmployeeGroups', member);\n\t\t\t} else if (action === 'archive') {\n\t\t\t\tif (!Ember.get(member, 'clockedIn')) {\n\t\t\t\t\thasPermission = accessManager.canTakeActionFor('manageEmployees', member) && !accessManager.isOwner(member) && Ember.get(member, 'id') !== Ember.get(authUser, 'id');\n\t\t\t\t}\n\t\t\t} else if (action === 'unarchive') {\n\t\t\t\thasPermission = accessManager.canTakeActionFor('manageEmployees', member) && Ember.get(member, 'id') !== Ember.get(authUser, 'id');\n\t\t\t} else if (action === 'invite') {\n\t\t\t\thasPermission = hasPermission = accessManager.canTakeActionFor('manageEmployees', member) && !accessManager.isOwner(member) && Ember.get(member, 'id') !== Ember.get(authUser, 'id');\n\t\t\t} else if (action === 'edit-lock-date') {\n\t\t\t\thasPermission = accessManager.canTakeActionFor('memberLock', member);\n\t\t\t}\n\n\t\t\treturn hasPermission;\n\t\t},\n\n\n\t\teditAction: null,\n\t\teditItems: null,\n\n\t\t/**\n   * Clears the edit action\n   *\n   * @public\n   * @method clearEdit\n   */\n\t\tclearEdit: function clearEdit() {\n\t\t\t// bc-list sets isSelected on the model\n\t\t\t// so loop through the models and set isSelected\n\t\t\t// to false to uncheck the checkboxes\n\t\t\tEmber.get(this, 'editItems').forEach(function (item) {\n\t\t\t\tEmber.set(item, 'isSelected', false);\n\t\t\t});\n\n\t\t\t// set local vars back to defaults\n\t\t\tEmber.set(this, 'editAction', null);\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'edit', false);\n\t\t\tEmber.set(this, 'hideRowActions', false);\n\n\t\t\tif (!Ember.get(this, 'skipClear')) {\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t\t\t// filter: get(this, 'filter'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\topenTaskItems: null,\n\n\t\tdispatchTask: function dispatchTask(action, items) {\n\t\t\tEmber.set(this, 'openTaskItems', items);\n\n\t\t\tif (this.isGpsLocationRequiredForAction(action, items)) {\n\t\t\t\tthis.send('openDialog', 'GpsLocationRequiredDialog');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (action === 'clock-in') {\n\t\t\t\tEmber.set(this, 'showClockInDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('clock_in', items.length);\n\t\t\t} else if (action === 'clock-out') {\n\t\t\t\tthis.clockOutMembers(items);\n\t\t\t\tthis.graylogEmployeeGroupAction('clock_out', items.length);\n\t\t\t} else if (action === 'go-on-break') {\n\t\t\t\titems.forEach(function (item) {\n\t\t\t\t\treturn item.startBreak(false, false);\n\t\t\t\t});\n\t\t\t\tthis.graylogEmployeeGroupAction('start_break', items.length);\n\t\t\t} else if (action === 'go-off-break') {\n\t\t\t\titems.forEach(function (item) {\n\t\t\t\t\treturn item.stopBreak(false);\n\t\t\t\t});\n\t\t\t\tthis.graylogEmployeeGroupAction('end_break', items.length);\n\t\t\t} else if (action === 'new-time-entry') {\n\t\t\t\tEmber.set(this, 'showNewTimeEntryDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('new_entry', items.length);\n\t\t\t} else if (action === 'new-time-off') {\n\t\t\t\tEmber.set(this, 'showNewTimeOffDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('time_off', items.length);\n\t\t\t} else if (action === 'switch') {\n\t\t\t\tEmber.set(this, 'showSwitchDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('switch', items.length);\n\t\t\t} else if (action === 'move-to-group') {\n\t\t\t\tif (!Ember.isNone(items) && Ember.get(items, 'length') > 0) {\n\t\t\t\t\tEmber.set(this, 'groupMembers', items);\n\t\t\t\t\tEmber.set(this, 'showMoveGroupDialog', true);\n\t\t\t\t}\n\t\t\t\tthis.graylogEmployeeGroupAction('move_to_group', items.length);\n\t\t\t} else if (action === 'locations') {\n\t\t\t\tEmber.set(this, 'skipClear', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('view_location', items.length);\n\t\t\t\tthis.transitionToRoute('employees.locations', { queryParams: { ids: items.mapBy('id'), from: 'employees' } });\n\t\t\t} else if (action === 'archive') {\n\t\t\t\tif (Ember.get(items, 'length') < 2) {\n\t\t\t\t\tEmber.set(this, 'currentMember', Ember.get(items, 'firstObject'));\n\t\t\t\t}\n\t\t\t\tthis.graylogEmployeeGroupAction('archive', items.length);\n\t\t\t\tEmber.set(this, 'members', items);\n\t\t\t\tEmber.set(this, 'showArchiveDialog', true);\n\t\t\t} else if (action === 'unarchive') {\n\t\t\t\tthis.unarchive(items);\n\t\t\t\tthis.graylogEmployeeGroupAction('unarchive', items.length);\n\t\t\t} else if (action === 'clock-in-at') {\n\t\t\t\tEmber.set(this, 'showClockInAtDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('clock_in_at', items.length);\n\t\t\t} else if (action === 'clock-out-at') {\n\t\t\t\tEmber.set(this, 'showClockOutAtDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('clock_out_at', items.length);\n\t\t\t} else if (action === 'edit-lock-date') {\n\t\t\t\tEmber.set(this, 'showLockDateDialog', true);\n\t\t\t\tthis.graylogEmployeeGroupAction('lock_date', items.length);\n\t\t\t}\n\t\t},\n\t\tisGpsLocationRequiredForAction: function isGpsLocationRequiredForAction(action, items) {\n\t\t\tvar restrictedActions = ['clock-in', 'clock-out', 'go-on-break', 'go-off-break', 'switch'];\n\n\t\t\treturn restrictedActions.includes(action) && items.any(function (member) {\n\t\t\t\treturn member.get('isTimeLocationRequired');\n\t\t\t});\n\t\t},\n\t\tclockOutMembers: function clockOutMembers(items) {\n\t\t\tvar _this7 = this;\n\n\t\t\t// show safetySignOff dialog if the items array is only one member and that member is the auth member\n\t\t\tif (Ember.get(this, 'features.safetySignOff') && (Ember.get(this, 'auth.organization.safetySignature') || Ember.get(this, 'auth.organization.timeAccuracy'))) {\n\t\t\t\tif (Ember.get(items, 'length') === 1 && Ember.get(items, 'firstObject.id') === Ember.get(this, 'auth.member.id')) {\n\t\t\t\t\tEmber.set(this, 'openEntry', Ember.get(items, 'firstObject.openEntry'));\n\t\t\t\t\tEmber.set(this, 'showSafetySignOffDialog', true);\n\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this._clockOutMembers(items).then(function () {\n\t\t\t\tif (Ember.get(_this7, 'features.safetySignOff') && (Ember.get(_this7, 'auth.organization.safetySignature') || Ember.get(_this7, 'auth.organization.timeAccuracy'))) {\n\t\t\t\t\tEmber.set(_this7, 'showSignOffRequiredDialog', true);\n\t\t\t\t} else {\n\t\t\t\t\t_this7.refreshRoute();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t_clockOutMembers: function _clockOutMembers(items) {\n\t\t\tvar promise = [];\n\t\t\titems.forEach(function (item) {\n\t\t\t\tif (!Ember.isNone(Ember.get(item, 'openEntry'))) {\n\t\t\t\t\tpromise.push(item.clockOut(false));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn Ember.RSVP.allSettled(promise).then(function (data) {\n\t\t\t\treturn Ember.RSVP.resolve(data);\n\t\t\t});\n\t\t},\n\t\taddMemberToGroup: function addMemberToGroup(group) {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar groupId = null;\n\t\t\tif (!Ember.isNone(group)) {\n\t\t\t\tgroupId = Ember.get(group, 'id');\n\t\t\t}\n\n\t\t\tEmber.RSVP.all(Ember.get(this, 'groupMembers').map(function (item) {\n\t\t\t\tEmber.set(item, 'memberGroupId', groupId);\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\tEmber.set(_this8, 'showMoveGroupDialog', false);\n\t\t\t\tEmber.set(_this8, 'groupMembers', []);\n\t\t\t\tEmber.set(_this8, 'selectedGroup', null);\n\t\t\t\t_this8.refreshRoute();\n\t\t\t});\n\t\t},\n\t\tusersLeft: function usersLeft() {\n\t\t\treturn Ember.get(this, 'subscription.membersAvailable');\n\t\t},\n\t\tcheckUsersAvailable: function checkUsersAvailable() {\n\t\t\treturn this.usersLeft() > 0;\n\t\t},\n\t\t_createGroup: function _createGroup(groupName) {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar organizationId = Ember.get(this, 'auth.organization.id');\n\t\t\treturn this.store.createRecord('member-group', { groupName: groupName, organizationId: organizationId }).save().finally(function () {\n\t\t\t\treturn _this9.getGroups();\n\t\t\t});\n\t\t},\n\t\tgeneratePassword: function generatePassword() {\n\t\t\tvar now = _utils.Time.date();\n\t\t\tvar orgName = Ember.get(this, 'auth.organization.organizationName').trim().toLowerCase().slice(0, 6);\n\t\t\treturn orgName + now.format('DDMM');\n\t\t},\n\n\n\t\trequirePasswordObserver: Ember.observer('manualInvite', function () {\n\t\t\tif (Ember.get(this, 'manualInvite')) {\n\t\t\t\tEmber.set(this, 'requirePassword', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'requirePassword', false);\n\t\t\t}\n\t\t}),\n\n\t\trefreshRoute: function refreshRoute() {\n\t\t\tthis.send('refreshModel');\n\t\t},\n\t\tanalyticsAddFilterEvent: function analyticsAddFilterEvent(element) {\n\t\t\t// Element values are one of the following: All, Archived, Ungrouped, Group, Search\n\t\t\tEmber.get(this, 'analytics').addEvent(61, { element: element });\n\t\t},\n\t\tanalyticsAddSearchEvent: function analyticsAddSearchEvent(keyword) {\n\t\t\t// The search event should only fire when the user enters one or more character and it should be throttled to 1 event per 5 second windows.\n\t\t\tif (keyword && keyword.length > 1) {\n\t\t\t\tEmber.run.throttle(this, 'analyticsAddFilterEvent', 'Search', 5 * 1000);\n\t\t\t}\n\t\t},\n\n\n\t\tarchiveDialogMessage: Ember.computed('currentMember', function () {\n\t\t\tvar memberText = (0, _utils.loc)('these employees');\n\t\t\tif (!Ember.isNone(Ember.get(this, 'currentMember.fullName'))) {\n\t\t\t\tmemberText = Ember.get(this, 'currentMember.fullName');\n\t\t\t}\n\t\t\treturn (0, _utils.loc)('Are you sure you want to archive ') + memberText + '?';\n\t\t}),\n\n\t\t_archiveMember: function _archiveMember() {\n\t\t\tvar _this10 = this;\n\n\t\t\tvar members = Ember.get(this, 'members');\n\t\t\tvar today = _utils.Time.timestamp();\n\n\t\t\treturn this._clockOutMembers(members).then(function () {\n\t\t\t\tvar promise = [];\n\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\t// dont archive self or owner.\n\t\t\t\t\tif (Ember.get(member, 'id') !== Ember.get(_this10, 'auth.member.id') || Ember.get(member, 'id') !== Ember.get(_this10, 'auth.organization.ownedBy')) {\n\t\t\t\t\t\tEmber.set(member, 'archivedOn', today);\n\t\t\t\t\t\tpromise.push(member.save());\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.allSettled(promise).then(function () {\n\t\t\t\t\tEmber.set(_this10, 'members', null);\n\t\t\t\t\tEmber.set(_this10, 'currentMember', null);\n\t\t\t\t\tEmber.get(_this10, 'subscription').subtractSubscriptionMember();\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsaveNewMemberWage: function saveNewMemberWage(member) {\n\t\t\tvar _this11 = this;\n\n\t\t\tvar newMemberWage = Ember.get(this, 'newMemberWage');\n\t\t\tvar store = Ember.get(this, 'store');\n\n\t\t\treturn store.queryRecord('wage-history', { member_id: Ember.get(member, 'id'), page_size: 1 }).then(function (wage) {\n\t\t\t\tif (Ember.isNone(wage)) {\n\t\t\t\t\tvar currentPayPeriod = Ember.get(_this11, 'payPeriodUtils').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\t\twage = store.createRecord('wage-history', {\n\t\t\t\t\t\twageRate: 10, // hourly\n\t\t\t\t\t\toverburden: 0,\n\t\t\t\t\t\tchangeDate: Ember.get(currentPayPeriod, 'start'),\n\t\t\t\t\t\tworkWeek: '_-NULL-_'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tEmber.set(wage, 'wage', Ember.getWithDefault(newMemberWage, 'wage', 0));\n\t\t\t\treturn wage.save();\n\t\t\t});\n\t\t},\n\t\tappcuesEvent: function appcuesEvent(eventName) {\n\t\t\tvar data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tif (window.Appcues && typeof window.Appcues.track === 'function') {\n\t\t\t\twindow.Appcues.track(eventName, data);\n\t\t\t\twindow.Appcues.page();\n\t\t\t}\n\t\t},\n\t\tappcuesEventAddEmployee: function appcuesEventAddEmployee() {\n\t\t\tvar _this12 = this;\n\n\t\t\tEmber.RSVP.resolve(Ember.get(this, 'auth.memberCount')).then(function (memberCount) {\n\t\t\t\tvar totalEmployees = memberCount - 1; // owner doesn't count\n\t\t\t\tvar addedFirstMember = totalEmployees === 1;\n\n\t\t\t\tif (addedFirstMember) {\n\t\t\t\t\t_this12.appcuesEvent('employees:addFirstEmployee', {});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t// when a group is deleted, ungroup all the members which were assigned to it\n\t\tungroupOrphans: function ungroupOrphans(group) {\n\t\t\tvar _this13 = this;\n\n\t\t\t_logger.default.info(this, 'ungroupOrphans', group, Ember.get(group, 'id'));\n\n\t\t\tif (Ember.isNone(group)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tvar member_group_id = Ember.get(group, 'id');\n\t\t\tvar params = {\n\t\t\t\tmember_group_id: member_group_id,\n\t\t\t\tpage_size: 1000\n\t\t\t};\n\n\t\t\tEmber.set(this, 'isLoading', true);\n\t\t\treturn Ember.get(this, 'store').findAll('member', params).then(function (members) {\n\t\t\t\tmembers.setEach('memberGroupId', null);\n\n\t\t\t\treturn Ember.RSVP.all(members.invoke('save'));\n\t\t\t}).then(function () {\n\t\t\t\treturn _this13.refreshRoute();\n\t\t\t}).finally(function () {\n\t\t\t\treturn Ember.set(_this13, 'isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/* Graylog events */\n\n\t\tgraylogAddedEmployee: function graylogAddedEmployee(position) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Added Employee',\n\t\t\t\tfull_message: 'Added Employee',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_new_employee_position: position\n\t\t\t});\n\t\t},\n\t\tgraylogEmployeeGroupAction: function graylogEmployeeGroupAction(actionType, selectedEmployeeCount) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Employee Group Action',\n\t\t\t\tfull_message: 'Employee Group Action',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_action_type: actionType,\n\t\t\t\t_selected_employee_count: selectedEmployeeCount\n\t\t\t});\n\t\t},\n\n\n\t\tpasswordRequirement: Ember.computed('newMember.password', function () {\n\t\t\tif (this.get('newMember.password.length') < 8) {\n\t\t\t\treturn 'Password must be at least 8 characters';\n\t\t\t}\n\t\t\treturn;\n\t\t}),\n\n\t\tactions: {\n\t\t\taddMemberToGroupAction: function addMemberToGroupAction(member) {\n\t\t\t\tthis.addMemberToGroup(member);\n\t\t\t},\n\t\t\ttoggleDetail: function toggleDetail() {\n\t\t\t\tEmber.set(this, 'showDetail', !Ember.get(this, 'showDetail'));\n\t\t\t},\n\t\t\tteamMemberClicked: function teamMemberClicked(item) {\n\t\t\t\tif (!Ember.get(this, 'edit')) {\n\t\t\t\t\tthis.transitionToRoute('employees.employee', Ember.get(item, 'id'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tteamMemberSelected: function teamMemberSelected(isChecked, item) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.get(this, 'editItems').pushObject(item);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.get(this, 'editItems').removeObject(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectAll: function selectAll(isChecked, items) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.set(this, 'editItems', items);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'editItems', []);\n\t\t\t\t}\n\t\t\t},\n\t\t\teditListAction: function editListAction(action) {\n\t\t\t\tvar _this14 = this;\n\n\t\t\t\tEmber.set(this, 'editAction', Ember.get(action, 'key'));\n\t\t\t\tEmber.set(this, 'hideRowActions', true);\n\n\t\t\t\tthis.updateList(Ember.get(action, 'key'));\n\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\treturn Ember.set(_this14, 'edit', true);\n\t\t\t\t}, 300);\n\t\t\t},\n\t\t\tsubmitEditAction: function submitEditAction() {\n\t\t\t\tif (Ember.get(this, 'editItems').length > 0) {\n\t\t\t\t\tthis.dispatchTask(Ember.get(this, 'editAction'), Ember.get(this, 'editItems'));\n\t\t\t\t}\n\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tcancelEditAction: function cancelEditAction() {\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\topenMemberDialog: function openMemberDialog() {\n\t\t\t\tvar position = Ember.get(this, 'auth.positions.lastObject');\n\t\t\t\tvar canAddEmployee = this.checkUsersAvailable();\n\n\t\t\t\tif (canAddEmployee) {\n\t\t\t\t\t// When Group Permissions Scoping is enabled, assign the new member to the same group as the auth member\n\t\t\t\t\tvar memberGroupId = Ember.get(this, 'auth.useGroupPermissionScoping') ? Ember.get(this, 'auth.member.memberGroupId') : null;\n\n\t\t\t\t\tvar member = Ember.get(this, 'store').createRecord('member', {\n\t\t\t\t\t\torganizationId: Ember.get(this, 'auth.organization.id'),\n\t\t\t\t\t\tposition: position,\n\t\t\t\t\t\tmemberGroupId: memberGroupId\n\t\t\t\t\t});\n\n\t\t\t\t\tvar wage = Ember.get(this, 'store').createRecord('wage-history', {\n\t\t\t\t\t\twage: 0\n\t\t\t\t\t});\n\n\t\t\t\t\tEmber.set(this, 'newMember', member);\n\t\t\t\t\tEmber.set(this, 'newMemberWage', wage);\n\t\t\t\t\tEmber.set(this, 'showDialog', true);\n\t\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'showUpgradeDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectNewMemberPosition: function selectNewMemberPosition(position) {\n\t\t\t\tEmber.set(this, 'newMember.position', position);\n\t\t\t},\n\t\t\tselectGpsLocation: function selectGpsLocation(item) {\n\t\t\t\tthis.set('newMember.timeLocationRequired', item.get('key'));\n\t\t\t},\n\t\t\tcloseMemberDialog: function closeMemberDialog() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tEmber.get(this, 'newMember').rollbackAttributes();\n\t\t\t\tEmber.set(this, 'newMember', null);\n\t\t\t\tEmber.set(this, 'manualInvite', false);\n\t\t\t\tEmber.set(this, 'requirePassword', false);\n\t\t\t\tEmber.set(this, 'sendEmailInvite', false);\n\t\t\t\tEmber.set(this, 'sendTextInvite', false);\n\t\t\t},\n\t\t\tcloseUpgradeDialog: function closeUpgradeDialog() {\n\t\t\t\tEmber.set(this, 'showUpgradeDialog', false);\n\t\t\t},\n\t\t\tcloseSubscriptionDialog: function closeSubscriptionDialog() {\n\t\t\t\tEmber.set(this, 'showSubscriptionDialog', false);\n\t\t\t},\n\t\t\tgoToCompanySettings: function goToCompanySettings() {\n\t\t\t\tEmber.set(this, 'showSubscriptionDialog', false);\n\t\t\t\tEmber.set(this, 'showUpgradeDialog', false);\n\t\t\t\twindow.location = '/company-settings#tab-subscription';\n\t\t\t},\n\t\t\tsaveNewMember: function saveNewMember() {\n\t\t\t\tvar _this15 = this;\n\n\t\t\t\tvar newMember = Ember.get(this, 'newMember');\n\n\t\t\t\tvar member = Ember.get(this, 'store').createRecord('member', {\n\t\t\t\t\tfirstName: Ember.getWithDefault(newMember, 'firstName', '').trim(),\n\t\t\t\t\tlastName: Ember.getWithDefault(newMember, 'lastName', '').trim(),\n\t\t\t\t\tusername: Ember.getWithDefault(newMember, 'username', '').trim(),\n\t\t\t\t\tpassword: Ember.get(newMember, 'password'),\n\t\t\t\t\tpendingEmail: Ember.getWithDefault(newMember, 'pendingEmail', '').trim(),\n\t\t\t\t\tphone: Ember.getWithDefault(newMember, 'phone', '').trim(),\n\t\t\t\t\tmemberNumber: Ember.getWithDefault(newMember, 'memberNumber', '').trim(),\n\t\t\t\t\torganizationId: Ember.get(newMember, 'organizationId'),\n\t\t\t\t\tpositionId: Ember.get(newMember, 'position.id'),\n\t\t\t\t\tsendEmail: Ember.get(this, 'sendEmailInvite'),\n\t\t\t\t\tsendText: Ember.get(this, 'sendTextInvite'),\n\t\t\t\t\ttimeLocationRequired: Ember.get(newMember, 'timeLocationRequired'),\n\t\t\t\t\tmemberGroupId: Ember.get(newMember, 'memberGroupId'),\n\t\t\t\t\tpinCode: Ember.get(newMember, 'pinCode')\n\t\t\t\t});\n\n\t\t\t\t// if (isEmpty(get(member, 'password')) && !get(this, 'requirePassword')) {\n\t\t\t\t// \tlet password = this.generatePassword();\n\t\t\t\t// \tset(member, 'password', password);\n\t\t\t\t// }\n\t\t\t\tif (!Ember.isEmpty(Ember.get(member, 'firstName')) && !Ember.isEmpty(Ember.get(member, 'lastName')) && !Ember.isEmpty(Ember.get(member, 'username')) && !Ember.isEmpty(Ember.get(member, 'password')) && !Ember.isEmpty(Ember.get(newMember, 'passwordConfirm'))) {\n\t\t\t\t\t// if (get(member, 'sendEmail') && isEmpty(get(member, 'email'))) {\n\t\t\t\t\t// \treturn reject('Email is required to email instructions to employee');\n\t\t\t\t\t// }\n\t\t\t\t\t//\n\t\t\t\t\t// if (get(member, 'sendText') && isEmpty(get(member, 'phone'))) {\n\t\t\t\t\t// \treturn reject('Phone is required to text instructions to employee');\n\t\t\t\t\t// }\n\t\t\t\t\t//\n\t\t\t\t\t// if (!get(this, 'sendTextInvite') && !get(this, 'sendEmailInvite') && !get(this, 'manualInvite')) {\n\t\t\t\t\t// \treturn reject('You must select an invitation format');\n\t\t\t\t\t// }\n\n\t\t\t\t\tif (Ember.get(member, 'password.length') >= 8) {\n\t\t\t\t\t\tif (Ember.get(newMember, 'passwordConfirm') !== Ember.get(newMember, 'password')) {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Password must match Confirm Password'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!/^\\S{2}\\S*$/.test(Ember.get(member, 'username'))) {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Username must be at least 2 characters.'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isEmpty(Ember.get(member, 'pendingEmail'))) {\n\t\t\t\t\t\t\tif (!/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(Ember.get(member, 'pendingEmail'))) {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Email must be a vaild email address.'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tEmber.set(member, 'pendingEmail', null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Ember.isEmpty(Ember.get(member, 'phone'))) {\n\t\t\t\t\t\t\tEmber.set(member, 'phone', null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isEmpty(Ember.get(member, 'pinCode'))) {\n\t\t\t\t\t\t\tif (!/^[0-9]{4}$/.test(Ember.get(member, 'pinCode'))) {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('PIN code must be 4 numbers'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar wageAmount = Ember.get(this, 'newMemberWage.wage');\n\t\t\t\t\t\tif (wageAmount < 0) {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Pay Rate must be a positive number'));\n\t\t\t\t\t\t} else if (!/^([0-9]*|[0-9]+\\.[0-9]{0,2})$/.test(wageAmount)) {\n\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Pay Rate is an invalid amount'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.store.rpcRequest('account', 'username-available', { username: Ember.get(member, 'username') }).then(function (data) {\n\t\t\t\t\t\t\tif (!data.data) {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('This username is taken. Please choose another.'));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn member.save().then(function (member) {\n\t\t\t\t\t\t\t\t\treturn Ember.get(_this15, 'subscription').addSubscriptionMember() && member;\n\t\t\t\t\t\t\t\t}).then(function (member) {\n\t\t\t\t\t\t\t\t\treturn _this15.saveNewMemberWage(member) && member;\n\t\t\t\t\t\t\t\t}).then(function (member) {\n\t\t\t\t\t\t\t\t\treturn _this15.appcuesEventAddEmployee() && member;\n\t\t\t\t\t\t\t\t}).finally(function () {\n\t\t\t\t\t\t\t\t\t_this15.graylogAddedEmployee(Ember.get(newMember, 'position.title'));\n\t\t\t\t\t\t\t\t\t_this15.send('closeMemberDialog');\n\t\t\t\t\t\t\t\t\t_this15.refreshRoute();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Password is invalid.'));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Please fill out all required fields.'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tarchiveMember: function archiveMember() {\n\t\t\t\tvar _this16 = this;\n\n\t\t\t\tEmber.set(this, 'showArchiveDialog', false);\n\t\t\t\tEmber.set(this, 'isLoading', true);\n\n\t\t\t\tthis._archiveMember().finally(function () {\n\t\t\t\t\tEmber.set(_this16, 'isLoading', false);\n\t\t\t\t\t_this16.refreshRoute();\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseArchiveDialog: function closeArchiveDialog() {\n\t\t\t\tEmber.set(this, 'currentMember', null);\n\t\t\t\tEmber.set(this, 'members', null);\n\t\t\t\tEmber.set(this, 'showArchiveDialog', false);\n\t\t\t},\n\t\t\tcloseClockIn: function closeClockIn() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showClockInDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseNewTimeEntry: function closeNewTimeEntry() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showNewTimeEntryDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseTimeOff: function closeTimeOff() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showNewTimeOffDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseClockInAt: function closeClockInAt() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showClockInAtDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseClockOutAt: function closeClockOutAt() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showClockOutAtDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseSwitchProject: function closeSwitchProject() {\n\t\t\t\tEmber.set(this, 'openTaskItems', null);\n\t\t\t\tEmber.set(this, 'showSwitchDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tsetSelectedGroup: function setSelectedGroup(view, group) {\n\t\t\t\tEmber.set(this, 'selectedGroup', group);\n\t\t\t},\n\t\t\taddNewGroup: function addNewGroup(value) {\n\t\t\t\tthis._createGroup(value);\n\t\t\t},\n\t\t\tcreateGroup: function createGroup() {\n\t\t\t\tvar _this17 = this;\n\n\t\t\t\tvar name = Ember.get(this, 'newGroupName');\n\t\t\t\tif (!Ember.isEmpty(name)) {\n\t\t\t\t\tthis._createGroup(name).then(function () {\n\t\t\t\t\t\tEmber.set(_this17, 'newGroupName', '');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAddGroup: function showAddGroup() {\n\t\t\t\tEmber.set(this, 'shouldAddGroup', !Ember.get(this, 'shouldAddGroup'));\n\t\t\t},\n\t\t\tcloseGroupDialog: function closeGroupDialog() {\n\t\t\t\tEmber.set(this, 'showMoveGroupDialog', false);\n\t\t\t},\n\t\t\trowItemSelectAction: function rowItemSelectAction(action, member) {\n\t\t\t\tthis.dispatchTask(Ember.get(action || {}, 'key'), [member]);\n\t\t\t},\n\t\t\tfilterGroup: function filterGroup(group) {\n\t\t\t\tvar options = {\n\t\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(group, 'id')\n\t\t\t\t};\n\n\t\t\t\tif (options.group === null) {\n\t\t\t\t\tthis.analyticsAddFilterEvent('All');\n\t\t\t\t} else if (options.group === 'ungrouped') {\n\t\t\t\t\tthis.analyticsAddFilterEvent('Ungrouped');\n\t\t\t\t} else if (options.group === 'archived') {\n\t\t\t\t\tthis.analyticsAddFilterEvent('Archived');\n\t\t\t\t} else {\n\t\t\t\t\tthis.analyticsAddFilterEvent('Group');\n\t\t\t\t}\n\n\t\t\t\tthis.sendFilter(options);\n\t\t\t},\n\t\t\tsearchAction: function searchAction(keyword) {\n\t\t\t\tkeyword = !Ember.isEmpty(keyword) ? keyword : '';\n\t\t\t\tthis.analyticsAddSearchEvent(keyword);\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tsearch: keyword,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangeSize: function changeSize(size) {\n\t\t\t\tsize = parseInt(size, 10);\n\t\t\t\tsize = !isNaN(size) && size > 30 ? size : 30;\n\n\t\t\t\t// reset the page to 1\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tpage_size: size,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangePage: function changePage(page) {\n\t\t\t\tpage = parseInt(page, 10);\n\t\t\t\tpage = !isNaN(page) && page > 1 ? page : 1;\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: page,\n\t\t\t\t\tpage_size: Ember.get(this, 'page_size'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\t\t\topenIntercom: function openIntercom() {\n\t\t\t\tEmber.$('#intercom-launcher > .intercom-launcher-button').click();\n\t\t\t},\n\n\n\t\t\t/*** Employees Import ***/\n\n\t\t\topenImportAction: function openImportAction() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', true);\n\t\t\t},\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t},\n\t\t\tcancelImportAction: function cancelImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showDialog', true);\n\t\t\t},\n\t\t\timportCompleteAction: function importCompleteAction() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\n\n\t\t\t/*** Employees Import End ***/\n\n\t\t\tperformCallToAction: function performCallToAction() {\n\t\t\t\tthis.send('openSubscriptionDetails');\n\t\t\t},\n\t\t\ttoggleUsernameConflictTooltip: function toggleUsernameConflictTooltip(member) {\n\t\t\t\tmember.toggleProperty('showUsernameConflictTooltip');\n\t\t\t\treturn false;\n\t\t\t},\n\n\n\t\t\t/**\n    * @event closeLockDateDialog\n    *\n    */\n\t\t\tcloseLockDateDialog: function closeLockDateDialog() {\n\t\t\t\tEmber.set(this, 'showLockDateDialog', false);\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t},\n\t\t\topenHelpDialog: function openHelpDialog() {\n\t\t\t\tEmber.set(this, 'showIntercom', true);\n\t\t\t\tEmber.set(this, 'showReceptive', true);\n\t\t\t\tEmber.set(this, 'showHelpDialog', true);\n\t\t\t\tthis.send('closeUpgradeDialog');\n\t\t\t},\n\t\t\tcloseHelpDialog: function closeHelpDialog() {\n\t\t\t\tEmber.set(this, 'showHelpDialog', false);\n\t\t\t},\n\t\t\tshowSafetyDialog: function showSafetyDialog() {\n\t\t\t\tEmber.set(this, 'showSignOffRequiredDialog', true);\n\t\t\t},\n\t\t\tcloseSafetyDialog: function closeSafetyDialog() {\n\t\t\t\tEmber.set(this, 'showSignOffRequiredDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\t\t\tcloseSafetyDialogAndClockOut: function closeSafetyDialogAndClockOut() {\n\t\t\t\tvar _this18 = this;\n\n\t\t\t\tEmber.set(this, 'showSafetySignOffDialog', false);\n\t\t\t\tthis._clockOutMembers(Ember.get(this, 'openTaskItems')).then(function () {\n\t\t\t\t\t_this18.refreshRoute();\n\t\t\t\t});\n\t\t\t},\n\t\t\topenDialog: function openDialog(dialogName) {\n\t\t\t\tthis.set('show' + dialogName, true);\n\t\t\t},\n\t\t\tcloseDialog: function closeDialog(dialogName) {\n\t\t\t\tthis.set('show' + dialogName, false);\n\t\t\t},\n\t\t\tonDeleteGroup: function onDeleteGroup(group) {\n\t\t\t\t_logger.default.info(this, 'onDeleteGroup', group);\n\n\t\t\t\treturn this.ungroupOrphans(group);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/employees/locations', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['ids', 'from'],\n\n\t\tselectedEmployees: null,\n\t\tid: null,\n\t\tmember_id: null,\n\t\tfilter: null,\n\t\tgroups: null,\n\t\tfrom: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setGroups();\n\t\t},\n\n\n\t\tsetGroups: Ember.observer('model.timeEntryLocations.@each.id', function () {\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tvar groups = [Ember.Object.create({ key: 'all-locations', value: (0, _utils.loc)('All Locations') })];\n\t\t\t\tif (!Ember.isNone(this.get('model.startLocationId'))) {\n\t\t\t\t\tgroups.pushObject(Ember.Object.create({ key: 'start-location', value: (0, _utils.loc)('Clock in'), _selected: 'start-location' === this.get('filter') }));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(this.get('model.endLocationId'))) {\n\t\t\t\t\tgroups.pushObject(Ember.Object.create({ key: 'end-location', value: (0, _utils.loc)('Clock out'), _selected: 'end-location' === this.get('filter') }));\n\t\t\t\t}\n\t\t\t\tthis.set('groups', groups);\n\t\t\t}\n\t\t}),\n\n\t\tsetDefaultGroup: Ember.observer('group.@each', function () {\n\t\t\tthis.set('group', this.get('groups').objectAt(0));\n\t\t}),\n\n\t\tactions: {\n\t\t\tsetSelectedGroup: function setSelectedGroup(view, group) {\n\t\t\t\tthis.set('selectedGroup', group);\n\t\t\t},\n\t\t\tfilterGroup: function filterGroup(group) {\n\t\t\t\tvar filter = group.get('key') === 'all-locations' ? null : group.get('key');\n\n\t\t\t\tthis.set('filter', filter);\n\n\t\t\t\tthis.transitionToRoute('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: this.get('id'),\n\t\t\t\t\t\tmember_id: this.get('member_id'),\n\t\t\t\t\t\tfilter: filter\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tbackAction: function backAction() {\n\t\t\t\tif (!Ember.isNone(this.get('from'))) {\n\t\t\t\t\tthis.transitionToRoute(this.get('from'));\n\t\t\t\t} else {\n\t\t\t\t\twindow.history.back();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['timesheet_start', 'timesheet_end', 'timesheet_mode'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tshowAddTime: true,\n\n\t\ttimecardBadgeContent: '',\n\t\ttimecardBadgeColor: 'red',\n\n\t\ttimesheet_start: 0,\n\t\ttimesheet_end: 0,\n\t\ttimesheet_mode: null,\n\n\t\tmember: Ember.computed.alias('auth.member.content'),\n\t\torganization: Ember.computed.alias('auth.organization.content'),\n\n\t\tonStartChange: Ember.observer('timesheet_start', function () {\n\t\t\tvar timesheet_start = this.get('timesheet_start');\n\n\t\t\tif (!Ember.isNone(timesheet_start) && parseInt(timesheet_start, 10) !== timesheet_start) {\n\t\t\t\tthis.set('timesheet_start', parseInt(timesheet_start, 10));\n\t\t\t}\n\t\t}),\n\n\t\tonEndChange: Ember.observer('timesheet_end', function () {\n\t\t\tvar timesheet_end = this.get('timesheet_end');\n\n\t\t\tif (!Ember.isNone(timesheet_end) && parseInt(timesheet_end, 10) !== timesheet_end) {\n\t\t\t\tthis.set('timesheet_end', parseInt(timesheet_end, 10));\n\t\t\t}\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.setProperties({\n\t\t\t\ttimesheet_start: null,\n\t\t\t\ttimesheet_end: null,\n\t\t\t\ttimesheet_mode: null\n\t\t\t});\n\t\t},\n\t\tgetStartOfToday: function getStartOfToday() {\n\t\t\treturn _utils.Time.date().startOf('day');\n\t\t},\n\n\n\t\tactions: {\n\t\t\topenLoacationAction: function openLoacationAction(member) {\n\t\t\t\tthis.transitionToRoute('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: member.get('openEntry.id'),\n\t\t\t\t\t\tmember_id: member.get('id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/login', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tdataStore: Ember.inject.service('data-store'),\n\n\t\tloginEmail: '',\n\t\tloginPass: '',\n\t\tloginRememberMe: 1,\n\t\tisLoginError: false,\n\t\tloginErrorMessage: '',\n\n\t\tcancelKey: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tif (!window.runningTests) {\n\t\t\t\tvar tempKey = this.get('dataStore').suspendedKey();\n\t\t\t\tif (!Ember.isEmpty(tempKey) && !Ember.isNone(tempKey)) {\n\t\t\t\t\tthis.set('cancelKey', tempKey);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlogin: function login() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isEmpty(this.get('loginEmail')) && !Ember.isEmpty(this.get('loginPass'))) {\n\t\t\t\tthis.set('isLoginError', false);\n\t\t\t\tthis.send('authenticateSession', this.get('loginEmail'), this.get('loginPass'), function () {\n\t\t\t\t\treturn _this.loginSuccess();\n\t\t\t\t}, function (err) {\n\t\t\t\t\treturn _this.loginError(err);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.set('isLoginError', true);\n\t\t\t\tthis.set('loginErrorMessage', (0, _utils.loc)('You must provide a username and password!'));\n\t\t\t}\n\t\t},\n\t\tloginSuccess: function loginSuccess() {\n\t\t\tthis.send('reloadAuth');\n\t\t\tthis.transitionToRoute('index');\n\t\t\treturn window.location = \"/\";\n\t\t},\n\t\tloginError: function loginError(err) {\n\t\t\tif (err.status === 401) {\n\t\t\t\tif (err.code === 4011) {\n\t\t\t\t\tthis.set('isLoginError', true);\n\t\t\t\t\tthis.set('loginErrorMessage', (0, _utils.loc)('Access to your account has been removed.'));\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('isLoginError', true);\n\t\t\t\t\tthis.set('loginErrorMessage', (0, _utils.loc)('The username or password is incorrect.'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsubmitAction: function submitAction() {\n\t\t\t\tthis.login();\n\t\t\t},\n\t\t\tcancelAdvancedSignin: function cancelAdvancedSignin() {\n\t\t\t\tthis.get('dataStore').resumeAuth();\n\t\t\t\twindow.location = '/';\n\t\t\t}\n\t\t}\n\t});\n});","define(\"busy-app/controllers/logout\", [\"exports\"], function (exports) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service(\"auth\"),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.logout.apply(this, arguments);\n\t\t},\n\t\tlogout: function logout() {\n\t\t\treturn this.get(\"auth\").invalidateSession();\n\t\t}\n\t});\n});","define('busy-app/controllers/map', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    access: Ember.inject.service(),\n    showMembers: true,\n    showProjects: false,\n    showEquipment: false,\n    selectedViewTitle: '',\n    showCurrentLocations: true,\n\n    init: function init() {\n      var _this = this;\n\n      this._super();\n      setTimeout(function () {\n        _this.setMarkers();\n        _this.set('selectedViewTitle', 'Current Locations');\n        _this.setLatLngZoom(39.8283, -98.5785, 5);\n      }, 500);\n    },\n    setLocationInfo: function setLocationInfo() {\n      var _this2 = this;\n\n      var model = this.get('model'),\n          timeEntries = model.timeEntries,\n          members = model.members,\n          projects = model.projects,\n          equipments = model.equipment,\n          locationItems = [],\n          projectMemberList = [],\n          access = this.get('access');\n\n      var entriesFinished = 0;\n\n      this.setProperties({\n        locationInfo: null,\n        markers: null\n      });\n\n      timeEntries.forEach(function (entry) {\n\n        _this2.store.filter('time-entry').getRelatedModels(entry).then(function (props) {\n          props.timeEntryBreaks = props.breaks;\n          entry.setProperties(props);\n\n          if (Ember.isPresent(entry.get('startLocation.content'))) {\n            var member = members.findBy('id', entry.get('memberId'));\n\n            if (Ember.isPresent(member)) {\n              if (access.canTakeActionFor('timeEvents', member)) {\n                var locationObject = Ember.Object.create({\n                  type: 'member',\n                  memberName: member.get('fullName'),\n                  member: member,\n                  memberId: entry.get('memberId'),\n                  imageThumbUrl: member.get('imageThumbUrl'),\n                  equipment: entry.get('equipment'),\n                  costCode: entry.get('costCode'),\n                  timeEntry: entry,\n                  isEquipment: false,\n                  isMember: true,\n                  isProject: false\n                });\n                var project = projects.findBy('id', entry.get('projectId'));\n                locationObject.set('project', project);\n\n                var isOnBreak = false;\n                var openBreaks = entry.breaks.filter(function (b) {\n                  if (Ember.isEmpty(b.get('endTime'))) {\n                    return b;\n                  }\n                });\n\n                openBreaks.length > 0 ? isOnBreak = true : isOnBreak = false;\n\n                _this2.get('store').query('member-location', { member_id: member.get('id'), _gte: { created_on: _utils.Time.date().startOf('day').unix() } }).then(function (memLocs) {\n                  var sortedMemLocs = memLocs.sortBy('submittedOn');\n\n                  var memLoc = sortedMemLocs.get('lastObject');\n                  locationObject.set('startTime', memLoc.get('timeLocalString'));\n                  if (!_this2.get('showCurrentLocations')) {\n                    var clockInMemLoc = sortedMemLocs.filter(function (loc) {\n                      if (loc.get('id') === entry.get('startLocationId')) {\n                        return loc;\n                      }\n                    });\n\n                    memLoc = clockInMemLoc.get('firstObject');\n                    locationObject.set('startTime', entry.get('startTimeString'));\n                  }\n                  locationObject.setProperties({\n                    lat: memLoc.get('latitude'),\n                    lng: memLoc.get('longitude')\n                  });\n\n                  var isEndBreak = false;\n                  entry.breaks.forEach(function (b) {\n                    if (b.get('endLocationId') === memLoc.get('id')) {\n                      isEndBreak = true;\n                    }\n                  });\n\n                  if (entry.get('startLocationId') === memLoc.get('id')) {\n                    locationObject.set('locationType', 'Clocked In');\n                  } else if (isOnBreak) {\n                    locationObject.set('locationType', 'Started Break');\n                  } else if (isEndBreak) {\n                    locationObject.set('locationType', 'Ended Break');\n                  } else {\n                    locationObject.set('locationType', 'Location Changed');\n                  }\n                  if (locationItems.indexOf(locationObject) === -1) {\n                    locationItems.pushObject(locationObject);\n                  }\n                });\n              }\n            }\n          }\n\n          if (Ember.isPresent(entry.get('projectId'))) {\n            var _project = projects.findBy('id', entry.get('projectId'));\n\n            if (Ember.isPresent(_project)) {\n              var projectObject = Ember.Object.create({\n                type: 'project',\n                projectTitle: _project.get('title'),\n                projectId: _project.get('id'),\n                project: entry.get('project'),\n                equipment: entry.get('equipment'),\n                costCode: entry.get('costCode'),\n                isEquipment: false,\n                isMember: false,\n                isProject: true\n              });\n\n              var _member = members.findBy('id', entry.get('memberId'));\n\n              if (access.canTakeActionFor('timeEvents', _member)) {\n                var memberObj = Ember.Object.create({\n                  member: _member,\n                  costCode: entry.get('costCode'),\n                  equipment: entry.get('equipment'),\n                  projectId: _project.get('id'),\n                  project: _project,\n                  timeEntry: entry,\n                  startTime: entry.get('startTimeString'),\n                  parentProjects: _project.get('parentProjects'),\n                  projectTitle: entry.get('project.title')\n                });\n\n                projectMemberList.pushObject(memberObj);\n              }\n\n              _this2.get('store').query('project-info', { project_id: _project.get('id') }).then(function (info) {\n                if (info.content.length > 0) {\n                  var projInfo = info.content[0]._data;\n\n                  projectObject.setProperties({\n                    lat: projInfo.latitude,\n                    lng: projInfo.longitude,\n                    locationRadius: projInfo.locationRadius,\n                    number: projInfo.number\n                  });\n                }\n                if (Ember.isPresent(projectObject.lat && _project.get('title'))) {\n                  if (locationItems.indexOf(projectObject) === -1) {\n                    locationItems.pushObject(projectObject);\n                  }\n                }\n              });\n              if (_project.get('parentProjectId') && _project.get('id') !== _project.get('parentProjectId')) {\n                _this2.getProjectInfo(_project, entry).then(function (data) {\n                  if (Ember.isPresent(data)) {\n                    locationItems.pushObject(data.get('project'));\n                    if (data.get('project.project.parentProjectId') && data.get('project.projectId') !== data.get('project.project.parentProjectId')) {\n                      _this2.getProjectInfo(data.get('project.project'), entry).then(function (data) {\n                        if (Ember.isPresent(data)) {\n                          locationItems.pushObject(data.get('project'));\n                        }\n                      });\n                    }\n                  }\n                });\n              }\n            }\n          }\n\n          if (Ember.isPresent(entry.get('equipmentId'))) {\n            var equipment = equipments.findBy('id', entry.get('equipmentId'));\n            if (Ember.isPresent(equipment)) {\n              var equipMember = members.findBy('id', entry.get('memberId'));\n              var _project2 = null;\n\n              if (entry.get('projectId')) {\n                _project2 = projects.findBy('id', entry.get('projectId'));\n              }\n              var equipmentObject = Ember.Object.create({\n                type: 'equipment',\n                equipmentName: equipment.get('equipmentName'),\n                memberId: entry.get('memberId'),\n                project: _project2,\n                equipment: entry.get('equipment'),\n                costCode: entry.get('costCode'),\n                timeEntry: entry,\n                member: equipMember,\n                isEquipment: true,\n                isMember: false,\n                isProject: false\n              });\n\n              var _member2 = members.findBy('id', equipmentObject.get('memberId'));\n\n              var canTakeAction = false;\n              if (access.canTakeActionFor('timeEvents', _member2)) {\n                canTakeAction = true;\n              }\n\n              equipmentObject.setProperties({\n                imageThumbUrl: equipment.get('equipmentThumb'),\n                totalTimeString: entry.get('totalTimeString'),\n                startTime: entry.get('startTimeString'),\n                canTakeAction: canTakeAction\n              });\n\n              if (Ember.isPresent(_member2)) {\n                equipmentObject.set('memberName', _member2.get('firstName') + ' ' + _member2.get('lastName'));\n              }\n\n              if (Ember.isPresent(equipment.get('lastLocationId'))) {\n                _this2.get('store').find('equipment-location', equipment.get('lastLocationId')).then(function (equipLoc) {\n                  equipmentObject.setProperties({\n                    lat: equipLoc.get('latitude'),\n                    lng: equipLoc.get('longitude')\n                  });\n                  if (Ember.isPresent(equipmentObject.get('equipmentName')) && equipmentObject.get('canTakeAction')) {\n                    if (locationItems.indexOf(equipmentObject) === -1) {\n                      locationItems.pushObject(equipmentObject);\n                    }\n                  }\n                });\n              }\n            }\n          }\n\n          entriesFinished++;\n          if (entriesFinished === _this2.get('model.timeEntries.length')) {\n            _this2.set('locationInfo', Ember.Object.create({\n              locationItems: locationItems,\n              projectMemberList: projectMemberList\n            }));\n          }\n        });\n      });\n    },\n\n\n    setInfoLoader: Ember.observer('model.modelSet', function () {\n      var _this3 = this;\n\n      if (this.get('model.modelSet')) {\n        Ember.run.once(function () {\n          _this3.setLocationInfo();\n        });\n      }\n    }),\n\n    getProjectInfo: function getProjectInfo(project, entry) {\n      var _this4 = this;\n\n      return this.get('store').find('project', project.get('parentProjectId')).then(function (proj) {\n        var parentLocation = Ember.Object.create({\n          type: 'project',\n          projectTitle: proj.get('title'),\n          projectId: proj.get('id'),\n          project: proj,\n          equipment: entry.get('equipment'),\n          costCode: entry.get('costCode'),\n          isEquipment: false,\n          isMember: false,\n          isProject: true\n        });\n\n        return _this4.get('store').query('project-info', { project_id: proj.get('id') }).then(function (info) {\n\n          if (info.content.length > 0) {\n\n            var projInfo = info.content[0]._data;\n            parentLocation.setProperties({\n              lat: projInfo.latitude,\n              lng: projInfo.longitude,\n              locationRadius: projInfo.locationRadius\n            });\n          }\n          if (Ember.isPresent(parentLocation.get('lat'))) {\n            return Ember.Object.create({\n              project: parentLocation\n            });\n          }\n        });\n      });\n    },\n\n\n    layerType: Ember.computed('showMap', function () {\n      var showMap = this.get('showMap');\n      if (showMap) {\n        return 'map';\n      } else {\n        return 'hybrid';\n      }\n    }),\n\n    mapViewOptions: Ember.computed(function () {\n      return [Ember.Object.create({ key: 'current-location', value: 'Current Locations' }), Ember.Object.create({ key: 'clock-in-location', value: 'Clock In Locations' })];\n    }),\n\n    /**\n     * Sets the initial latitude, longitude and zoom\n     * @private\n     * @method setLatLngZoom\n     */\n    setLatLngZoom: function setLatLngZoom(lat, lng, zoom) {\n      this.set('lat', lat);\n      this.set('lng', lng);\n      this.set('zoom', zoom);\n    },\n\n\n    /**\n     * Sets the marker colors based on current equipment status.\n     * @private\n     * @method setMarkers\n     */\n    setMarkers: Ember.observer('locationInfo.locationItems.@each', 'locationInfo.projectMemberList.@each', 'showMembers', 'showProjects', 'showEquipment', function () {\n      var _this5 = this;\n\n      var markers = [];\n      var bounds = null;\n      bounds = new window.google.maps.LatLngBounds();\n      if (!Ember.isEmpty(this.get('locationInfo'))) {\n        this.get('locationInfo.locationItems').forEach(function (item) {\n          item.set('markerLabel', { text: ' ', color: '#ffffff' });\n          var iconUrl = void 0;\n          if (item.get('isMember')) {\n            iconUrl = '/images/icons/employee_pin.png';\n          } else if (item.get('isEquipment')) {\n            iconUrl = '/images/icons/equipment_pin.png';\n          } else if (item.get('isProject')) {\n            iconUrl = '/images/icons/project_pin.png';\n          }\n\n          var markerImage = {\n            url: iconUrl,\n            size: new window.google.maps.Size(30, 30),\n            anchor: new window.google.maps.Point(15, 15),\n            labelOrigin: new window.google.maps.Point(15, 15)\n          };\n\n          item.set('markerImage', markerImage);\n          if (item.get('isProject')) {\n            var members = [];\n            _this5.get('locationInfo.projectMemberList').forEach(function (member) {\n              if (member.get('projectId') === item.get('projectId') || member.get('parentProjects') && member.get('parentProjects').isAny('id', item.get('projectId'))) {\n                members.pushObject(member);\n              }\n            });\n            item.set('members', members.sortBy('member.lastName'));\n          }\n          if (_this5.get('showMembers') && item.get('isMember')) {\n            markers.pushObject(item);\n          }\n          if (_this5.get('showProjects') && item.get('isProject')) {\n            markers.pushObject(item);\n          }\n          if (_this5.get('showEquipment') && item.get('isEquipment')) {\n            markers.pushObject(item);\n          }\n          var boundItem = new window.google.maps.LatLng(item.lat, item.lng);\n          bounds.extend(boundItem);\n        });\n        if (!this.get('boundsSet')) {\n          this.set('bounds', bounds);\n        }\n        this.set('markers', markers);\n      }\n    }),\n\n    /**\n      * Flag to check whether there are locations to display\n      * @private\n      * @property hasLocations\n      * @type {boolean}\n      */\n    hasLocations: Ember.computed('locationInfo.locationItems.@each', 'markers.@each', function () {\n\n      return this.get('locationInfo.locationItems.length') > 0 && this.get('markers.length') > 0;\n    }),\n\n    actions: {\n      showProjectDialog: function showProjectDialog(item) {\n        this.set('currentProject', item);\n        this.set('showDialog', true);\n        this.get('currentProject.members').forEach(function (item) {\n          item.set('totalTime', _utils.Time.now().unix() - item.get('timeEntry.startTime'));\n        });\n      },\n      closeDialog: function closeDialog() {\n        this.set('showDialog', false);\n      },\n      loadEmployee: function loadEmployee(member) {\n        this.setProperties({\n          currentMember: member,\n          showMemberDialog: true\n        });\n      },\n      closeMemberDialog: function closeMemberDialog() {\n        this.setProperties({\n          currentMember: null,\n          showMemberDialog: false\n        });\n      },\n\n\n      /**\n        * Opens the info tooltip\n        * @event openInfoWindow\n        */\n      openInfoWindow: function openInfoWindow(item, _ref) {\n        var map = _ref.map;\n\n        this.get('locationInfo.locationItems').forEach(function (locationItems) {\n          locationItems.set('showInfoWindow', false);\n        });\n        item.set('totalTime', _utils.Time.now().unix() - item.get('timeEntry.startTime'));\n        if (item.get('showInfoWindow')) {\n          item.set('showInfoWindow', false);\n        } else {\n          item.set('showInfoWindow', true);\n        }\n        map.setCenter({ lat: item.get('lat'), lng: item.get('lng') });\n      },\n      closeInfoWindows: function closeInfoWindows() {\n        this.get('locationInfo.locationItems').forEach(function (locationItems) {\n          locationItems.set('showInfoWindow', false);\n        });\n      },\n      loadMap: function loadMap(_ref2) {\n        var map = _ref2.map;\n\n        map.fitBounds(this.get('bounds'));\n        map.setCenter(this.get('bounds').getCenter());\n        this.set('boundsSet', true);\n      },\n      mapViewAction: function mapViewAction(item) {\n        this.set('selectedViewTitle', item.get('value'));\n        if (item.get('key') === 'clock-in-location') {\n          this.set('showCurrentLocations', false);\n          this.setLocationInfo();\n        } else {\n          this.set('showCurrentLocations', true);\n          this.setLocationInfo();\n        }\n      }\n    }\n  });\n});","define('busy-app/controllers/note/detail', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tshowDialog: false,\n\t\tshowLargeImage: false,\n\t\tlargeImage: null,\n\n\t\topenPhotoIndex: Ember.computed('largeImage', function () {\n\t\t\tvar str = '';\n\t\t\tif (!Ember.isNone(this.get('largeImage'))) {\n\t\t\t\tvar length = this.get('model.mediaEntries.length');\n\t\t\t\tvar index = this.get('model.mediaEntries').indexOf(this.get('largeImage')) + 1;\n\t\t\t\tstr = index + '/' + length;\n\t\t\t}\n\t\t\treturn str;\n\t\t}),\n\n\t\tisPrevDisabled: Ember.computed('largeImage', 'model.mediaEntries.[]', function () {\n\t\t\tif (!Ember.isNone(this.get('largeImage'))) {\n\t\t\t\tvar index = this.get('model.mediaEntries').indexOf(this.get('largeImage'));\n\t\t\t\tif (index > 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}),\n\n\t\tisNextDisabled: Ember.computed('largeImage', 'model.mediaEntries.[]', function () {\n\t\t\tif (!Ember.isNone(this.get('largeImage'))) {\n\t\t\t\tvar index = this.get('model.mediaEntries').indexOf(this.get('largeImage')) + 1;\n\t\t\t\tvar length = this.get('model.mediaEntries.length');\n\t\t\t\tif (index < length) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}),\n\n\t\tactions: {\n\t\t\tviewImage: function viewImage(item) {\n\t\t\t\tthis.set('largeImage', item);\n\t\t\t\tthis.set('showLargeImage', true);\n\t\t\t},\n\t\t\tcloseLargeImage: function closeLargeImage() {\n\t\t\t\tthis.set('showLargeImage', false);\n\t\t\t\tthis.set('largeImage', null);\n\t\t\t},\n\t\t\teditNoteCard: function editNoteCard() {\n\t\t\t\tthis.set('showDialog', true);\n\t\t\t},\n\t\t\tcloseDialog: function closeDialog() {\n\t\t\t\tthis.get('model').rollbackAttributes();\n\t\t\t\tthis.set('showDialog', false);\n\t\t\t},\n\t\t\timageChange: function imageChange(file, url) {\n\t\t\t\tvar mediaEntry = this.store.createRecord('media-entry', {\n\t\t\t\t\tmediaCollectionId: this.get('model.id'),\n\t\t\t\t\tcreatedBy: this.get('model.createdBy'),\n\t\t\t\t\tcaptureDate: _utils.Time.timestamp(),\n\t\t\t\t\tfile: file,\n\t\t\t\t\tfileThumbUrl: url,\n\t\t\t\t\tentryType: 20\n\t\t\t\t});\n\t\t\t\tthis.get('model.mediaEntries').pushObject(mediaEntry._internalModel);\n\t\t\t},\n\t\t\tsaveDialog: function saveDialog() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\treturn this.get('model').save().then(function () {\n\t\t\t\t\treturn _this.get('model.mediaEntries').save().finally(function () {\n\t\t\t\t\t\treturn _this.get('model.mediaEntries').update();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangeProject: function changeProject(item) {\n\t\t\t\tthis.set('model.projectId', item.get('id'));\n\t\t\t},\n\t\t\tdeleteNotecard: function deleteNotecard() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\treturn this.get('model').destroyRecord().catch(function () {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('There was a problem deleting this note card.'));\n\t\t\t\t}).finally(function () {\n\t\t\t\t\t_this2.set('showDialog', false);\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\twindow.history.back();\n\t\t\t\t\t}, 300);\n\t\t\t\t});\n\t\t\t},\n\t\t\tnextPhoto: function nextPhoto() {\n\t\t\t\tvar index = this.get('model.mediaEntries').indexOf(this.get('largeImage')) + 1;\n\t\t\t\tvar length = this.get('model.mediaEntries.length');\n\t\t\t\tif (index < length) {\n\t\t\t\t\tthis.set('largeImage', this.get('model.mediaEntries').objectAt(index));\n\t\t\t\t}\n\t\t\t},\n\t\t\tprevPhoto: function prevPhoto() {\n\t\t\t\tvar index = this.get('model.mediaEntries').indexOf(this.get('largeImage')) - 1;\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tthis.set('largeImage', this.get('model.mediaEntries').objectAt(index));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/project/detail', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({});\n});","define('busy-app/controllers/project/detail/index', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\torganization: Ember.computed.alias('auth.organization'),\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tcanHaveSubProjects: Ember.computed('model.project.depth', function () {\n\t\t\treturn !Ember.isNone(this.get('model.project.depth')) && this.get('model.project.depth') <= 6;\n\t\t}),\n\n\t\tbreadcrumbs: Ember.computed('model.project.{title,parentProject.fullTitle}', function () {\n\t\t\tvar fullTitle = this.get('model.project.fullTitle');\n\t\t\tvar fullTitleDelimiter = this.get('model.project.fullTitleDelimiter');\n\t\t\tvar projectsArray = fullTitle.split(fullTitleDelimiter);\n\t\t\tvar projects = [];\n\n\t\t\tvar count = projectsArray.length - 1;\n\t\t\tprojectsArray.forEach(function (project) {\n\t\t\t\tif (count < 1) {\n\t\t\t\t\tproject = null;\n\t\t\t\t} else if (count === 1) {\n\t\t\t\t\tproject = Ember.Object.create({ key: count, value: project });\n\t\t\t\t} else {\n\t\t\t\t\tproject = Ember.Object.create({ key: count, value: project, slash: '/' });\n\t\t\t\t}\n\t\t\t\tcount = count - 1;\n\t\t\t\tprojects.pushObject(project);\n\t\t\t});\n\n\t\t\treturn projects;\n\t\t}),\n\n\t\tactions: {\n\t\t\tclickBreadcrumb: function clickBreadcrumb(item) {\n\t\t\t\twindow.history.go('-' + item);\n\t\t\t},\n\t\t\tchangeSubProject: function changeSubProject(projectId) {\n\t\t\t\tthis.transitionToRoute('project.detail', projectId);\n\t\t\t},\n\t\t\treportTransition: function reportTransition(report) {\n\t\t\t\tif (report === 'employee') {\n\t\t\t\t\tthis.transitionToRoute('project.detail.reports.employees');\n\t\t\t\t} else if (report === 'subproject') {\n\t\t\t\t\tthis.transitionToRoute('project.detail.reports.subprojects');\n\t\t\t\t} else if (report === 'budget-versus-actual') {\n\t\t\t\t\tthis.transitionToRoute('project.detail.reports.budget-versus-actual');\n\t\t\t\t} else if (report === 'time-cards') {\n\t\t\t\t\tthis.transitionToRoute('report.time-entries', {\n\t\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\t\tproject: this.get('model.project.id')\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define(\"busy-app/controllers/project/detail/reports/budget-versus-actual\", [\"exports\", \"@busy-web/utils\"], function (exports, _utils) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tpayPeriods: Ember.inject.service(\"pay-period\"),\n\n\t\thoursPercentage: 0,\n\t\tcostPercentage: 0,\n\t\tstart: 0,\n\t\tend: 0,\n\n\t\tremainingCost: 0,\n\t\tremainingHours: 0,\n\n\t\thoursNegative: false,\n\t\tcostNegative: false,\n\n\t\tisCustomDate: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setOptions();\n\t\t},\n\n\n\t\tmoneySpent: Ember.computed.alias(\"model.project.totalTotalCost\"),\n\t\thoursWorked: Ember.computed.alias(\"model.project.totalTotalSeconds\"),\n\n\t\tbudgetedHours: Ember.computed(\"model.budgetSeconds.budgetSeconds\", function () {\n\t\t\treturn (Math.round(this.get(\"model.budgetSeconds.budgetSeconds\") / 3600 * 100) / 100).toFixed(2);\n\t\t}),\n\n\t\tsetOptions: Ember.observer(\"auth.organizationPayPeriod.@each.id\", function () {\n\t\t\tif (!Ember.isEmpty(this.get(\"auth.organizationPayPeriod\"))) {\n\t\t\t\tvar currentPeriod = this.get(\"payPeriods\").getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get(\"payPeriods\").getPayPeriod(currentPeriod.get(\"startDate\").subtract(1, \"days\").unix());\n\n\t\t\t\tthis.set(\"start\", previousPeriod.get(\"start\"));\n\t\t\t\tthis.set(\"end\", previousPeriod.get(\"end\"));\n\n\t\t\t\tthis.set(\"optionSelector\", [Ember.Object.create({ key: \"allTimeRange\", value: (0, _utils.loc)(\"All time\") }), Ember.Object.create({ key: \"customDateRange\", value: (0, _utils.loc)(\"Custom\") })]);\n\t\t\t}\n\t\t}),\n\n\t\tupdateRemaining: Ember.observer(\"model.{project.totalTotalSeconds,project.totalTotalOverburdenCost,budgetSeconds.budgetSeconds,costBudget.costBudget}\", function () {\n\t\t\tvar budgetHours = this.get(\"model.budgetSeconds.budgetSeconds\") || 1;\n\t\t\tvar actualHours = this.get(\"model.project.totalTotalSeconds\") || 0;\n\t\t\tvar budgetCost = this.get(\"model.costBudget.costBudget\") || 1;\n\t\t\tvar actualCost = this.get(\"model.project.totalTotalOverburdenCost\") || 0;\n\n\t\t\tvar hoursLeft = budgetHours - actualHours;\n\t\t\tvar costLeft = budgetCost - actualCost;\n\n\t\t\tvar hoursPercent = Math.round(actualHours / budgetHours * 100);\n\n\t\t\tvar costPercent = Math.round(actualCost / budgetCost * 100);\n\n\t\t\tthis.set(\"hoursPercentage\", hoursPercent);\n\t\t\tthis.set(\"costPercentage\", costPercent);\n\n\t\t\tif (costLeft < 0) {\n\t\t\t\tthis.set(\"remainingCost\", costLeft);\n\t\t\t\tthis.set(\"costNegative\", true);\n\t\t\t} else {\n\t\t\t\tthis.set(\"remainingCost\", costLeft);\n\t\t\t\tthis.set(\"costNegative\", false);\n\t\t\t}\n\n\t\t\tif (hoursLeft < 0) {\n\t\t\t\tthis.set(\"remainingHours\", Math.abs(hoursLeft));\n\t\t\t\tthis.set(\"hoursNegative\", true);\n\t\t\t} else {\n\t\t\t\tthis.set(\"remainingHours\", hoursLeft);\n\t\t\t\tthis.set(\"hoursNegative\", false);\n\t\t\t}\n\n\t\t\tvar costString = \"width: \" + this.get(\"costPercentage\") + \"%;\";\n\t\t\tvar hoursString = \"width: \" + this.get(\"hoursPercentage\") + \"%;\";\n\t\t\tthis.set(\"costWidthString\", Ember.String.htmlSafe(costString));\n\t\t\tthis.set(\"hoursWidthString\", Ember.String.htmlSafe(hoursString));\n\t\t}),\n\n\t\tactions: {\n\t\t\tchangeDateRange: function changeDateRange(start, end) {\n\t\t\t\tthis.set(\"start\", start);\n\t\t\t\tthis.set(\"end\", end);\n\t\t\t},\n\t\t\tallTimeRange: function allTimeRange() {\n\t\t\t\tthis.set(\"isCustomDate\", false);\n\t\t\t},\n\t\t\tcustomDateRange: function customDateRange() {\n\t\t\t\tthis.set(\"isCustomDate\", true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/project/detail/reports/employees', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['custom', 'start', 'end'],\n\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tcustom: false,\n\n\t\tproject: null,\n\t\tstart: 0,\n\t\tend: 0,\n\t\tselectedMember: null,\n\t\tdirtyFlag: false,\n\n\t\tshowBarChart: true,\n\n\t\tshowEntriesDialog: false,\n\n\t\tinit: function init() {\n\t\t\tthis.get('auth.currencySymbol');\n\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.setOptions();\n\n\t\t\tthis.set('chartOptions', [Ember.Object.create({ key: 'barChart', value: (0, _utils.loc)('Bar Chart') }), Ember.Object.create({ key: 'pieChart', value: (0, _utils.loc)('Pie Chart') })]);\n\t\t},\n\n\n\t\tsyncStart: Ember.computed('start', 'custom', function () {\n\t\t\tif (this.get('custom')) {\n\t\t\t\treturn this.get('start');\n\t\t\t}\n\t\t}),\n\n\t\tsyncEnd: Ember.computed('end', 'custom', function () {\n\t\t\tif (this.get('custom')) {\n\t\t\t\treturn this.get('end');\n\t\t\t}\n\t\t}),\n\n\t\tsetOptions: Ember.observer('custom', function () {\n\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'allTimeRange', value: (0, _utils.loc)('All time'), _selected: !this.get('custom') }), Ember.Object.create({ key: 'customDateRange', value: (0, _utils.loc)('Custom'), _selected: this.get('custom') })]);\n\t\t}),\n\n\t\tactions: {\n\t\t\tcloseTimeEntryDialog: function closeTimeEntryDialog() {\n\t\t\t\tthis.set('showEntriesDialog', false);\n\t\t\t},\n\t\t\tchangeDateRange: function changeDateRange(start, end) {\n\t\t\t\tthis.set('start', start);\n\t\t\t\tthis.set('end', end);\n\n\t\t\t\tthis.transitionToRoute('project.detail.reports.employees', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tcustom: this.get('custom'),\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: end\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:project.detail.reports.employees').refresh();\n\t\t\t},\n\t\t\toptionChanged: function optionChanged(opt) {\n\t\t\t\tvar custom = opt === 'customDateRange';\n\t\t\t\tthis.set('custom', custom);\n\n\t\t\t\tif (custom) {\n\t\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\t\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t\t\tthis.set('end', previousPeriod.get('end'));\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('start', 0);\n\t\t\t\t\tthis.set('end', 0);\n\t\t\t\t}\n\n\t\t\t\tthis.transitionToRoute('project.detail.reports.employees', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tcustom: custom,\n\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\tend: this.get('end')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:project.detail.reports.employees').refresh();\n\t\t\t},\n\t\t\tprintReport: function printReport() {\n\t\t\t\tvar container = Ember.$('.v-project-reports-employees');\n\t\t\t\t_docs.default.print(container);\n\t\t\t},\n\t\t\tchangeChartStyle: function changeChartStyle(item) {\n\t\t\t\tif (item.key === 'pieChart') {\n\t\t\t\t\tthis.set('showBarChart', false);\n\t\t\t\t} else if (item.key === 'barChart') {\n\t\t\t\t\tthis.set('showBarChart', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\topenEntries: function openEntries(item) {\n\t\t\t\tthis.set('selectedMember', item.get('member'));\n\t\t\t\tthis.set('showEntriesDialog', true);\n\t\t\t},\n\t\t\trefreshSync: function refreshSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/project/detail/reports/subprojects', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['custom', 'start', 'end'],\n\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tproject: null,\n\t\tcustom: false,\n\t\tstart: 0,\n\t\tend: 0,\n\n\t\tshowEntriesDialog: false,\n\t\tshowBarChart: true,\n\t\tunassignedProjects: false,\n\t\tdirtyFlag: false,\n\n\t\tinit: function init() {\n\t\t\tthis.get('auth.currencySymbol');\n\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.setOptions();\n\n\t\t\tthis.set('chartOptions', [Ember.Object.create({ key: 'barChart', value: (0, _utils.loc)('Bar Chart') }), Ember.Object.create({ key: 'pieChart', value: (0, _utils.loc)('Pie Chart') })]);\n\t\t},\n\n\n\t\tsyncStart: Ember.computed('start', 'custom', function () {\n\t\t\tif (this.get('custom')) {\n\t\t\t\treturn this.get('start');\n\t\t\t}\n\t\t}),\n\n\t\tsyncEnd: Ember.computed('end', 'custom', function () {\n\t\t\tif (this.get('custom')) {\n\t\t\t\treturn this.get('end');\n\t\t\t}\n\t\t}),\n\n\t\tsetOptions: Ember.observer('custom', function () {\n\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'allTimeRange', value: (0, _utils.loc)('All time'), _selected: !this.get('custom') }), Ember.Object.create({ key: 'customDateRange', value: (0, _utils.loc)('Custom'), _selected: this.get('custom') })]);\n\t\t}),\n\n\t\tactions: {\n\t\t\ttitleSelected: function titleSelected(item) {\n\t\t\t\tvar project = Ember.get(item, 'project');\n\t\t\t\tthis.set('showEntriesDialog', true);\n\t\t\t\tif (Ember.get(item, 'project.id') === Ember.get(this, 'project.id')) {\n\t\t\t\t\tthis.set('unassignedProjects', true);\n\t\t\t\t\tproject = Ember.get(this, 'project');\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('unassignedProjects', false);\n\t\t\t\t}\n\t\t\t\tthis.set('clickedProject', project);\n\t\t\t},\n\t\t\tcloseTimeEntryDialog: function closeTimeEntryDialog() {\n\t\t\t\tthis.set('showEntriesDialog', false);\n\t\t\t},\n\t\t\tchangeDateRange: function changeDateRange(start, end) {\n\t\t\t\tthis.set('start', start);\n\t\t\t\tthis.set('end', end);\n\n\t\t\t\tthis.transitionToRoute('project.detail.reports.subprojects', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tcustom: this.get('custom'),\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: end\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:project.detail.reports.subprojects').refresh();\n\t\t\t},\n\t\t\toptionChanged: function optionChanged(opt) {\n\t\t\t\tvar custom = opt === 'customDateRange';\n\t\t\t\tthis.set('custom', custom);\n\n\t\t\t\tif (custom) {\n\t\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\t\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t\t\tthis.set('end', previousPeriod.get('end'));\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('start', 0);\n\t\t\t\t\tthis.set('end', 0);\n\t\t\t\t}\n\n\t\t\t\tthis.transitionToRoute('project.detail.reports.subprojects', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tcustom: custom,\n\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\tend: this.get('end')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:project.detail.reports.subprojects').refresh();\n\t\t\t},\n\t\t\tprintReport: function printReport() {\n\t\t\t\tvar container = Ember.$('.vproject-reports-subprojects');\n\t\t\t\t_docs.default.print(container);\n\t\t\t},\n\t\t\tchangeChartStyle: function changeChartStyle(item) {\n\t\t\t\tif (item.key === 'pieChart') {\n\t\t\t\t\tthis.set('showBarChart', false);\n\t\t\t\t} else if (item.key === 'barChart') {\n\t\t\t\t\tthis.set('showBarChart', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\trefreshSync: function refreshSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/project/index', ['exports', '@busy-web/utils', 'busy-app/mixins/controller-filter', 'busy-app/utils/debug', 'busy-app/utils/logger'], function (exports, _utils, _controllerFilter, _debug, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t// default to busy office\n\t// 37.10102990074617 -113.53877082086876\n\t/**\n  * @module Controllers\n  *\n  */\n\tvar kDefaultLocation = {\n\t\tlatitude: 37.10102990074617,\n\t\tlongitude: -113.53877082086876,\n\t\tlocationRadius: 50\n\t};\n\n\t/**\n  * `Controller/Project/Index`\n  *\n  * @class Index\n  * @namespace Controllers.Project\n  * @extends Controller\n  */\n\t/**\n  * `Controller/Project/Index`\n  *\n  */\n\texports.default = Ember.Controller.extend(_controllerFilter.default, {\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tqueryParams: ['group', 'search', 'page_size', 'page', 'filter'],\n\n\t\tgroup: null,\n\t\tsearch: '',\n\t\tfilter: false,\n\n\t\tisLoading: false,\n\n\t\tselectMenu: null,\n\t\trowSelectMenu: null,\n\n\t\tshowDialog: false,\n\t\tshowAdvancedOptions: false, //in dialog\n\t\tnewProject: null,\n\t\tnewProjectInfo: null,\n\t\tuseGeolocation: false,\n\t\tnewProjectsArray: null,\n\t\tparentProjectArray: null,\n\t\thasChanged: false,\n\n\t\tgroups: null,\n\n\t\tnewGroupName: '',\n\n\t\tselectedGroup: null,\n\t\tgroupMembers: null,\n\n\t\tshouldAddGroup: false,\n\t\tshowMoveGroupDialog: false,\n\n\t\thideRowActions: false,\n\n\t\t_projectCostCodeLinks: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tEmber.set(this, 'editItems', []);\n\n\t\t\t// log the organization\n\t\t\tEmber.get(this, 'auth.organization');\n\t\t\tthis.setupMenu();\n\t\t\tthis.isEditMode();\n\t\t},\n\n\n\t\tisEditMode: Ember.observer('filter', function () {\n\t\t\tif (Ember.get(this, 'filter')) {\n\t\t\t\tEmber.set(this, 'edit', true);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'edit', false);\n\t\t\t}\n\t\t}),\n\n\t\tcanManageProjectGroups: Ember.computed('auth.authMemberPosition.manageProjectGroups', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageProjectGroups');\n\t\t}),\n\n\t\tcanManageProjects: Ember.computed('auth.authMemberPosition.manageProjects', function () {\n\t\t\treturn Ember.get(this, 'auth.authMemberPosition.manageProjects');\n\t\t}),\n\n\t\tcanAddProjects: Ember.computed('canManageProjects', 'group', function () {\n\t\t\treturn Ember.get(this, 'canManageProjects') && Ember.get(this, 'group') !== 'archived';\n\t\t}),\n\n\t\thasRowActions: Ember.computed('canManageProjects', 'hideRowActions', function () {\n\t\t\treturn Ember.get(this, 'canManageProjects') && !Ember.get(this, 'hideRowActions');\n\t\t}),\n\n\t\tcanViewManagementTools: Ember.computed.and('canManageProjects', 'features.managementListsProjects'),\n\n\t\ttotalRows: Ember.computed('model.@each.id', function () {\n\t\t\tvar rows = 0;\n\t\t\tvar meta = Ember.get(this, 'model.meta');\n\t\t\tif (!Ember.isNone(meta)) {\n\t\t\t\trows = meta.totalRows;\n\t\t\t}\n\t\t\treturn rows;\n\t\t}),\n\n\t\tsetupMenu: Ember.observer('group', function () {\n\t\t\tif (Ember.get(this, 'group') === 'archived') {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({ key: 'unarchive', value: (0, _utils.loc)('Unarchive') })]);\n\n\t\t\t\tEmber.set(this, 'rowSelectMenu', [Ember.Object.create({ key: 'unarchive', value: (0, _utils.loc)('Unarchive') })]);\n\t\t\t} else {\n\t\t\t\tEmber.set(this, 'selectMenu', [Ember.Object.create({ key: 'move-to-group', value: (0, _utils.loc)('Move to Group') }), Ember.Object.create({ key: 'archive', value: (0, _utils.loc)('Archive') })]);\n\n\t\t\t\tEmber.set(this, 'rowSelectMenu', [Ember.Object.create({ key: 'archive', value: (0, _utils.loc)('Archive') }), Ember.Object.create({ key: 'duplicate', value: (0, _utils.loc)('Duplicate') }), Ember.Object.create({ key: 'move-to-group', value: (0, _utils.loc)('Move to Group') })]);\n\t\t\t}\n\t\t}),\n\n\t\tisLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n\t\tgetGroups: function getGroups() {\n\t\t\tvar _this = this;\n\n\t\t\treturn (0, _debug.component_safe_api)(function () {\n\t\t\t\treturn _this.store.query('project-group', { _asc: ['group_name'], page_size: 10000 }).then(function (models) {\n\t\t\t\t\treturn Ember.set(_this, 'groups', models.sortBy('groupName'));\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tarchive: function archive() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar items = Ember.get(this, 'archiveItems');\n\t\t\tvar timestamp = _utils.Time.timestamp();\n\t\t\tEmber.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', timestamp);\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this2.clearEdit();\n\t\t\t\tEmber.set(_this2, 'archiveItems', null);\n\t\t\t\tEmber.set(_this2, 'showArchiveDialog', false);\n\t\t\t\t_this2.refreshRoute();\n\t\t\t});\n\t\t},\n\t\tunarchive: function unarchive(items, callback) {\n\t\t\tvar _this3 = this;\n\n\t\t\tcallback = callback !== undefined ? callback : function () {};\n\t\t\tEmber.RSVP.all(items.map(function (item) {\n\t\t\t\tEmber.set(item, 'archivedOn', '_-NULL-_');\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\t_this3.refreshRoute();\n\t\t\t\tEmber.run.next(function () {\n\t\t\t\t\treturn callback();\n\t\t\t\t});\n\t\t\t\t_this3.clearEdit();\n\t\t\t});\n\t\t},\n\t\topenArchiveDialog: function openArchiveDialog(items) {\n\t\t\tEmber.set(this, 'archiveItems', items);\n\t\t\tEmber.set(this, 'showArchiveDialog', true);\n\t\t},\n\t\tcreateDuplicateProject: function createDuplicateProject(project, newParent) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar params = {\n\t\t\t\ttitle: Ember.get(project, 'title'),\n\t\t\t\torganizationId: Ember.get(this, 'auth.organization.id')\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(Ember.get(project, 'parentProjectId'))) {\n\t\t\t\tparams.parentProjectId = Ember.get(newParent, 'id');\n\t\t\t} else {\n\t\t\t\tparams.title = Ember.get(this, 'duplicateTitle');\n\t\t\t}\n\n\t\t\tvar newProject = this.store.createRecord('project', params);\n\t\t\treturn newProject.saveBatch(true).then(function (nProject) {\n\t\t\t\t// get this projects children\n\t\t\t\treturn _this4.store.query('project', { parent_project_id: Ember.get(project, 'id') }).then(function (children) {\n\t\t\t\t\treturn Ember.RSVP.all(children.map(function (child) {\n\t\t\t\t\t\tif (!Ember.isNone(child) && !Ember.isNone(nProject)) {\n\t\t\t\t\t\t\treturn _this4.createDuplicateProject(child, nProject);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_logger.default.error('child or parent project was undefined');\n\t\t\t\t\t\t}\n\t\t\t\t\t})).then(function () {\n\t\t\t\t\t\treturn nProject;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\teditAction: null,\n\t\teditItems: null,\n\n\t\t/**\n   * Clears the edit action\n   *\n   * @public\n   * @method clearEdit\n   */\n\t\tclearEdit: function clearEdit() {\n\t\t\t// torpid-list sets isSelected on the model\n\t\t\t// so loop through the models and set isSelected\n\t\t\t// to false to uncheck the checkboxes\n\t\t\tEmber.get(this, 'editItems').forEach(function (item) {\n\t\t\t\tEmber.set(item, 'isSelected', false);\n\t\t\t});\n\n\t\t\t// set local vars back to defaults\n\t\t\tEmber.set(this, 'editAction', null);\n\t\t\tEmber.set(this, 'editItems', []);\n\t\t\tEmber.set(this, 'edit', false);\n\t\t\tEmber.set(this, 'hideRowActions', false);\n\n\t\t\tthis.sendFilter({\n\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t});\n\t\t},\n\t\tvalidateFilters: function validateFilters(options) {\n\t\t\tvar isAll = Ember.isNone(options.group);\n\t\t\tvar isUngrouped = !Ember.isNone(options.group) && options.group === 'ungrouped';\n\t\t\tvar isArchived = !Ember.isNone(options.group) && options.group !== 'archived';\n\n\t\t\tif (options.filter) {\n\t\t\t\tif ((!Ember.isEmpty(options.search) || !isAll && !isUngrouped && !isArchived) && !options.page) {\n\t\t\t\t\toptions.page = 1;\n\t\t\t\t\toptions.page_size = 1000;\n\t\t\t\t} else if ((isUngrouped || isArchived) && !options.page) {\n\t\t\t\t\toptions.page = 1;\n\t\t\t\t\toptions.page_size = Ember.get(this, 'page_size');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toptions.filter = options.filter === true ? true : false;\n\t\t\toptions.group = Ember.isNone(options.group) ? null : options.group;\n\t\t\toptions.search = Ember.isEmpty(options.search) ? '' : options.search;\n\n\t\t\treturn true;\n\t\t},\n\t\tmoveToGroup: function moveToGroup(items) {\n\t\t\tif (!Ember.isNone(items) && Ember.get(items, 'length') > 0) {\n\t\t\t\tEmber.set(this, 'groupMembers', items);\n\t\t\t\tEmber.set(this, 'showMoveGroupDialog', true);\n\t\t\t}\n\t\t},\n\t\taddProjectToGroup: function addProjectToGroup(group) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar groupId = !Ember.isNone(group) ? Ember.get(group, 'id') : \"_-NULL-_\";\n\t\t\tvar models = Ember.get(this, 'groupMembers');\n\t\t\treturn Ember.RSVP.all(models.map(function (item) {\n\t\t\t\tEmber.set(item, 'projectGroupId', groupId);\n\t\t\t\treturn item.save();\n\t\t\t})).then(function () {\n\t\t\t\tEmber.set(_this5, 'showMoveGroupDialog', false);\n\t\t\t\tEmber.set(_this5, 'groupMembers', []);\n\t\t\t\tEmber.set(_this5, 'selectedGroup', null);\n\t\t\t\t_this5.refreshRoute();\n\t\t\t});\n\t\t},\n\t\t_createGroup: function _createGroup(groupName) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar organizationId = Ember.get(this, 'auth.organization.id');\n\t\t\treturn this.store.createRecord('project-group', { groupName: groupName, organizationId: organizationId }).save().finally(function () {\n\t\t\t\treturn _this6.getGroups();\n\t\t\t});\n\t\t},\n\t\trefreshRoute: function refreshRoute() {\n\t\t\tthis.send('refreshModel');\n\t\t},\n\n\n\t\tarchiveMessage: Ember.computed('archiveItems.@each', function () {\n\t\t\tif (Ember.get(this, 'archiveItems.length') > 1) {\n\t\t\t\tvar string = 'This action will archive any subprojects within these ' + Ember.get(this, 'archiveItems.length') + ' projects.';\n\t\t\t\treturn (0, _utils.loc)(string);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('This action will archive any subprojects within this project.');\n\t\t\t}\n\t\t}),\n\n\t\tarchiveHeader: Ember.computed('archiveItems', function () {\n\t\t\tif (Ember.get(this, 'archiveItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('Archive Projects');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Archive Project');\n\t\t\t}\n\t\t}),\n\n\t\tunarchiveHeader: Ember.computed('editItems.@each', function () {\n\t\t\tif (Ember.get(this, 'editItems.length') > 1) {\n\t\t\t\treturn (0, _utils.loc)('Unarchive Subprojects');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Unarchive Subproject');\n\t\t\t}\n\t\t}),\n\n\t\tunarchiveMessage: Ember.computed('editItems.@each', function () {\n\t\t\tif (Ember.get(this, 'editItems.length') > 1) {\n\t\t\t\tvar string = 'This action will restore any subprojects within these ' + Ember.get(this, 'editItems.length') + ' projects.';\n\t\t\t\treturn (0, _utils.loc)(string);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('This action will restore any subprojects within this project');\n\t\t\t}\n\t\t}),\n\n\t\tinitNewProject: function initNewProject() {\n\t\t\tvar newProject = this.store.createRecord('project', {\n\t\t\t\torganizationId: Ember.get(this, 'auth.organization.id')\n\t\t\t});\n\n\t\t\tvar newProjectInfo = this.store.createRecord('project-info', {\n\t\t\t\tlocationRadius: kDefaultLocation.locationRadius,\n\t\t\t\tlatitude: kDefaultLocation.latitude,\n\t\t\t\tlongitude: kDefaultLocation.longitude\n\t\t\t});\n\n\t\t\tthis.setProperties({\n\t\t\t\tuseGeolocation: false,\n\t\t\t\tnewProject: newProject,\n\t\t\t\tnewProjectInfo: newProjectInfo,\n\t\t\t\t_projectCostCodeLinks: []\n\t\t\t});\n\t\t},\n\n\n\t\tonUseGeolocationChange: Ember.observer('useGeolocation', function () {\n\t\t\tif (Ember.get(this, 'showDialog')) {\n\t\t\t\tif (Ember.get(this, 'useGeolocation') && Ember.isNone(Ember.get(this, 'newProjectInfo.locationRadius'))) {\n\t\t\t\t\tEmber.get(this, 'newProjectInfo').setProperties(kDefaultLocation);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/*\n   * Cost Code Select Actions\n   */\n\n\t\tgetProjectCostCodeLinks: function getProjectCostCodeLinks() {\n\t\t\t_logger.default.info(this, 'getProjectCostCodeLinks');\n\n\t\t\treturn Ember.RSVP.resolve([]);\n\t\t},\n\t\trecieveCostCodeChanges: function recieveCostCodeChanges(_projectCostCodeLinks) {\n\t\t\t_logger.default.info(this, 'recieveCostCodeChanges', _projectCostCodeLinks);\n\t\t\tEmber.setProperties(this, { _projectCostCodeLinks: _projectCostCodeLinks });\n\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\t\trollbackCostCodeChanges: function rollbackCostCodeChanges() {\n\t\t\tvar _this7 = this;\n\n\t\t\t_logger.default.info(this, 'rollbackCostCodeChanges', this.get('_projectCostCodeLinks'));\n\n\t\t\tif (!Ember.isEmpty(Ember.get(this, '_projectCostCodeLinks'))) {\n\t\t\t\tEmber.get(this, '_projectCostCodeLinks').filterBy('hasDirtyAttributes').forEach(function (model) {\n\t\t\t\t\treturn model.rollbackAttributes();\n\t\t\t\t});\n\n\t\t\t\tEmber.set(this, '_projectCostCodeLinks', null);\n\t\t\t}\n\n\t\t\treturn this.getProjectCostCodeLinks().then(function (_projectCostCodeLinks) {\n\t\t\t\treturn Ember.setProperties(_this7, { _projectCostCodeLinks: _projectCostCodeLinks });\n\t\t\t});\n\t\t},\n\t\tsaveCostCodeLinks: function saveCostCodeLinks(projectId) {\n\t\t\tvar _projectCostCodeLinks = Ember.get(this, '_projectCostCodeLinks');\n\n\t\t\tif (Ember.get(this, 'isLinkedCostCodesEnabled') && !Ember.isNone(_projectCostCodeLinks)) {\n\t\t\t\t_projectCostCodeLinks.setEach('projectId', projectId);\n\n\t\t\t\treturn Ember.RSVP.allSettled(_projectCostCodeLinks.map(function (link) {\n\t\t\t\t\treturn link.save();\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\n\n\t\t// when a group is deleted, ungroup all the cost-code's which were assigned to it\n\t\tungroupOrphans: function ungroupOrphans(group) {\n\t\t\tvar _this8 = this;\n\n\t\t\t// Logger.info(this ,'ungroupOrphans', group, get(group, 'id'));\n\n\t\t\tif (Ember.isNone(group)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tvar project_group_id = Ember.get(group, 'id');\n\t\t\tvar params = {\n\t\t\t\tproject_group_id: project_group_id,\n\t\t\t\tpage_size: 1000\n\t\t\t};\n\n\t\t\tEmber.set(this, 'isLoading', true);\n\t\t\treturn Ember.get(this, 'store').findAll('project', params).then(function (projects) {\n\t\t\t\t// Logger.info(this ,'ungroupOrphans', 'orphans', get(projects, 'length'));\n\n\t\t\t\tprojects.setEach('projectGroupId', null);\n\n\t\t\t\treturn Ember.RSVP.all(projects.invoke('save'));\n\t\t\t}).then(function () {\n\t\t\t\treturn _this8.refreshRoute();\n\t\t\t}).finally(function () {\n\t\t\t\treturn Ember.set(_this8, 'isLoading', false);\n\t\t\t});\n\t\t},\n\t\tscrollToTop: function scrollToTop() {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar $addProjectModal = Ember.$('.v-add-project-dialog').closest('.modal-dialog-body');\n\n\t\t\t// short circuit if the modal no longer exists\n\t\t\tif (!$addProjectModal.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// have this method continue callilng itself until the saving notice is no longer visible\n\t\t\tif (Ember.$('.autosave-signal.active').length) {\n\t\t\t\treturn Ember.run.later(this, function () {\n\t\t\t\t\treturn _this9.scrollToTop();\n\t\t\t\t}, 100);\n\t\t\t}\n\n\t\t\t// put the cursor in the first input\n\t\t\t$addProjectModal.find('input').first().focus();\n\n\t\t\t// scroll the modal top the top\n\t\t\t$addProjectModal.get(0).scrollIntoView();\n\t\t},\n\n\n\t\tactions: {\n\t\t\taddProjectToGrpupAction: function addProjectToGrpupAction(project) {\n\t\t\t\tthis.addProjectToGroup(project);\n\t\t\t},\n\t\t\trowItemSelectAction: function rowItemSelectAction(action, member, project) {\n\t\t\t\tif (Ember.get(action, 'key') === 'archive') {\n\t\t\t\t\tthis.openArchiveDialog([project]);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'unarchive') {\n\t\t\t\t\tEmber.set(this, 'showUnarchiveDialog', true);\n\t\t\t\t\tEmber.set(this, 'editItems', [project]);\n\t\t\t\t\t// this.unarchive([project]);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'duplicate') {\n\t\t\t\t\tEmber.set(this, 'duplicateProject', project);\n\t\t\t\t\tEmber.set(this, 'duplicateDialog', true);\n\t\t\t\t} else if (Ember.get(action, 'key') === 'move-to-group') {\n\t\t\t\t\tthis.moveToGroup([project]);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error(\"An unrecognized action was called in the controller/project/index actionView\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tprojectSelected: function projectSelected(isChecked, item) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.get(this, 'editItems').pushObject(item);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.get(this, 'editItems').removeObject(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectAll: function selectAll(isChecked, items) {\n\t\t\t\tif (isChecked) {\n\t\t\t\t\tEmber.set(this, 'editItems', items);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'editItems', []);\n\t\t\t\t}\n\t\t\t},\n\t\t\teditListAction: function editListAction(action) {\n\t\t\t\tEmber.set(this, 'editAction', Ember.get(action, 'key'));\n\t\t\t\tEmber.set(this, 'hideRowActions', true);\n\t\t\t\tEmber.set(this, 'edit', true);\n\n\t\t\t\tvar params = {\n\t\t\t\t\tfilter: true,\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tungrouped: Ember.get(this, 'ungrouped'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t};\n\n\t\t\t\tif (Ember.get(action, 'key') === 'unarchive') {\n\t\t\t\t\tparams.group = 'archived';\n\t\t\t\t}\n\n\t\t\t\tthis.sendFilter(params);\n\t\t\t},\n\t\t\tsubmitEditAction: function submitEditAction() {\n\t\t\t\tvar filteredItems = Ember.get(this, 'editItems');\n\n\t\t\t\tif (Ember.isNone(filteredItems) || Ember.get(filteredItems, 'length') === 0) {\n\t\t\t\t\tthis.clearEdit();\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'archive') {\n\t\t\t\t\tthis.openArchiveDialog(filteredItems);\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'unarchive') {\n\t\t\t\t\tEmber.set(this, 'showUnarchiveDialog', true);\n\t\t\t\t\t// this.unarchive(filteredItems, function()\n\t\t\t\t\t// {\n\t\t\t\t\t// \tthis.clearEdit();\n\t\t\t\t\t// });\n\t\t\t\t} else if (Ember.get(this, 'editAction') === 'move-to-group') {\n\t\t\t\t\tif (!Ember.isNone(filteredItems) && Ember.get(this, 'editItems.length') > 0) {\n\t\t\t\t\t\tEmber.set(this, 'groupMembers', filteredItems);\n\t\t\t\t\t\tEmber.set(this, 'showMoveGroupDialog', true);\n\t\t\t\t\t}\n\t\t\t\t\tthis.clearEdit();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancelEditAction: function cancelEditAction() {\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tconfirmUnarchive: function confirmUnarchive() {\n\t\t\t\tthis.unarchive(Ember.get(this, 'editItems'));\n\t\t\t\tEmber.set(this, 'showUnarchiveDialog', false);\n\t\t\t},\n\t\t\tcancelUnarchive: function cancelUnarchive() {\n\t\t\t\tEmber.set(this, 'showUnarchiveDialog', false);\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\n\n\t\t\t/**\n    * opens the new project dialog\n    * and creates a new project model\n    *\n    * @public\n    * @method openNewProjectDialog\n    * @returns {void}\n    */\n\t\t\topenNewProjectDialog: function openNewProjectDialog() {\n\t\t\t\tthis.initNewProject();\n\n\t\t\t\tEmber.setProperties(this, {\n\t\t\t\t\tshowDialog: true,\n\t\t\t\t\t_projectCostCodeLinks: []\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseNewProjectDialog: function closeNewProjectDialog() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\n\t\t\t\tif (!Ember.isNone(Ember.get(this, 'newProject'))) {\n\t\t\t\t\tEmber.get(this, 'newProject').rollbackAttributes();\n\t\t\t\t}\n\t\t\t\tEmber.set(this, 'newProject', null);\n\t\t\t},\n\t\t\tsaveNewProject: function saveNewProject() {\n\t\t\t\tvar _this10 = this;\n\n\t\t\t\tvar newProject = Ember.get(this, 'newProject');\n\t\t\t\tvar newProjectInfo = Ember.get(this, 'newProjectInfo');\n\n\t\t\t\tEmber.set(this, 'mapError', false);\n\n\t\t\t\tif (!Ember.get(this, 'useGeolocation')) {\n\t\t\t\t\tnewProjectInfo.clearGeolocation();\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(Ember.get(newProject, 'title'))) {\n\t\t\t\t\tif (Ember.get(this, 'model').isAny('matchTitle', Ember.get(newProject, 'title').toLowerCase())) {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Project name must be unique'));\n\t\t\t\t\t} else if (Ember.get(newProjectInfo, 'reminder') && !Ember.get(newProjectInfo, 'hasLocation')) {\n\t\t\t\t\t\tEmber.set(this, 'mapError', true);\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Geolocation required for location reminders.'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn newProject.save().then(function (project) {\n\t\t\t\t\t\t\tEmber.set(newProjectInfo, 'projectId', project.id);\n\n\t\t\t\t\t\t\treturn Ember.RSVP.all([newProjectInfo.save(), _this10.saveCostCodeLinks(project.id)]);\n\t\t\t\t\t\t}).then(function () {\n\t\t\t\t\t\t\t_this10.initNewProject();\n\t\t\t\t\t\t\t_this10.refreshRoute();\n\t\t\t\t\t\t\t_this10.scrollToTop();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('Project name is required'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tprojectClicked: function projectClicked(project) {\n\t\t\t\tif (!Ember.get(this, 'edit')) {\n\t\t\t\t\tthis.transitionToRoute('project.detail', Ember.get(project, 'id'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tsetSelectedGroup: function setSelectedGroup(view, group) {\n\t\t\t\tEmber.set(this, 'selectedGroup', group);\n\t\t\t},\n\t\t\taddNewGroup: function addNewGroup(value) {\n\t\t\t\tthis._createGroup(value);\n\t\t\t},\n\t\t\tcreateGroup: function createGroup() {\n\t\t\t\tvar _this11 = this;\n\n\t\t\t\tvar name = Ember.get(this, 'newGroupName');\n\n\t\t\t\tif (!Ember.isEmpty(name)) {\n\t\t\t\t\tthis._createGroup(name).then(function () {\n\t\t\t\t\t\tEmber.set(_this11, 'newGroupName', '');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAddGroup: function showAddGroup() {\n\t\t\t\tEmber.set(this, 'shouldAddGroup', !Ember.get(this, 'shouldAddGroup'));\n\t\t\t},\n\t\t\tcloseGroupDialog: function closeGroupDialog() {\n\t\t\t\tEmber.set(this, 'showMoveGroupDialog', false);\n\t\t\t},\n\t\t\tarchiveProject: function archiveProject() {\n\t\t\t\tthis.archive();\n\t\t\t},\n\t\t\tcloseArchiveDialog: function closeArchiveDialog() {\n\t\t\t\tEmber.set(this, 'archiveItems', null);\n\t\t\t\tEmber.set(this, 'showArchiveDialog', false);\n\t\t\t\tthis.clearEdit();\n\t\t\t},\n\t\t\tfilterGroup: function filterGroup(group) {\n\t\t\t\tvar options = {\n\t\t\t\t\tsearch: Ember.get(this, 'search'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(group, 'id')\n\t\t\t\t};\n\t\t\t\tthis.sendFilter(options);\n\t\t\t},\n\t\t\tchangePage: function changePage(page) {\n\t\t\t\tpage = parseInt(page, 10);\n\t\t\t\tpage = !isNaN(page) && page > 1 ? page : 1;\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: page,\n\t\t\t\t\tpage_size: Ember.get(this, 'page_size'),\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\t\t\tsearchAction: function searchAction(keyword) {\n\t\t\t\tkeyword = !Ember.isEmpty(keyword) ? keyword : '';\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tsearch: keyword,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group')\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangeSize: function changeSize(size) {\n\t\t\t\tsize = parseInt(size, 10);\n\t\t\t\tsize = !isNaN(size) && size > 30 ? size : 30;\n\n\t\t\t\tthis.sendFilter({\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tpage_size: size,\n\t\t\t\t\tfilter: Ember.get(this, 'filter'),\n\t\t\t\t\tgroup: Ember.get(this, 'group'),\n\t\t\t\t\tsearch: Ember.get(this, 'search')\n\t\t\t\t});\n\t\t\t},\n\t\t\tsaveDuplicate: function saveDuplicate() {\n\t\t\t\tvar _this12 = this;\n\n\t\t\t\tif (!Ember.isNone(Ember.get(this, 'duplicateTitle')) && !Ember.isEmpty(Ember.get(this, 'duplicateTitle'))) {\n\t\t\t\t\tvar project = Ember.get(this, 'duplicateProject');\n\t\t\t\t\treturn this.createDuplicateProject(project).catch(function () {\n\t\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)(\"There was an error duplicating the project\"));\n\t\t\t\t\t}).finally(function () {\n\t\t\t\t\t\treturn _this12.refreshRoute();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.reject((0, _utils.loc)('You must provide a project title.'));\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseDuplicate: function closeDuplicate() {\n\t\t\t\tEmber.set(this, 'duplicateProject', null);\n\t\t\t\tEmber.set(this, 'duplicateDialog', false);\n\t\t\t},\n\n\n\t\t\t/*** Project Import ***/\n\n\t\t\topenImportAction: function openImportAction() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', true);\n\t\t\t},\n\t\t\tcloseImportAction: function closeImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t},\n\t\t\tcancelImportAction: function cancelImportAction() {\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tEmber.set(this, 'showDialog', true);\n\t\t\t},\n\t\t\timportCompleteAction: function importCompleteAction() {\n\t\t\t\tEmber.set(this, 'showDialog', false);\n\t\t\t\tEmber.set(this, 'showImportDialog', false);\n\t\t\t\tthis.refreshRoute();\n\t\t\t},\n\n\n\t\t\t/*** Project Import End ***/\n\n\t\t\t/*\n    * Cost Code Select Actions\n    */\n\t\t\tonCancelCostCodeChanges: function onCancelCostCodeChanges() {\n\t\t\t\t_logger.default.info(this, 'onCancelCostCodeChanges');\n\n\t\t\t\treturn this.rollbackCostCodeChanges();\n\t\t\t},\n\t\t\tonSaveManagerChanges: function onSaveManagerChanges(projectCostCodeLinks) {\n\t\t\t\t_logger.default.info(this, 'onSaveManagerChanges', { projectCostCodeLinks: projectCostCodeLinks });\n\n\t\t\t\tvar projectId = Ember.get(this, 'project.id');\n\t\t\t\tprojectCostCodeLinks.setEach('projectId', projectId);\n\n\t\t\t\treturn this.recieveCostCodeChanges(projectCostCodeLinks);\n\t\t\t},\n\t\t\tonDeleteGroup: function onDeleteGroup(group) {\n\t\t\t\t_logger.default.info(this, 'onDeleteGroup', group);\n\n\t\t\t\treturn this.ungroupOrphans(group);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/activity', ['exports', '@busy-web/utils', 'busy-app/utils/docs', 'busy-app/utils/logger', 'busy-app/utils/date-range-pay-period'], function (exports, _utils, _docs, _logger, _dateRangePayPeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tpayPeriod: Ember.inject.service('payPeriod'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tgraylog: Ember.inject.service('graylog'),\n\n\t\tqueryParams: ['type', 'start', 'end', 'custom', 'selected', 'column'],\n\n\t\ttype: 'member-project',\n\t\tstart: 0,\n\t\tend: 0,\n\t\tcustom: false,\n\t\tcolumn: 'total-hours',\n\t\tselected: 'weekly',\n\n\t\tshowDialog: false,\n\t\tupgradeDialog: false,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\n\t\ttotalHours: true,\n\t\ttotalCost: false,\n\t\tregHours: false,\n\t\tregCost: false,\n\t\totHours: false,\n\t\tot2Hours: false,\n\t\totCost: false,\n\t\tot2Cost: false,\n\t\toverburden: false,\n\n\t\tdateRangeActions: null,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\t\t\tthis.set('minDate', _utils.Time.date().subtract(3, 'years').startOf('day').unix());\n\n\t\t\tthis.set('isMobile', Ember.$(document).width() < 680);\n\t\t\tEmber.$(window).off('resize.activity');\n\t\t\tEmber.$(window).on('resize.activity', Ember.run(this, function () {\n\t\t\t\t_this.set('isMobile', Ember.$(document).width() < 680);\n\t\t\t}));\n\n\t\t\tthis.set('dateRangeActions', [(0, _dateRangePayPeriod.default)(this.get('payPeriod'))]);\n\t\t},\n\n\n\t\tnoTrial: Ember.computed('subscription.subscriptionStatus.{isTrialEnded,userCanceled}', function () {\n\t\t\tif (this.get('subscription.subscriptionStatus.isTrialEnded') && !this.get('subscription.subscriptionStatus.userCanceled')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\treportTitle: Ember.computed('type', function () {\n\t\t\tif (this.get('type') === 'member') {\n\t\t\t\treturn (0, _utils.loc)('Employee');\n\t\t\t} else if (this.get('type') === 'member-project') {\n\t\t\t\treturn (0, _utils.loc)('Project');\n\t\t\t} else if (this.get('type') === 'member-cost-code') {\n\t\t\t\treturn (0, _utils.loc)('Cost Code');\n\t\t\t} else if (this.get('type') === 'member-equipment') {\n\t\t\t\treturn (0, _utils.loc)('Equipment');\n\t\t\t} else if (this.get('type') === 'member-day') {\n\t\t\t\treturn (0, _utils.loc)('Date');\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}),\n\n\t\tsettings: Ember.computed('model', 'reportTitle', 'totalHours', 'totalCost', 'regHours', 'regCost', 'otHours', 'otCost', 'ot2Hours', 'ot2Cost', 'overburden', function () {\n\t\t\tvar settings = Ember.get(this, 'model');\n\t\t\tEmber.set(settings, 'reportTitle', Ember.get(this, 'reportTitle')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'totalHours', Ember.get(this, 'totalHours')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'totalCost', Ember.get(this, 'totalCost')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'regHours', Ember.get(this, 'regHours')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'regCost', Ember.get(this, 'regCost')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'otHours', Ember.get(this, 'otHours')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'otCost', Ember.get(this, 'otCost')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'ot2Hours', Ember.get(this, 'ot2Hours')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'ot2Cost', Ember.get(this, 'ot2Cost')); // eslint-disable-line ember/no-side-effects\n\t\t\tEmber.set(settings, 'overburden', Ember.get(this, 'overburden')); // eslint-disable-line ember/no-side-effects\n\n\t\t\tEmber.set(settings, 'length', Object.values(settings).filter(function (r) {\n\t\t\t\treturn r === true;\n\t\t\t}).length); // eslint-disable-line ember/no-side-effects\n\n\t\t\treturn settings;\n\t\t}),\n\n\t\tcreatedDate: Ember.computed(function () {\n\t\t\treturn _utils.Time.date().format('MM/DD/YYYY h:mm A');\n\t\t}),\n\n\t\tcolumnName: Ember.computed('isMobile', 'column', function () {\n\t\t\tif (this.get('isMobile')) {\n\t\t\t\treturn this.get('column');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Total Hours');\n\t\t\t}\n\t\t}),\n\n\t\tstackedDates: Ember.computed('type', function () {\n\t\t\treturn this.get('type') === 'member';\n\t\t}),\n\n\t\tstartDate: Ember.computed('start', function () {\n\t\t\treturn this.get('start') * 1000;\n\t\t}),\n\n\t\tendDate: Ember.computed('end', function () {\n\t\t\treturn this.get('end') * 1000;\n\t\t}),\n\n\t\tnoGraph: Ember.computed('selected', 'customOverRange', function () {\n\t\t\tif (this.get('selected') === 'daily' || this.get('customOverRange')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t/**\n   * _start and _end are set by the route for the header date only\n   *\n   */\n\t\theaderDateRange: Ember.computed('model.{start,end}', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('model.start')) && !Ember.isNone(this.get('model.end'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('model.start'), 'MM/DD/YYYY') + ' - ' + _utils.Time.timeFormat(this.get('model.end'), 'MM/DD/YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tgroupSelect: Ember.computed('type', function () {\n\t\t\tvar groups = [Ember.Object.create({ key: 'member', value: (0, _utils.loc)('Employee'), _selected: this.get('type') === 'member' }), Ember.Object.create({ key: 'member-project', value: (0, _utils.loc)('Project'), _selected: this.get('type') === 'member-project' }), Ember.Object.create({ key: 'member-cost-code', value: (0, _utils.loc)('Cost Code'), _selected: this.get('type') === 'member-cost-code' }), Ember.Object.create({ key: 'member-equipment', value: (0, _utils.loc)('Equipment'), _selected: this.get('type') === 'member-equipment' })];\n\n\t\t\tif (this.get('feature.activityDateReport')) {\n\t\t\t\tgroups.push(Ember.Object.create({ key: 'member-day', value: (0, _utils.loc)('Date'), _selected: this.get('type') === 'member-day' }));\n\t\t\t}\n\t\t\treturn groups;\n\t\t}),\n\n\t\tgraphDataType: 'total-seconds',\n\n\t\ttotalGraphHours: Ember.computed('barChartArray', function () {\n\t\t\tvar totalHours = 0;\n\t\t\tif (!Ember.isEmpty(this.get('barChartArray'))) {\n\t\t\t\tthis.get('barChartArray').forEach(function (item) {\n\t\t\t\t\ttotalHours += item.get('totalHours');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn totalHours;\n\t\t}),\n\n\t\tgraphIsHours: Ember.computed('graphDataType', function () {\n\t\t\tvar graphType = this.get('graphDataType').split('-');\n\t\t\tif (graphType[graphType.length - 1] === 'seconds') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tdataType: Ember.computed('graphDataType', function () {\n\t\t\tvar graphType = this.get('graphDataType').split('-');\n\t\t\tif (graphType[graphType.length - 1] === 'seconds') {\n\t\t\t\treturn 'time';\n\t\t\t}\n\t\t\treturn 'currency';\n\t\t}),\n\n\t\tchartLabel: Ember.computed('graphDataType', function () {\n\t\t\tvar graphType = this.get('graphDataType').split('-');\n\t\t\tvar dataType = 'Hrs';\n\n\t\t\tif (graphType[graphType.length - 1] === 'cost') {\n\t\t\t\tdataType = 'Cost';\n\t\t\t}\n\t\t\tif (graphType[0] === 'overburden') {\n\t\t\t\tdataType = 'Cost';\n\t\t\t\treturn 'Labor Burden';\n\t\t\t}\n\t\t\treturn graphType[0].capitalize() + ' ' + dataType;\n\t\t}),\n\n\t\tsetBarChartArray: Ember.observer('model', 'graphDataType', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar graphDataType, dataType, type, dateType, dateRange, valueType, value, chartArray, modelName, queryParams;\n\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tthis.set('barChartArray', null);\n\t\t\t\t\t\t\tthis.set('customOverRange', false);\n\n\t\t\t\t\t\t\tgraphDataType = this.get('graphDataType');\n\t\t\t\t\t\t\tdataType = this.get('settings.type');\n\t\t\t\t\t\t\ttype = '';\n\n\t\t\t\t\t\t\tif (dataType === 'member-project') {\n\t\t\t\t\t\t\t\ttype = 'project';\n\t\t\t\t\t\t\t}if (dataType === 'member' || dataType === 'member-day') {\n\t\t\t\t\t\t\t\ttype = 'member';\n\t\t\t\t\t\t\t}if (dataType === 'member-cost-code') {\n\t\t\t\t\t\t\t\ttype = 'cost-code';\n\t\t\t\t\t\t\t}if (dataType === 'member-equipment') {\n\t\t\t\t\t\t\t\ttype = 'equipment';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdateType = 'day';\n\t\t\t\t\t\t\tdateRange = this.get('settings.end') - this.get('settings.start');\n\n\t\t\t\t\t\t\tif (dateRange > 5356800 && dateRange < 63936000) {\n\t\t\t\t\t\t\t\tdateType = 'month';\n\t\t\t\t\t\t\t\t// } else if (dateRange > 63936000) {\n\t\t\t\t\t\t\t\t// \tdateType = 'annual';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.get('custom') && dateRange >= 5356800) {\n\t\t\t\t\t\t\t\tthis.set('customOverRange', true);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalueType = graphDataType.split('-');\n\t\t\t\t\t\t\t\tvalue = valueType[valueType.length - 1];\n\t\t\t\t\t\t\t\tchartArray = this.setDayObjects();\n\n\t\t\t\t\t\t\t\tif (graphDataType === 'overburden-cost') {\n\t\t\t\t\t\t\t\t\tgraphDataType = 'overburden';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tmodelName = type + '-' + dateType + '-' + value;\n\t\t\t\t\t\t\t\tqueryParams = {\n\t\t\t\t\t\t\t\t\t_gte: { start_date: this.get('settings.start') },\n\t\t\t\t\t\t\t\t\t_lte: { start_date: this.get('settings.end') },\n\t\t\t\t\t\t\t\t\tpage_size: 10000\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tthis.store.query(modelName, queryParams).then(function () {\n\t\t\t\t\t\t\t\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(data) {\n\t\t\t\t\t\t\t\t\t\tvar weekArray, annualArray;\n\t\t\t\t\t\t\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\t\t\t\t\t\t\twhile (1) {\n\t\t\t\t\t\t\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0:\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* ********************************************************************\n              **\n              ** !! NOTICE !!\n              **\n              ** It is not currently possible to apply Group Scoping to the aggregates used in the chart, so for now, do not filter the graph\n              **\n              ******************************************************************** */\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// if the Group Scoped Permissions feature is enabled and applicable, filter out any employee not viewable\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// if (get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tconst authMember = get(this, 'auth.member');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tconst { id, memberGroupId } = getProperties(authMember, ['id', 'memberGroupId']);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tconst groupMemberQuery = { member_group_id: memberGroupId };\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tif (isNone(memberGroupId)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \t\tsetProperties(groupMemberQuery, { id });\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tconst groupMembers = await this.store.findAll('member', groupMemberQuery);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tconst memberGroupIds = new Set(groupMembers.mapBy('id'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \tdata = data.filter(item => memberGroupIds.has(get(item, 'memberId')));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// }\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar chartObj = chartArray.findBy('label', item.get('startDateFormatted'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!Ember.isNone(item.get(type.camelize() + \"Id\"))) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartObj.totalHours += item.get(graphDataType.camelize());\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartObj.startOfWeek = item.get('startOfWeek');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartObj.weekRange = item.get('weekRangeFormatted');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dateRange > 2678400 && dateRange < 5443200) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tweekArray = [];\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartArray.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar weekObject = weekArray.findBy('startOfWeek', item.get('startOfWeek'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!weekObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tweekObject = Ember.Object.create({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.get('weekRange'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttotalHours: item.get('totalHours'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstartOfWeek: item.get('startOfWeek'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstartDate: item.get('startDate')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tweekArray.pushObject(weekObject);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tweekObject.totalHours += item.get('totalHours');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_this2.set('barChartArray', weekArray.sortBy('startDate'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (dateRange >= 5356800) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tannualArray = [];\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartArray.forEach(function (item) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar annualObject = annualArray.findBy('label', item.get('label'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!annualObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tannualObject = Ember.Object.create({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.get('label'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttotalHours: item.get('totalHours'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstartDate: item.get('startDate')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tannualArray.pushObject(annualObject);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tannualObject.totalHours += item.get('totalHours');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_this2.set('barChartArray', annualArray.sortBy('startDate'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_this2.set('barChartArray', chartArray.sortBy('startDate'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (_this2.get('totalGraphHours') === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_this2.set('barChartArray', null);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}, _callee, _this2);\n\t\t\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\t\t\treturn function (_x) {\n\t\t\t\t\t\t\t\t\t\treturn _ref2.apply(this, arguments);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee2, this);\n\t\t}))),\n\n\t\tsetDayObjects: function setDayObjects() {\n\t\t\tvar start = this.get('settings.start');\n\t\t\tvar end = this.get('settings.end');\n\t\t\tvar chartArray = [];\n\n\t\t\twhile (start <= end) {\n\t\t\t\tvar chartObj = Ember.Object.create({\n\t\t\t\t\tlabel: _utils.Time.date(start).format('MMM D'),\n\t\t\t\t\ttotalHours: 0,\n\t\t\t\t\tstartDate: start\n\t\t\t\t});\n\n\t\t\t\tchartArray.pushObject(chartObj);\n\t\t\t\tstart = _utils.Time.date(start).add(1, 'days').unix();\n\t\t\t}\n\t\t\treturn chartArray;\n\t\t},\n\n\n\t\t/* Graylog events */\n\n\t\tgraylogActivityReportDateTypeChanged: function graylogActivityReportDateTypeChanged(type) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity Report Date Type Changed',\n\t\t\t\tfull_message: 'Activity Report Date Type Changed',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_type: type,\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\t\tgraylogActivityReportColumnTypeChanged: function graylogActivityReportColumnTypeChanged(type) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity Report Column Type Changed',\n\t\t\t\tfull_message: 'Activity Report Column Type Changed',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.member.id'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_column: type,\n\t\t\t\t_view_level: 'top',\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\t\tgraylogActivityCsvExport: function graylogActivityCsvExport(type) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity Report Summary Viewed',\n\t\t\t\tfull_message: 'Activity Report Summary Viewed',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.member.id'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_report_type: type,\n\t\t\t\t_view_level: 'top',\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tcolumnChangeAction: function columnChangeAction(column, isActive) {\n\t\t\t\tthis.set(column, isActive);\n\t\t\t},\n\t\t\tdateChange: function dateChange(start, end, custom, selected) {\n\t\t\t\tif (selected === 'weekly' && this.get('selected') !== selected) {\n\t\t\t\t\tend = null;\n\t\t\t\t}\n\n\t\t\t\tthis.transitionToRoute('report.activity', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: end,\n\t\t\t\t\t\tcustom: custom,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\ttype: this.get('type'),\n\t\t\t\t\t\tcolumn: this.get('column')\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// allow view to destoy itself before\n\t\t\t\t// we destroy it.\n\t\t\t\t//later(this, function() {\n\t\t\t\tthis.send('refreshModel');\n\t\t\t\t//}, 500);\n\t\t\t},\n\t\t\tchangeGroup: function changeGroup(key) {\n\t\t\t\tthis.transitionToRoute('report.activity', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\tend: this.get('end'),\n\t\t\t\t\t\tcustom: this.get('model.custom'),\n\t\t\t\t\t\tselected: this.get('model.selected'),\n\t\t\t\t\t\ttype: key,\n\t\t\t\t\t\tcolumn: this.get('column')\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// allow view to destoy itself before\n\t\t\t\t// we destroy it.\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.send('refreshModel');\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tchangeGroupMobile: function changeGroupMobile(key) {\n\t\t\t\tthis.transitionToRoute('report.activity', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\tend: this.get('end'),\n\t\t\t\t\t\tcustom: this.get('model.custom'),\n\t\t\t\t\t\tselected: this.get('model.selected'),\n\t\t\t\t\t\ttype: this.get('type'),\n\t\t\t\t\t\tcolumn: key\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// allow view to destoy itself before\n\t\t\t\t// we destroy it.\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.send('refreshModel');\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tprintAction: function printAction() {\n\t\t\t\t_docs.default.print();\n\t\t\t},\n\t\t\tonSelectOption: function onSelectOption(item) {\n\t\t\t\t_logger.default.info('activity report', 'onSelectOption', item);\n\t\t\t\tthis.set('currentOption', item.key);\n\t\t\t},\n\t\t\tonSelectTab: function onSelectTab(item) {\n\t\t\t\t_logger.default.info('activity report', 'onSelectTab', item);\n\t\t\t\tthis.set('currentTab', item.key);\n\t\t\t},\n\t\t\tshowUpgradeDialog: function showUpgradeDialog() {\n\t\t\t\tthis.set('upgradeDialog', true);\n\t\t\t},\n\t\t\thideUpgradeDialog: function hideUpgradeDialog() {\n\t\t\t\tthis.set('upgradeDialog', false);\n\t\t\t},\n\t\t\tgoToUpgrade: function goToUpgrade() {\n\t\t\t\tthis.set('upgradeDialog', false);\n\t\t\t\tthis.get('proFeature').startUpgrade();\n\t\t\t},\n\t\t\tgoToTrial: function goToTrial() {\n\t\t\t\tthis.set('upgradeDialog', false);\n\t\t\t\tthis.get('proFeature').startTrial();\n\t\t\t},\n\t\t\tchangeGraphDataType: function changeGraphDataType(item) {\n\t\t\t\tthis.set('graphDataType', item);\n\t\t\t},\n\t\t\texportCSVAction: function exportCSVAction() {\n\t\t\t\tif (this.get('features.activityReport')) {\n\t\t\t\t\tthis.get('cController').exportCSV();\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('upgradeDialog', true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/activity/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tpController: null,\n\t\tfeatures: Ember.inject.service('features'),\n\t\tgraylog: Ember.inject.service('graylog'),\n\n\t\tsettings: Ember.computed('pController.settings', function () {\n\t\t\treturn this.get('pController.settings');\n\t\t}),\n\n\t\texportCSV: function exportCSV() {\n\t\t\tvar model = this.get('model');\n\t\t\tvar settings = this.get('model.settings');\n\t\t\tvar type = model.get('showType');\n\t\t\tvar dataModel = model.get(type);\n\t\t\tvar startDate = _utils.Time.date(settings.start).format('DDMMMYYYY');\n\t\t\tvar endDate = _utils.Time.date(settings.end).format('DDMMMYYYY');\n\n\t\t\tvar reportTitle = this.get('pController.reportTitle') + 'Activity(' + startDate + '-' + endDate + ')';\n\t\t\tconsole.log('\\uD83D\\uDE80 ~ file: index.js ~ line 29 ~ exportCSV ~ reportTitle', reportTitle);\n\n\t\t\tvar dataMap = {};\n\t\t\tif (type === 'startDate') {\n\t\t\t\tdataMap = {};\n\t\t\t\tdataMap.date = function (data) {\n\t\t\t\t\treturn _utils.Time.date(data.startDate).format('MM/DD/YYYY');\n\t\t\t\t};\n\t\t\t} else if (type === 'member') {\n\t\t\t\tdataMap = { 'First Name': 'member.firstName', 'Last Name': 'member.lastName', 'Employee ID': 'member.memberNumber' };\n\t\t\t} else if (type === 'project') {\n\t\t\t\tdataMap = { 'Project': 'project.title', 'Project Number': 'project.projectNumber' };\n\t\t\t} else if (type === 'equipment') {\n\t\t\t\tdataMap = { 'Equipment Name': 'equipment.equipmentName', 'Equipment Make/Model': 'equipment.makeModel' };\n\t\t\t} else if (type === 'costCode') {\n\t\t\t\tdataMap = { 'Cost Code': 'costCode.costCode', 'Cost Code Title': 'costCode.title' };\n\t\t\t}\n\n\t\t\tif (settings.regCost) {\n\t\t\t\tvar _key = type === 'project' ? 'totalRegularCost' : 'regularCost';\n\n\t\t\t\tdataMap.regularCost = function (data) {\n\t\t\t\t\treturn \"$\" + data[_key].toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.regHours) {\n\t\t\t\tvar _key2 = type === 'project' ? 'totalRegularSeconds' : 'regularSeconds';\n\n\t\t\t\tdataMap.regularHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data[_key2], 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.otCost) {\n\t\t\t\tvar _key3 = type === 'project' ? 'totalOvertimeCost' : 'overtimeCost';\n\n\t\t\t\tdataMap.overtimeCost = function (data) {\n\t\t\t\t\treturn \"$\" + data[_key3].toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.otHours) {\n\t\t\t\tvar _key4 = type === 'project' ? 'totalOvertimeSeconds' : 'overtimeSeconds';\n\n\t\t\t\tdataMap.overtimeHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data[_key4], 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.ot2Cost) {\n\t\t\t\tvar _key5 = type === 'project' ? 'totalDoubletimeCost' : 'doubletimeCost';\n\n\t\t\t\tdataMap.doubleTimeCost = function (data) {\n\t\t\t\t\treturn \"$\" + data[_key5].toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.ot2Hours) {\n\t\t\t\tvar _key6 = type === 'project' ? 'totalDoubletimeSeconds' : 'doubletimeSeconds';\n\n\t\t\t\tdataMap.doubleTimeHours = function (data) {\n\t\t\t\t\treturn _utils.Time.convertSecondsString(data[_key6], 20, true, false);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.overburden) {\n\t\t\t\tvar _key7 = type === 'project' ? 'totalOverburden' : 'overburden';\n\n\t\t\t\tdataMap.laborBurden = function (data) {\n\t\t\t\t\treturn \"$\" + data[_key7].toFixed(2);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (settings.totalCost) {\n\t\t\t\tif (this.get('features.reportLaborBurden')) {\n\t\t\t\t\tvar _key8 = type === 'project' ? 'totalTotalOverburdenCost' : 'totalOverburdenCost';\n\n\t\t\t\t\tdataMap.totalCost = function (data) {\n\t\t\t\t\t\treturn \"$\" + data[_key8].toFixed(2);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tvar _key9 = type === 'project' ? 'totalTotalCost' : 'totalCost';\n\n\t\t\t\t\tdataMap.totalCost = function (data) {\n\t\t\t\t\t\treturn \"$\" + data[_key9].toFixed(2);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar key = type === 'project' ? 'totalTotalSeconds' : 'totalSeconds';\n\n\t\t\tdataMap.totalHours = function (data) {\n\t\t\t\treturn _utils.Time.convertSecondsString(data[key], 20, true, false);\n\t\t\t};\n\t\t\tconsole.log('\\uD83D\\uDE80 ~ file: index.js ~ line 122 ~ exportCSV ~ dataMap', dataMap);\n\n\t\t\tthis.store.csvExport(dataModel.get('content'), dataMap, reportTitle, true, true);\n\t\t},\n\n\n\t\t/* Graylog events */\n\n\t\tgraylogActivityReportSummaryViewed: function graylogActivityReportSummaryViewed(type) {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Activity Report Summary Viewed',\n\t\t\t\tfull_message: 'Activity Report Summary Viewed',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.memberId'),\n\t\t\t\t_member_position_id: this.get('auth.member.positionId'),\n\t\t\t\t_summary_type: type,\n\t\t\t\t_is_pro_account: this.get('subscription.isProAccount')\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\ttoggleChildren: function toggleChildren(item) {\n\t\t\t\tif (!Ember.isEmpty(item.get('children'))) {\n\t\t\t\t\titem.set('showChildren', !item.get('showChildren'));\n\t\t\t\t}\n\t\t\t},\n\t\t\topenTableRow: function openTableRow(model) {\n\t\t\t\tvar isUnassignedProject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\t\tthis.graylogActivityReportSummaryViewed(this.get('model.showType'));\n\t\t\t\tif (Ember.isNone(this.get('model.id'))) {\n\t\t\t\t\tthis.set('model.id', '_-NULL-_');\n\t\t\t\t}\n\n\t\t\t\tvar type = this.get('model.showType');\n\t\t\t\tthis.set('summaryType', type === 'startDate' ? 'day' : type);\n\t\t\t\tthis.set('summaryModel', model);\n\t\t\t\tthis.set('summaryDialog', true);\n\t\t\t\tthis.set('isUnassignedProject', isUnassignedProject);\n\t\t\t},\n\t\t\tcloseDialog: function closeDialog() {\n\t\t\t\tthis.set('summaryDialog', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/employee-list', ['exports', 'busy-app/utils/docs'], function (exports, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\thideExport: true,\n\t\tmeta: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setMeta();\n\t\t},\n\t\tsetMeta: function setMeta() {\n\t\t\tvar meta = [Ember.Object.create({ header: 'Employee Id', machineName: 'memberNumber', sortable: true }), Ember.Object.create({ header: 'First Name', sortable: true }), Ember.Object.create({ header: 'Last Name', sortable: true }), Ember.Object.create({ header: 'Username', sortable: true }), Ember.Object.create({ header: 'Email', machineName: 'latestEmail', sortable: true }), Ember.Object.create({ header: 'Phone', sortable: true }), Ember.Object.create({ header: 'Position', machineName: 'positionName', sortable: true })];\n\n\t\t\tthis.set('meta', meta);\n\t\t},\n\n\n\t\tactions: {\n\t\t\tprintAction: function printAction() {\n\t\t\t\tvar container = Ember.$('.v-report-employee-list');\n\t\t\t\t_docs.default.print(container);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/index', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var GRAYLOG_REPORTS = {\n    INDEX: 'index',\n    PAYROLL_EMPLOYEE: 'payroll_employee',\n    PAYROLL_EMPLOYEE_PROJECT: 'payroll_employee_project',\n    PAYROLL_PROJECT_EMPLOYEE: 'payroll_project_employee',\n    TIME_CARDS: 'time_cards',\n    TIME_CARD_APPROVAL: 'time_card_approval',\n    DAILY_SIGN_OFF: 'daily_sign_off',\n    TIME_ENTRIES: 'time_entries',\n    TIME_OFF: 'time_off',\n    ACTIVITY: {\n      'member-project': 'project_activity',\n      'member': 'employee_activity',\n      'member-cost-code': 'cost_code_activity',\n      'member-equipment': 'equipment_activity',\n      'member-day': 'date_activity'\n    },\n    EMPLOYEES_LIST: 'employees_list'\n  };\n\n  /**\n   * `Controller/Report/Index`\n   *\n   * @class Index\n   * @namespace Controllers.Report\n   * @extends Controller\n   */\n  /**\n   * @module Controllers\n   *\n   */\n  exports.default = Ember.Controller.extend({\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n    proFeature: Ember.inject.service('pro-feature'),\n    interop: Ember.inject.service('interop'),\n    graylog: Ember.inject.service('graylog'),\n    access: Ember.inject.service('access'),\n    subscription: Ember.inject.service('subscription'),\n\n    allowPayrollReport: Ember.computed('features.payrollReport', function () {\n      this.get('features.payrollReport');\n      return this.get('proFeatureManager').allowProFeature('payroll-report');\n    }),\n\n    showPayrollProBadge: Ember.computed.not('allowPayrollReport'),\n\n    allowBreakHoursReport: Ember.computed.alias('features.breakHoursReport'),\n\n    showDeprecationWarning: Ember.computed.alias('features.deprecateLegacyReports'),\n\n    proFeatureManager: null,\n\n    init: function init() {\n      this._super();\n\n      this.set('proFeatureManager', this.get('proFeature').getManager());\n      this.graylogReportView(GRAYLOG_REPORTS.INDEX);\n    },\n    requestPayrollReport: function requestPayrollReport(actionRequested) {\n      this.get('proFeatureManager').requestAction('payroll-report', actionRequested);\n    },\n\n\n    signOffEnabled: Ember.computed('auth.organization.{safetySignature,timeAccuracy}', function () {\n      if (this.get('auth.organization.safetySignature') || this.get('auth.organization.timeAccuracy') || this.get('auth.organization.breakPolicy')) {\n        return true;\n      }\n      return false;\n    }),\n\n    graylogReportView: function graylogReportView(reportName) {\n      var event = {\n        short_message: 'Report Viewed',\n        full_message: 'Report Viewed',\n        level: 6,\n        _member_id: this.get('auth.memberId'),\n        _member_position_id: this.get('auth.member.positionId'),\n        _is_pro_account: this.get('subscription.isProAccount'),\n        _view_project_expenses: this.get('access').hasPermissionFor('viewProjectExpenses'),\n        _view_all_activity_report: this.get('access').hasPermissionFor('viewAllActivityReport'),\n        _report_type: 'legacy',\n        _view_type: reportName\n      };\n      this.get('graylog').sendEvent(event);\n    },\n\n\n    actions: {\n      employeePayroll: function employeePayroll() {\n        var queryParams = {\n          project: false,\n          type: 'member'\n        };\n\n        this.graylogReportView(GRAYLOG_REPORTS.PAYROLL_EMPLOYEE);\n        this.transitionToRoute('report.payroll.index', { queryParams: queryParams });\n      },\n      employeeProjectPayroll: function employeeProjectPayroll() {\n        var _this = this;\n\n        var queryParams = {\n          project: true,\n          type: 'member-project'\n        };\n\n        this.graylogReportView(GRAYLOG_REPORTS.PAYROLL_EMPLOYEE_PROJECT);\n        this.requestPayrollReport(function () {\n          return _this.transitionToRoute('report.payroll.index', { queryParams: queryParams });\n        });\n      },\n      projectEmployeePayroll: function projectEmployeePayroll() {\n        var _this2 = this;\n\n        var queryParams = {\n          project: true,\n          type: 'project'\n        };\n\n        this.graylogReportView(GRAYLOG_REPORTS.PAYROLL_PROJECT_EMPLOYEE);\n        this.requestPayrollReport(function () {\n          return _this2.transitionToRoute('report.payroll.index', { queryParams: queryParams });\n        });\n      },\n      safetySignOff: function safetySignOff() {\n        var _this3 = this;\n\n        this.graylogReportView(GRAYLOG_REPORTS.DAILY_SIGN_OFF);\n        this.requestPayrollReport(function () {\n          return _this3.transitionToRoute('report.safety-signature');\n        });\n      },\n      equipmentByProject: function equipmentByProject() {\n        var _this4 = this;\n\n        this.get('proFeatureManager').requestAction('equipmentProjectReport', function () {\n          return _this4.transitionToRoute('report.equipment-project');\n        });\n      },\n      activityReport: function activityReport(type) {\n        var reportName = GRAYLOG_REPORTS.ACTIVITY.hasOwnProperty(type) ? GRAYLOG_REPORTS.ACTIVITY[type] : 'activity';\n        this.graylogReportView(reportName);\n        this.transitionToRoute('report.activity', { queryParams: { type: type } });\n      },\n      linkTo: function linkTo(props) {\n        var route = props.route,\n            queryParams = props.queryParams,\n            logKey = props.logKey;\n\n        try {\n          var reportName = GRAYLOG_REPORTS[logKey];\n          this.graylogReportView(reportName);\n        } catch (err) {\n          _logger.default.error(this, 'Invalid logKey', logKey);\n          _logger.default.error(this, err);\n        }\n        this.transitionToRoute(route, { queryParams: queryParams });\n      },\n      openReactApp: function openReactApp(path, customParameters, event) {\n        var _this5 = this;\n\n        this.requestPayrollReport(function () {\n          return _this5.get('interop').openReactApp(path, customParameters, event);\n        });\n      },\n      openReactAppFree: function openReactAppFree(path, customParameters, event) {\n        this.get('interop').openReactApp(path, customParameters, event);\n      },\n      proFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n        this.get('proFeatureManager').openModal();\n      },\n      proFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n        this.get('proFeatureManager').closeModal();\n      },\n      proFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n        this.get('proFeatureManager').onAllow();\n      }\n    }\n  });\n});","define('busy-app/controllers/report/payroll', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: [],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tfeatures: Ember.inject.service(),\n\t\tsubscription: Ember.inject.service(),\n\t\tdiscovery: Ember.inject.service(),\n\n\t\ttype: 'member',\n\n\t\tstart: null,\n\t\tcurrentPeriodStart: null,\n\n\t\tregHoursCol: true,\n\t\totHoursCol: true,\n\t\tot2HoursCol: true,\n\t\ttotalHoursCol: true,\n\t\ttotalWagesCol: true,\n\n\t\temployeeIdCol: true,\n\t\twageCol: true,\n\t\tlaborBurdenCol: true,\n\n\t\tisCSVLoading: false,\n\n\t\toptionSelector: null,\n\t\tcolumnArray: null,\n\n\t\tproFeatureManager: null,\n\t\tisFreeAccount: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setColumnArray();\n\t\t\tthis.setPeriod();\n\n\t\t\tthis.set('proFeatureManager', this.get('proFeature').getManager());\n\n\t\t\tif (this.get('subscription.isFreeAccount')) {\n\t\t\t\tthis.set('isFreeAccount', this.get('subscription.isFreeAccount'));\n\t\t\t} else {\n\t\t\t\tthis.set('isFreeAccount', false);\n\t\t\t}\n\t\t},\n\n\n\t\tsetPeriod: Ember.observer('start', 'auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (Ember.isNone(this.get('start')) && !Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n\t\t\t\tvar start = _utils.Time.date().startOf('day').unix();\n\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(start);\n\t\t\t\tthis.set('currentPeriodStart', currentPeriod.get('start'));\n\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t}\n\t\t}),\n\n\t\tend: Ember.computed('start', function () {\n\t\t\tvar time = null;\n\t\t\tif (!Ember.isNone(this.get('start'))) {\n\t\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(this.get('start'));\n\t\t\t\ttime = payPeriod.get('end');\n\t\t\t}\n\t\t\treturn time;\n\t\t}),\n\n\t\tsetColumnArray: Ember.observer('type', function () {\n\t\t\tvar exportMacroCsv = Ember.get(this, 'features.exportMacroCsv');\n\n\t\t\tif (this.get('type') === 'member' || this.get('type') === 'member-project') {\n\t\t\t\tthis.set('columnArray', [Ember.Object.create({ key: 'regHoursCol', title: (0, _utils.loc)('Reg Hours'), value: true }), Ember.Object.create({ key: 'otHoursCol', title: (0, _utils.loc)('O.T. Hours (x1.5)'), value: true }), Ember.Object.create({ key: 'ot2HoursCol', title: (0, _utils.loc)('O.T. Hours (x2)'), value: true }), Ember.Object.create({ key: 'totalHoursCol', title: (0, _utils.loc)('Total Hours'), value: true }), Ember.Object.create({ key: 'totalWagesCol', title: (0, _utils.loc)('Est. Cost'), value: true }), Ember.Object.create({ key: 'employeeIdCol', title: (0, _utils.loc)('Employee Id'), value: false }), Ember.Object.create({ key: 'wageCol', title: (0, _utils.loc)('Wage'), value: false }), Ember.Object.create({ key: 'laborBurdenCol', title: (0, _utils.loc)('Labor Burden'), value: false })]);\n\n\t\t\t\t//This select Menu is in the Header\n\t\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'export-basic', value: (0, _utils.loc)('Basic') }), exportMacroCsv ? Ember.Object.create({ key: 'export-advanced', value: (0, _utils.loc)('Advanced') }) : null, Ember.Object.create({ key: 'export-daily', value: (0, _utils.loc)('Daily') }), Ember.Object.create({ key: 'export-daily-project', value: (0, _utils.loc)('Daily By Project') }), Ember.Object.create({ key: 'export-daily-cost-code', value: (0, _utils.loc)('Daily By Cost Code') }), Ember.Object.create({ key: 'export-daily-project-cost-code', value: (0, _utils.loc)('Daily By Project & Cost Code') })].compact());\n\t\t\t}\n\t\t}),\n\n\t\treportName: Ember.computed('type', function () {\n\t\t\tvar reportName = '';\n\t\t\tvar name = this.get('type').split('-');\n\n\t\t\tname.forEach(function (item) {\n\t\t\t\treportName += item.classify() + ' ';\n\t\t\t});\n\n\t\t\treturn (reportName + (0, _utils.loc)('Payroll')).replace(/Member/, (0, _utils.loc)('Employee'));\n\t\t}),\n\n\t\texportReport: function exportReport(item) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isCSVLoading', true);\n\t\t\tvar start = this.get('start') || _utils.Time.date().unix(); //.subtract(5, 'days').unix();\n\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(start);\n\n\t\t\tvar promise = Ember.RSVP.resolve();\n\t\t\tif (item.get('key') === 'export-basic') {\n\t\t\t\tpromise = this.store.exportCSV('payroll-basic-csv', payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t\t} else if (item.get('key') === 'export-daily') {\n\t\t\t\tpromise = this.store.exportCSV('payroll-member-csv', payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t\t} else if (item.get('key') === 'export-daily-project') {\n\t\t\t\tpromise = this.store.exportCSV('payroll-member-project-csv', payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t\t} else if (item.get('key') === 'export-daily-cost-code') {\n\t\t\t\tpromise = this.store.exportCSV('payroll-member-cost-code-csv', payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t\t} else if (item.get('key') === 'export-daily-project-cost-code') {\n\t\t\t\tpromise = this.store.exportCSV('payroll-member-project-cost-code-csv', payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t\t} else if (item.get('key') === 'export-advanced') {\n\t\t\t\tpromise = this.exportAdvanced(payPeriod.get('startDate'), payPeriod.get('endDate'));\n\t\t\t}\n\n\t\t\treturn promise.then(function () {\n\t\t\t\t_this.set('isCSVLoading', false);\n\t\t\t}).catch(function (e) {\n\t\t\t\t_this.set('isCSVLoading', false);\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error('ERROR', e);\n\n\t\t\t\twindow.alert((0, _utils.loc)('Export failed, please try again.'));\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * This only works against production data. There are no pre-production endpoints currently available\n   */\n\t\texportAdvanced: function exportAdvanced(startDate, endDate) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar format = 'Y-MM-DD HH:mm:ss';\n\t\t\tvar startDateIso = startDate.format(format);\n\t\t\tvar endDateIso = endDate.endOf('day').format(format);\n\n\t\t\tvar ajaxProps = {\n\t\t\t\tdata: {\n\t\t\t\t\tstart: startDateIso,\n\t\t\t\t\tend: endDateIso\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'discovery').ajax('time-entry-export', ajaxProps).then(function (data /*, status, xhr*/) {\n\t\t\t\tvar fileName = 'advanced-export_' + startDateIso + '-' + endDateIso + '.' + Date.now() + '.csv';\n\n\t\t\t\treturn _this2.triggerCsvDownload(data, fileName);\n\t\t\t}).catch(function (xhr, status, err) {\n\t\t\t\tvar errorMessage = err || 'Export failed';\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error('ERROR', errorMessage, { xhr: xhr, status: status, err: err });\n\n\t\t\t\treturn Ember.RSVP.reject(errorMessage);\n\t\t\t});\n\t\t},\n\t\ttriggerCsvDownload: function triggerCsvDownload(data, fileName) {\n\t\t\tvar el = document.createElement('a');\n\t\t\tvar encodedData = encodeURIComponent(data);\n\n\t\t\tel.href = 'data:text/csv;charset=utf-8,' + encodedData;\n\t\t\tel.target = '_blank';\n\t\t\tel.download = fileName;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\tel.addEventListener('click', function (e) {\n\t\t\t\t\tresolve(e);\n\t\t\t\t\tel.remove();\n\t\t\t\t});\n\n\t\t\t\tel.addEventListener('error', function (e) {\n\t\t\t\t\treject(e);\n\t\t\t\t\tel.remove();\n\t\t\t\t});\n\n\t\t\t\tel.click();\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangeDateRange: function changeDateRange(item) {\n\t\t\t\tvar start = item.get('startDate').unix();\n\t\t\t\tvar route = Ember.getOwner(this).lookup('route:report.payroll');\n\n\t\t\t\troute.transitionTo({ queryParams: { start: start } }).then(function () {\n\t\t\t\t\treturn route.refresh();\n\t\t\t\t});\n\t\t\t},\n\t\t\toptionChange: function optionChange(item) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tif (item.get('key') !== 'print-report') {\n\t\t\t\t\tthis.get('proFeatureManager').requestAction('export', function () {\n\t\t\t\t\t\treturn _this3.exportReport(item);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tchangeColumn: function changeColumn(val, item) {\n\t\t\t\tthis.set(item.get('key'), val);\n\t\t\t\tEmber.getOwner(this).lookup('route:report.payroll').refresh();\n\t\t\t},\n\t\t\tproFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n\t\t\t\tthis.get('proFeatureManager').openModal();\n\t\t\t},\n\t\t\tproFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n\t\t\t\tthis.get('proFeatureManager').closeModal();\n\t\t\t},\n\t\t\tproFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n\t\t\t\tthis.get('proFeatureManager').onAllow();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/payroll/employee', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['type'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\ttype: '',\n\n\t\tregHoursCol: true,\n\t\totHoursCol: true,\n\t\tot2HoursCol: true,\n\t\ttotalHoursCol: true,\n\t\ttotalWagesCol: true,\n\n\t\temployeeIdCol: false,\n\t\twageCol: false,\n\t\tlaborBurdenCol: false,\n\n\t\tshowTimeEntryDialog: false,\n\n\t\tselectMenu: null,\n\t\tinlineSelectMenu: null,\n\t\tpayPeriodSelector: null,\n\n\t\ttimeEntryStart: null,\n\t\ttimeEntryEnd: null,\n\t\ttimeEntryMember: null,\n\t\ttimeEntryProject: null,\n\n\t\topenItems: false,\n\t\tallOpen: false,\n\n\t\thasProject: Ember.computed('type', function () {\n\t\t\treturn this.get('type') === 'member-project';\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t//This select Menu is in the Header\n\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'print-report', value: 'Print Report' }), Ember.Object.create({ key: 'export-to-csv', value: 'Export to CSV' })]);\n\n\t\t\t//This is a Menu for each item in ContentData Array\n\t\t\tthis.set('inlineSelectMenu', [Ember.Object.create({ key: 'time-entries', value: 'View Time Entries' })]);\n\n\t\t\tthis.setPeriods();\n\t\t},\n\n\n\t\tsetPeriods: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n\t\t\t\tvar payPeriods = this.get('payPeriods').getPayPeriodRange(_utils.Time.timestamp(), 15);\n\t\t\t\tthis.set('payPeriodSelector', payPeriods);\n\t\t\t}\n\t\t}),\n\n\t\tshowOvertime: Ember.computed('model.overtimeSeconds', function () {\n\t\t\treturn this.get('model.overtimeSeconds') ? true : false;\n\t\t}),\n\n\t\tshowDoubletime: Ember.computed('model.doubletimeSeconds', function () {\n\t\t\treturn this.get('model.doubletimeSeconds') ? true : false;\n\t\t}),\n\n\t\t/**\n   * Used to Display the Date Range of the Payperiod\n   * that was selected . It is used in the Template\n   * @public\n   * @method reportDateRange\n   */\n\t\treportDateRange: Ember.computed('start', 'end', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('start'), 'MMM DD') + ' - ' + _utils.Time.timeFormat(this.get('end'), 'MMM D, YYYY');\n\t\t}),\n\n\t\topenItemsObserver: Ember.observer('model.@each.isOpen', function () {\n\t\t\tvar models = this.get('model');\n\t\t\tvar openItems = [];\n\t\t\tvar projectItems = [];\n\n\t\t\tmodels.forEach(function (item) {\n\t\t\t\tif (item.get('hasChildren')) {\n\t\t\t\t\tprojectItems.pushObject(item);\n\n\t\t\t\t\tif (item.get('isOpen')) {\n\t\t\t\t\t\topenItems.pushObject(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (projectItems.length > 0) {\n\t\t\t\tthis.set('canOpen', true);\n\t\t\t} else {\n\t\t\t\tthis.set('canOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length > 0) {\n\t\t\t\tthis.set('openItems', true);\n\t\t\t} else if (openItems.length <= 0) {\n\t\t\t\tthis.set('openItems', false);\n\t\t\t\tthis.set('allOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length === projectItems.length) {\n\t\t\t\tthis.set('allOpen', true);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\texpandRow: function expandRow(item) {\n\t\t\t\titem.set('isOpen', !item.get('isOpen'));\n\t\t\t},\n\t\t\texpandAll: function expandAll() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tif (item.get('hasChildren')) {\n\t\t\t\t\t\t_this.send('expandRow', item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tcollapseAll: function collapseAll() {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\titem.set('isOpen', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\topenTimeEntriesAction: function openTimeEntriesAction(item) {\n\t\t\t\tthis.set('timeEntryStart', this.get('model.start'));\n\t\t\t\tthis.set('timeEntryEnd', this.get('model.end'));\n\t\t\t\tthis.set('timeEntryMember', item.get('member'));\n\t\t\t\tthis.set('timeEntryProject', item.get('project'));\n\n\t\t\t\tthis.set('showTimeEntryDialog', true);\n\t\t\t},\n\t\t\tcloseTimeEntryDialog: function closeTimeEntryDialog() {\n\t\t\t\tthis.set('showTimeEntryDialog', false);\n\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.set('timeEntryMember', null);\n\t\t\t\t\tthis.set('timeEntryProject', null);\n\t\t\t\t\tthis.set('timeEntryStart', null);\n\t\t\t\t\tthis.set('timeEntryEnd', null);\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/payroll/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['type', 'start'],\n\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\ttype: '',\n\n\t\tshowTimeEntryDialog: false,\n\n\t\tselectMenu: null,\n\t\tinlineSelectMenu: null,\n\t\tpayPeriodSelector: null,\n\n\t\ttimeEntryStart: null,\n\t\ttimeEntryEnd: null,\n\t\ttimeEntryMember: null,\n\t\ttimeEntryProject: null,\n\n\t\topenItems: false,\n\t\tallOpen: false,\n\t\tunassignedProjects: false,\n\t\tdirtyFlag: false,\n\n\t\texceptionalWageChangeWarningText: (0, _utils.loc)('* Totals for employees with multiple wage types are calculated using the most recent wage type.'),\n\n\t\thasProject: Ember.computed('type', function () {\n\t\t\treturn this.get('type') === 'member-project' || this.get('type') === 'project';\n\t\t}),\n\n\t\thasExceptionalWageChange: Ember.computed('model.@each.hasExceptionalWageChange', function () {\n\t\t\treturn Ember.get(this, 'model').any(function (i) {\n\t\t\t\treturn Ember.get(i, 'hasExceptionalWageChange');\n\t\t\t});\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t//This select Menu is in the Header\n\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'print-report', value: 'Print Report' }), Ember.Object.create({ key: 'export-to-csv', value: 'Export to CSV' })]);\n\n\t\t\t//This is a Menu for each item in ContentData Array\n\t\t\tthis.set('inlineSelectMenu', [Ember.Object.create({ key: 'time-entries', value: 'View Time Entries' })]);\n\n\t\t\tthis.setPeriods();\n\t\t},\n\n\n\t\tsetPeriods: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n\t\t\t\tvar payPeriods = this.get('payPeriods').getPayPeriodRange(_utils.Time.timestamp(), 15);\n\t\t\t\tthis.set('payPeriodSelector', payPeriods);\n\t\t\t}\n\t\t}),\n\n\t\tshowOvertime: Ember.computed('model.overtimeSeconds', function () {\n\t\t\treturn this.get('model.overtimeSeconds') ? true : false;\n\t\t}),\n\n\t\tshowDoubletime: Ember.computed('model.doubletimeSeconds', function () {\n\t\t\treturn this.get('model.doubletimeSeconds') ? true : false;\n\t\t}),\n\n\t\t/**\n   * Used to Display the Date Range of the Payperiod\n   * that was selected . It is used in the Template\n   * @public\n   * @method reportDateRange\n   */\n\t\treportDateRange: Ember.computed('start', 'end', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('start'), 'MMM DD') + ' - ' + _utils.Time.timeFormat(this.get('end'), 'MMM D, YYYY');\n\t\t}),\n\n\t\topenItemsObserver: Ember.observer('model.@each.isOpen', function () {\n\t\t\tvar models = this.get('model');\n\t\t\tvar openItems = [];\n\t\t\tvar projectItems = [];\n\n\t\t\tmodels.forEach(function (item) {\n\t\t\t\tif (item.get('hasChildren')) {\n\t\t\t\t\tprojectItems.pushObject(item);\n\n\t\t\t\t\tif (item.get('isOpen')) {\n\t\t\t\t\t\topenItems.pushObject(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (projectItems.length > 0) {\n\t\t\t\tthis.set('canOpen', true);\n\t\t\t} else {\n\t\t\t\tthis.set('canOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length > 0) {\n\t\t\t\tthis.set('openItems', true);\n\t\t\t} else if (openItems.length <= 0) {\n\t\t\t\tthis.set('openItems', false);\n\t\t\t\tthis.set('allOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length === projectItems.length) {\n\t\t\t\tthis.set('allOpen', true);\n\t\t\t}\n\t\t}),\n\n\t\texpandAllRows: function expandAllRows(model) {\n\t\t\tvar _this = this;\n\n\t\t\tvar order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n\t\t\t// if nothing is passed then exit the\n\t\t\t// recursive function\n\t\t\tif (Ember.isEmpty(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.forEach(function (item) {\n\t\t\t\t// if to prevent project - employee report from opening objects past\n\t\t\t\t// the employee.\n\t\t\t\tif (!/^project/.test(order)) {\n\t\t\t\t\titem.set('isOpen', true);\n\n\t\t\t\t\tif (!Ember.isEmpty(item.get('projects'))) {\n\t\t\t\t\t\t_this.expandAllRows(item.get('projects'), order + 'member-');\n\t\t\t\t\t} else if (!Ember.isEmpty(item.get('members'))) {\n\t\t\t\t\t\t_this.expandAllRows(item.get('members'), order + 'project-');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tcollapseAllRows: function collapseAllRows(model) {\n\t\t\tvar _this2 = this;\n\n\t\t\t// if nothing is passed then exit the\n\t\t\t// recursive function\n\t\t\tif (Ember.isEmpty(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.forEach(function (item) {\n\t\t\t\titem.set('isOpen', false);\n\n\t\t\t\tif (!Ember.isEmpty(item.get('projects'))) {\n\t\t\t\t\t_this2.collapseAllRows(item.get('projects'));\n\t\t\t\t} else if (!Ember.isEmpty(item.get('members'))) {\n\t\t\t\t\t_this2.collapseAllRows(item.get('members'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\texpandRow: function expandRow(item) {\n\t\t\t\titem.set('isOpen', !item.get('isOpen'));\n\t\t\t},\n\t\t\texpandAll: function expandAll() {\n\t\t\t\tthis.expandAllRows(this.get('model'));\n\t\t\t},\n\t\t\tcollapseAll: function collapseAll() {\n\t\t\t\tthis.collapseAllRows(this.get('model'));\n\t\t\t},\n\t\t\topenTimeEntriesAction: function openTimeEntriesAction(item) {\n\t\t\t\tif (!this.get('dontShowTimeEntries')) {\n\t\t\t\t\tthis.set('timeEntryStart', this.get('model.start'));\n\t\t\t\t\tthis.set('timeEntryEnd', this.get('model.end'));\n\t\t\t\t\tthis.set('timeEntryMember', item.get('member'));\n\t\t\t\t\tthis.set('timeEntryProject', item.get('project'));\n\n\t\t\t\t\tif (Ember.isNone(item.get('member'))) {\n\t\t\t\t\t\tthis.set('unassignedProjects', true);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.set('showTimeEntryDialog', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseTimeEntryDialog: function closeTimeEntryDialog() {\n\t\t\t\tthis.set('showTimeEntryDialog', false);\n\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.set('timeEntryMember', null);\n\t\t\t\t\tthis.set('timeEntryProject', null);\n\t\t\t\t\tthis.set('timeEntryStart', null);\n\t\t\t\t\tthis.set('timeEntryEnd', null);\n\t\t\t\t\tthis.set('unassignedProjects', false);\n\t\t\t\t}, 300);\n\t\t\t},\n\t\t\trefreshSync: function refreshSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t},\n\t\t\tshowWageHistory: function showWageHistory(item) {\n\t\t\t\tthis.set('dontShowTimeEntries', true);\n\t\t\t\tthis.set('showWageDialog', true);\n\t\t\t\tthis.set('member', item);\n\t\t\t},\n\t\t\tcloseWageDialog: function closeWageDialog() {\n\t\t\t\tthis.set('dontShowTimeEntries', false);\n\t\t\t\tthis.set('showWageDialog', false);\n\t\t\t\tthis.set('member', null);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/payroll/project', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['type'],\n\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\ttype: '',\n\n\t\tregHoursCol: true,\n\t\totHoursCol: true,\n\t\tot2HoursCol: true,\n\t\ttotalHoursCol: true,\n\t\ttotalWagesCol: true,\n\n\t\temployeeIdCol: false,\n\t\twageCol: false,\n\t\tlaborBurdenCol: false,\n\n\t\tshowTimeEntryDialog: false,\n\n\t\tselectMenu: null,\n\t\tinlineSelectMenu: null,\n\t\tpayPeriodSelector: null,\n\n\t\ttimeEntryStart: null,\n\t\ttimeEntryEnd: null,\n\t\ttimeEntryMember: null,\n\t\ttimeEntryProject: null,\n\n\t\topenItems: false,\n\t\tallOpen: false,\n\n\t\thasProject: Ember.computed('type', function () {\n\t\t\treturn this.get('type') === 'project';\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t//This select Menu is in the Header\n\t\t\tthis.set('selectMenu', [Ember.Object.create({ key: 'print-report', value: 'Print Report' }), Ember.Object.create({ key: 'export-to-csv', value: 'Export to CSV' })]);\n\n\t\t\t//This is a Menu for each item in ContentData Array\n\t\t\tthis.set('inlineSelectMenu', [Ember.Object.create({ key: 'time-entries', value: 'View Time Entries' })]);\n\n\t\t\tthis.setPeriods();\n\t\t},\n\n\n\t\tsetPeriods: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n\t\t\t\tvar payPeriods = this.get('payPeriods').getPayPeriodRange(_utils.Time.timestamp(), 15);\n\t\t\t\tthis.set('payPeriodSelector', payPeriods);\n\t\t\t}\n\t\t}),\n\n\t\tshowOvertime: Ember.computed('model.overtimeSeconds', function () {\n\t\t\treturn this.get('model.overtimeSeconds') ? true : false;\n\t\t}),\n\n\t\tshowDoubletime: Ember.computed('model.doubletimeSeconds', function () {\n\t\t\treturn this.get('model.doubletimeSeconds') ? true : false;\n\t\t}),\n\n\t\t/**\n   * Used to Display the Date Range of the Payperiod\n   * that was selected . It is used in the Template\n   * @public\n   * @method reportDateRange\n   */\n\t\treportDateRange: Ember.computed('start', 'end', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('start'), 'MMM DD') + ' - ' + _utils.Time.timeFormat(this.get('end'), 'MMM D, YYYY');\n\t\t}),\n\n\t\topenItemsObserver: Ember.observer('model.@each.isOpen', function () {\n\t\t\tvar models = this.get('model');\n\t\t\tvar openItems = [];\n\t\t\tvar projectItems = [];\n\n\t\t\tmodels.forEach(function (item) {\n\t\t\t\tif (item.get('hasChildren')) {\n\t\t\t\t\tprojectItems.pushObject(item);\n\n\t\t\t\t\tif (item.get('isOpen')) {\n\t\t\t\t\t\topenItems.pushObject(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (projectItems.length > 0) {\n\t\t\t\tthis.set('canOpen', true);\n\t\t\t} else {\n\t\t\t\tthis.set('canOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length > 0) {\n\t\t\t\tthis.set('openItems', true);\n\t\t\t} else if (openItems.length <= 0) {\n\t\t\t\tthis.set('openItems', false);\n\t\t\t\tthis.set('allOpen', false);\n\t\t\t}\n\n\t\t\tif (openItems.length === projectItems.length) {\n\t\t\t\tthis.set('allOpen', true);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\texpandRow: function expandRow(item) {\n\t\t\t\titem.set('isOpen', !item.get('isOpen'));\n\t\t\t},\n\t\t\texpandAll: function expandAll() {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tif (item.get('hasChildren')) {\n\t\t\t\t\t\titem.set('isOpen', true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tcollapseAll: function collapseAll() {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\treturn item.set('isOpen', false);\n\t\t\t\t});\n\t\t\t},\n\t\t\topenTimeEntriesAction: function openTimeEntriesAction(item) {\n\t\t\t\tthis.set('timeEntryStart', this.get('model.start'));\n\t\t\t\tthis.set('timeEntryEnd', this.get('model.end'));\n\t\t\t\tthis.set('timeEntryMember', item.get('member'));\n\t\t\t\tthis.set('timeEntryProject', item.get('project'));\n\n\t\t\t\tthis.set('showTimeEntryDialog', true);\n\t\t\t},\n\t\t\tcloseTimeEntryDialog: function closeTimeEntryDialog() {\n\t\t\t\tthis.set('showTimeEntryDialog', false);\n\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis.set('timeEntryMember', null);\n\t\t\t\t\tthis.set('timeEntryProject', null);\n\t\t\t\t\tthis.set('timeEntryStart', null);\n\t\t\t\t\tthis.set('timeEntryEnd', null);\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/report-setup', ['exports', 'moment'], function (exports, _moment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tstart: null,\n\t\tend: null,\n\t\tmemberId: null,\n\t\tpayPeriodId: null,\n\t\tselectPayPeriodMenu: null,\n\t\twageColumn: true,\n\t\tregHoursColumn: true,\n\t\tovertimeHoursColumn: true,\n\t\ttotalHoursColumn: true,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.loadPeriods();\n\t\t},\n\n\n\t\tloadPeriods: Ember.observer('auth.organizationPayPeriod.id', function () {\n\t\t\tif (!Ember.isNone(this.get('auth.organizationPayPeriod.id'))) {\n\t\t\t\tvar time = (0, _moment.default)();\n\t\t\t\tvar periods = this.get('payPeriods').getPayPeriodRange(time.unix(), 30);\n\n\t\t\t\tthis.set('selectPayPeriodMenu', periods);\n\t\t\t\tthis._selectPayperiod(periods[0]);\n\t\t\t}\n\t\t}),\n\n\t\topenReport: function openReport() {\n\t\t\tvar params = {\n\t\t\t\tstart: this.get('start'),\n\t\t\t\tend: this.get('end')\n\t\t\t};\n\n\t\t\tif (!this.get('wageColumn')) {\n\t\t\t\tparams.wageColumn = this.get('wageColumn');\n\t\t\t}\n\n\t\t\tif (!this.get('regHoursColumn')) {\n\t\t\t\tparams.regHoursColumn = this.get('regHoursColumn');\n\t\t\t}\n\n\t\t\tif (!this.get('overtimeHoursColumn')) {\n\t\t\t\tparams.overtimeHoursColumn = this.get('overtimeHoursColumn');\n\t\t\t}\n\n\t\t\tif (!this.get('totalHoursColumn')) {\n\t\t\t\tparams.totalHoursColumn = this.get('totalHoursColumn');\n\t\t\t}\n\n\t\t\tthis.transitionToRoute('report.signature', {\n\t\t\t\tqueryParams: params\n\t\t\t});\n\t\t},\n\t\t_selectPayperiod: function _selectPayperiod(period) {\n\t\t\tthis.set('start', period.get('startDate').unix());\n\t\t\tthis.set('end', period.get('endDate').unix());\n\t\t},\n\n\n\t\tactions: {\n\t\t\tselectPayPeriod: function selectPayPeriod(item) {\n\t\t\t\tthis._selectPayperiod(item);\n\t\t\t},\n\t\t\trunReport: function runReport() {\n\t\t\t\tthis.openReport();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/safety-signature', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    auth: Ember.inject.service(),\n    payPeriods: Ember.inject.service('pay-period'),\n    router: Ember.inject.service('router'),\n\n    start: null,\n    currentPeriodStart: null,\n    reportName: (0, _utils.loc)('Daily Sign-Off'),\n    cController: null,\n\n    init: function init() {\n      this._super();\n      this.setPeriod();\n    },\n\n\n    hideDateSelector: Ember.computed('router.currentRouteName', function () {\n      return this.get('router.currentRouteName') === 'report.safety-signature.date';\n    }),\n\n    dateTitle: Ember.computed('cController.dayTitle', function () {\n      return this.get('cController.dayTitle');\n    }),\n\n    setPeriod: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n      if (Ember.isNone(this.get('start')) && !Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n        var start = _utils.Time.date().startOf('day').unix();\n\n        var currentPeriod = this.get('payPeriods').getPayPeriod(start);\n        this.set('start', currentPeriod.get('start'));\n      }\n    }),\n\n    actions: {\n      changeDateRange: function changeDateRange(item) {\n        var _this = this;\n\n        this.set('start', item.get('startDate').unix());\n        setTimeout(function () {\n          Ember.getOwner(_this).lookup('route:report.safety-signature').refresh();\n        }, 500);\n      }\n    }\n  });\n});","define('busy-app/controllers/report/safety-signature/date', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    queryParams: ['date'],\n\n    auth: Ember.inject.service('auth'),\n\n    date: 0,\n\n    showSummaryDialog: false,\n    settings: null,\n\n    init: function init() {\n      this._super();\n      this.setTotals();\n      this.setupSummaryView(Ember.get(this, 'date') || _utils.Time.timestamp());\n    },\n    setupSummaryView: function setupSummaryView(date) {\n      var start = _utils.Time.date(date).startOf('day').unix();\n      var end = _utils.Time.date(date).endOf('day').unix();\n      var settings = Ember.Object.create({\n        start: start,\n        end: end,\n        type: 'member',\n        column: 'total-hours',\n        totalHours: true,\n        hideMemberName: true\n      });\n\n      Ember.set(this, 'settings', settings);\n    },\n\n\n    dayTitle: Ember.computed('date', function () {\n      var date = parseInt(this.get('date'), 10);\n      var format = \"MMM D\";\n      if (_utils.Time.date(date).year() !== _utils.Time.date().year()) {\n        format = \"MMM D, YYYY\";\n      }\n      return _utils.Time.date(date).format(format);\n    }),\n\n    setTotals: Ember.observer('model', function () {\n      var model = this.get('model');\n      var notSigned = 0;\n      var incorrectTime = 0;\n      var injured = 0;\n      var breakIssues = 0;\n      if (this.get('model.length') > 0) {\n        model.forEach(function (item) {\n          if (item.get('incorrectTime') === 'Yes') {\n            incorrectTime += 1;\n          }\n          if (item.get('injured') === 'Yes') {\n            injured += 1;\n          }\n          if (item.get('injured') === '-' && item.get('incorrectTime') === '-' && item.get('breakPolicyFollowed') === '-') {\n            notSigned += 1;\n          }\n          if (item.get('breakPolicyFollowed') === 'Yes') {\n            breakIssues += 1;\n          }\n        });\n      }\n      this.setProperties({\n        notSigned: notSigned,\n        incorrectTime: incorrectTime,\n        injured: injured,\n        breakIssues: breakIssues\n      });\n    }),\n\n    needsMoreSigs: Ember.computed('currentMember', function () {\n      var member = Ember.get(this, 'currentMember');\n\n      if (Ember.isPresent(member)) {\n        var lastSig = member.signatures[member.signatures.length - 1];\n        var lastEntry = member.timeEntries[member.timeEntries.length - 1];\n\n        return lastEntry.get('endTime') > lastSig.get('endTime');\n      }\n      return false;\n    }),\n\n    actions: {\n      openMemberDialog: function openMemberDialog(member) {\n        Ember.set(this, 'currentMember', member);\n        Ember.set(this, 'showMemberDialog', true);\n      },\n      closeMemberDialog: function closeMemberDialog() {\n        Ember.set(this, 'currentMember', null);\n        Ember.set(this, 'showMemberDialog', false);\n      },\n      signatureRowClicked: function signatureRowClicked(sig) {\n        if (!Ember.isNone(Ember.get(sig, 'showDetails'))) {\n          Ember.set(sig, 'showDetails', !sig.get('showDetails'));\n        } else {\n          Ember.set(sig, 'showDetails', true);\n        }\n      },\n      viewTimeEntries: function viewTimeEntries(date) {\n        var start = _utils.Time.date(date).startOf('day').unix();\n        var end = _utils.Time.date(date).endOf('day').unix();\n        var settings = Ember.get(this, 'settings');\n\n        Ember.setProperties(settings, { start: start, end: end });\n        Ember.set(this, 'summaryModel', Ember.get(this, 'currentMember'));\n        Ember.set(this, 'showSummaryDialog', true);\n      },\n      closeSummaryDialog: function closeSummaryDialog() {\n        Ember.set(this, 'showSummaryDialog', false);\n        Ember.set(this, 'summaryModel', null);\n      },\n      showSafetyDialog: function showSafetyDialog() {\n        Ember.set(this, 'showSignOffRequiredDialog', true);\n      },\n      closeSafetyDialog: function closeSafetyDialog() {\n        Ember.set(this, 'showSignOffRequiredDialog', false);\n      }\n    }\n  });\n});","define('busy-app/controllers/report/safety-signature/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Controller.extend({\n    auth: Ember.inject.service('auth'),\n\n    init: function init() {\n      this._super();\n      this.setTotals();\n    },\n\n\n    groupedModel: Ember.computed('model', function () {\n      var _this = this;\n\n      var model = Ember.get(this, 'model');\n      var dayObjectArray = [];\n\n      if (!Ember.isNone(model)) {\n        var current = Ember.get(model, 'payPeriod.startDate').unix();\n        var endDate = Ember.get(model, 'payPeriod.endDate').unix();\n\n        while (current <= endDate) {\n          var dayFormat = 'ddd, MMM D';\n          if (_utils.Time.date(current).year() !== _utils.Time.date().year()) {\n            dayFormat = 'ddd, MMM D, YYYY';\n          }\n\n          var dayObject = Ember.Object.create({\n            day: _utils.Time.date(current).format(dayFormat),\n            startOfDay: _utils.Time.date(current).startOf('day').unix(),\n            endOfDay: _utils.Time.date(current).endOf('day').unix(),\n            memberIds: [],\n            memberTimeEntries: [],\n            signatures: [],\n            injuredIds: [],\n            inaccurateIds: [],\n            breakNotFollowedIds: [],\n            signed: 0,\n            injuries: 0,\n            inaccuracies: 0,\n            breakIssues: 0\n          });\n\n          dayObjectArray.pushObject(dayObject);\n          current = _utils.Time.date(current).add(1, 'days').unix();\n        }\n\n        dayObjectArray.forEach(function (day) {\n          _this.loadTimeEntries(model, day);\n          _this.loadSignatures(model, day);\n\n          Ember.get(day, 'memberTimeEntries').forEach(function (object) {\n            if (Ember.get(object, 'timeEntries.length')) {\n              var sortedEntries = Ember.get(object, 'timeEntries').sortBy('endTime');\n              var latestEntry = Ember.get(sortedEntries, 'lastObject');\n              Ember.set(object, 'latestEntryTime', Ember.get(latestEntry, 'endTime'));\n            }\n\n            if (Ember.get(object, 'signatures.length')) {\n              var sortedSignatures = Ember.get(object, 'signatures').sortBy('endTime');\n              var latestSignature = Ember.get(sortedSignatures, 'lastObject');\n              Ember.set(object, 'latestSignatureTime', Ember.get(latestSignature, 'endTime'));\n            }\n\n            if (Ember.get(object, 'latestSignatureTime') >= Ember.get(object, 'latestEntryTime')) {\n              Ember.set(day, 'signed', Ember.get(day, 'signed') + 1);\n            }\n          });\n\n          day.set('allSigned', Ember.get(day, 'signed') === Ember.get(day, 'memberIds.length') && Ember.get(day, 'memberIds.length') > 0);\n          day.set('unsigned', Ember.get(day, 'memberIds.length') - Ember.get(day, 'signed'));\n        });\n\n        return dayObjectArray.filterBy('memberIds.length').sortBy('startOfDay');\n      }\n    }),\n\n    setTotals: Ember.observer('groupedModel', function () {\n      if (this.get('groupedModel.length') > 0) {\n        var groupedModel = this.get('groupedModel');\n        var notSigned = 0;\n        var incorrectTime = 0;\n        var injured = 0;\n        var breakIssues = 0;\n        groupedModel.forEach(function (item) {\n          notSigned += item.get('unsigned');\n          incorrectTime += item.get('inaccuracies');\n          injured += item.get('injuries');\n          breakIssues += item.get('breakIssues');\n        });\n\n        this.setProperties({\n          notSigned: notSigned,\n          incorrectTime: incorrectTime,\n          injured: injured,\n          breakIssues: breakIssues\n        });\n      }\n    }),\n\n    loadSignatures: function loadSignatures(model, currentObject) {\n      Ember.get(model, 'signatures').sortBy('endTime').forEach(function (sig) {\n        if (Ember.get(currentObject, 'endOfDay') >= Ember.get(sig, 'startTime') && Ember.get(currentObject, 'startOfDay') <= Ember.get(sig, 'startTime')) {\n          var memberId = Ember.get(sig, 'memberId');\n          if (Ember.get(sig, 'injured')) {\n            if (Ember.get(currentObject, 'injuredIds').indexOf(memberId) < 0) {\n              Ember.get(currentObject, 'injuredIds').push(memberId);\n              Ember.set(currentObject, 'injuries', Ember.get(currentObject, 'injuries') + 1);\n            }\n          }\n\n          if (Ember.get(sig, 'timeAccurate') === false) {\n            if (Ember.get(currentObject, 'inaccurateIds').indexOf() < 0) {\n              Ember.get(currentObject, 'inaccurateIds').push(memberId);\n              Ember.set(currentObject, 'inaccuracies', Ember.get(currentObject, 'inaccuracies') + 1);\n            }\n          } else if (Ember.get(sig, 'timeAccurate') === true) {\n            if (Ember.get(currentObject, 'inaccurateIds').indexOf(memberId) > -1) {\n              Ember.get(currentObject, 'inaccurateIds').splice(Ember.get(currentObject, 'inaccurateIds').indexOf(memberId), 1);\n              Ember.set(currentObject, 'inaccuracies', Ember.get(currentObject, 'inaccuracies') - 1);\n            }\n          }\n\n          if (Ember.get(sig, 'breakPolicyFollowed') === false) {\n            if (Ember.get(currentObject, 'breakNotFollowedIds').indexOf(memberId) < 0) {\n              Ember.get(currentObject, 'breakNotFollowedIds').push(memberId);\n              Ember.set(currentObject, 'breakIssues', Ember.get(currentObject, 'breakIssues') + 1);\n            }\n          } else if (Ember.get(sig, 'breakPolicyFollowed') === true) {\n            if (Ember.get(currentObject, 'breakNotFollowedIds').indexOf(memberId) > -1) {\n              Ember.get(currentObject, 'breakNotFollowedIds').splice(Ember.get(currentObject, 'breakNotFollowedIds').indexOf(memberId), 1);\n              Ember.set(currentObject, 'breakIssues', Ember.get(currentObject, 'breakIssues') - 1);\n            }\n          }\n\n          if (!Ember.get(currentObject, 'signatures').isAny('memberId', memberId)) {\n            Ember.get(currentObject, 'signatures').push(sig);\n          }\n\n          if (Ember.get(currentObject, 'memberTimeEntries').isAny('memberId', memberId)) {\n            var memberEntry = Ember.get(currentObject, 'memberTimeEntries').findBy('memberId', memberId);\n            Ember.get(memberEntry, 'signatures').push(sig);\n          }\n        }\n      });\n    },\n    loadTimeEntries: function loadTimeEntries(model, currentObject) {\n      Ember.get(model, 'timeEntries').forEach(function (timeEntry) {\n        if (Ember.get(currentObject, 'endOfDay') >= Ember.get(timeEntry, 'startTime') && Ember.get(currentObject, 'startOfDay') <= Ember.get(timeEntry, 'endTime')) {\n          var memberId = Ember.get(timeEntry, 'memberId');\n          Ember.get(currentObject, 'memberIds').push(memberId);\n\n          Ember.set(currentObject, 'memberIds', Ember.get(currentObject, 'memberIds').uniq());\n\n          var memberTimeEntryObject = Ember.Object.create({\n            memberId: memberId,\n            timeEntries: [timeEntry],\n            signatures: [],\n            latestSignatureTime: null,\n            latestEntryTime: null\n          });\n\n          if (Ember.get(currentObject, 'memberTimeEntries').isAny('memberId', memberId)) {\n            var memberEntry = Ember.get(currentObject, 'memberTimeEntries').findBy('memberId', memberId);\n            Ember.get(memberEntry, 'timeEntries').push(timeEntry);\n          } else {\n            Ember.get(currentObject, 'memberTimeEntries').pushObject(memberTimeEntryObject);\n          }\n        }\n      });\n    },\n\n\n    actions: {\n      openDateReport: function openDateReport(item) {\n        this.transitionToRoute('report.safety-signature.date', {\n          queryParams: {\n            date: item.get('startOfDay')\n          }\n        });\n      }\n    }\n  });\n});","define('busy-app/controllers/report/time-card-approval', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\t// import Logger from 'busy-app/utils/logger';\n\n\t/***/\n\t/**\n  * @module Controllers\n  *\n  */\n\tvar kFiltersConfigBase = [{\n\t\tlabel: (0, _utils.loc)('Signed'),\n\t\tkey: 'signed',\n\t\tcolor: '#6ac192'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Re-sign Required'),\n\t\tkey: 'resign',\n\t\tcolor: '#79b3b4'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Not Signed'),\n\t\tkey: 'unsigned',\n\t\tcolor: '#ebb977'\n\t}];\n\n\tvar kFiltersConfigSupervisor = [{\n\t\tlabel: (0, _utils.loc)('Signed'),\n\t\tkey: 'signed',\n\t\tcolor: '#6ac192'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Missing supervisor signature'),\n\t\tkey: 'supervisor',\n\t\tcolor: '#79b3b4'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Missing employee signature'),\n\t\tkey: 'employee',\n\t\tcolor: '#ebb977'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Re-sign Required'),\n\t\tkey: 'resign',\n\t\tcolor: '#7899C1'\n\t}, {\n\t\tlabel: (0, _utils.loc)('Not Signed'),\n\t\tkey: 'unsigned',\n\t\tcolor: '#e17778'\n\t}];\n\n\tvar kFiltersConfig = {\n\t\tbase: kFiltersConfigBase,\n\t\tsupervisor: kFiltersConfigSupervisor\n\t};\n\n\t/**\n  * `Controller/Report/TimeCardApproval`\n  *\n  * @class TimeCardApproval\n  * @namespace Controllers.Report\n  * @extends Controller\n  */\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tpayPeriod: Ember.inject.service('payPeriod'),\n\n\t\t// attributes set by pay period selector\n\t\tstart: null,\n\t\tend: null,\n\n\t\t// private\n\t\tmember: Ember.computed.alias('auth.member.content'),\n\t\torganization: Ember.computed.alias('auth.organization.content'),\n\n\t\tcurrentPayPeriod: null,\n\t\tpreviousPayPeriod: null,\n\n\t\tisLoadingMembers: false,\n\t\tisLoadingPayPeriods: false,\n\t\tisLoadingMemberLocks: false,\n\t\tisLoadingMemberTimeDocuments: false,\n\n\t\t// signture state filters\n\t\tselectedFilter: null,\n\t\tselectedSort: null,\n\t\tselectedSortReverse: false,\n\t\tnameSearchFilter: null,\n\t\tnameSearchFilterInput: null,\n\n\t\tisLoading: Ember.computed.or('isLoadingPrimary', 'isLoadingSecondary'),\n\t\tisLoadingPrimary: Ember.computed.or('isLoadingMembers', 'isLoadingPayPeriods'),\n\t\tisLoadingSecondary: Ember.computed.or('isLoadingMemberLocks', 'isLoadingMemberTimeDocuments'),\n\n\t\t// onModelChange: observer('model', function() {\n\t\t// \tconsole.log('onModelChange', this.get('model.length'));\n\t\t// }),\n\n\n\t\tisSelectedPayPeriodTooNew: Ember.computed('end', function () {\n\t\t\treturn this.get('end') && this.get('end') > _utils.Time.date().unix();\n\t\t}),\n\n\t\tisSelectedPayPeriodTooOld: Ember.computed('start', 'organization.signatureDate', function () {\n\t\t\treturn this.get('start') && this.get('start') < this.get('organization.signatureDate');\n\t\t}),\n\n\t\tsignatureDateFormatted: Ember.computed('organization.signatureDate', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('organization.signatureDate'), 'MMMM D, YYYY');\n\t\t}),\n\n\t\tisSelectedPayPeriodOutOfRange: Ember.computed.or('isSelectedPayPeriodTooNew', 'isSelectedPayPeriodTooOld'),\n\t\tisSelectedPayPeriodSignable: Ember.computed.not('isSelectedPayPeriodOutOfRange'),\n\n\t\tmemberPayPeriods: Ember.computed.mapBy('model', 'payPeriod'),\n\t\tsignableMemberPayPeriods: Ember.computed('memberPayPeriods', function () {\n\t\t\treturn this.get('memberPayPeriods').compact().filterBy('isSignable', true);\n\t\t}),\n\n\t\tmemberTimeDocumentsRaw: Ember.computed.mapBy('model', 'memberTimeDocument'),\n\t\tmemberTimeDocuments: Ember.computed.filter('memberTimeDocumentsRaw', function (doc) {\n\t\t\treturn !Ember.isNone(doc);\n\t\t}),\n\n\t\tfiltersConfig: kFiltersConfig,\n\t\tmodeFilterConfig: Ember.computed('filtersConfig', 'signature.signatureMode', function () {\n\t\t\treturn this.get('filtersConfig')[this.get('signature.signatureMode')];\n\t\t}),\n\n\t\tfilterMenuItems: Ember.computed('modeFilterConfig', function () {\n\t\t\tvar menuItems = this.get('modeFilterConfig').map(function (o) {\n\t\t\t\treturn Ember.Object.create({ key: o.key, value: o.label });\n\t\t\t});\n\t\t\tmenuItems.push(Ember.Object.create({ key: 'all', value: (0, _utils.loc)('All') }));\n\n\t\t\treturn menuItems;\n\t\t}),\n\n\t\tfilterMenu: Ember.computed('selectedFilter', 'filterMenuItems', function () {\n\t\t\tvar filter = this.get('selectedFilter');\n\n\t\t\treturn this.get('filterMenuItems').map(function (item) {\n\t\t\t\titem.set('_selected', item.get('key') === filter);\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}),\n\n\t\tfilteredModel: Ember.computed('model', 'selectedFilter', 'nameSearchFilter', 'isLoading', function () {\n\t\t\tthis.get('isLoading');\n\n\t\t\tvar statusFilter = this.get('selectedFilter');\n\t\t\tvar filteredModels = this.get('model');\n\n\t\t\tfilteredModels = this.filterByPermissions(filteredModels);\n\n\t\t\tif (!Ember.isNone(statusFilter) && statusFilter !== 'All') {\n\t\t\t\tfilteredModels = this.filterByStatus(filteredModels, statusFilter);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('nameSearchFilter'))) {\n\t\t\t\tvar nameSearchFilter = this.get('nameSearchFilter').toLowerCase();\n\n\t\t\t\tfilteredModels = filteredModels.filter(function (member) {\n\t\t\t\t\treturn member.get('fullName').toLowerCase().indexOf(nameSearchFilter) !== -1;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn filteredModels;\n\t\t}),\n\n\t\tsortedFilteredModel: Ember.computed('filteredModel', 'selectedSort', 'selectedSortReverse', 'isLoading', function () {\n\t\t\tthis.get('isLoading');\n\n\t\t\tvar sort = this.get('selectedSort');\n\t\t\tvar filteredModel = this.get('filteredModel');\n\n\t\t\tif (Ember.isNone(filteredModel)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar filteredModelArray = this.get('filteredModel').toArray();\n\t\t\tvar sortedModel = this.getSortedModel(filteredModelArray, sort);\n\n\t\t\treturn this.get('selectedSortReverse') ? sortedModel.reverse() : sortedModel;\n\t\t}),\n\n\t\t// debounce name searches to wait until typing stops\n\t\tonNameSearchInput: Ember.observer('nameSearchFilterInput', function () {\n\t\t\tvar _this = this;\n\n\t\t\tEmber.run.debounce(function () {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t_this.set('nameSearchFilter', _this.get('nameSearchFilterInput'));\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t}),\n\n\t\t/**\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.initFilters();\n\t\t\tthis.setInitialPayPeriod();\n\t\t},\n\t\tinitFilters: function initFilters() {\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('selectedFilter', 'All');\n\t\t\t\tthis.set('selectedSort', 'fullName');\n\t\t\t\tthis.set('selectedSortReverse', false);\n\t\t\t\tthis.set('nameSearchFilter', null);\n\t\t\t}\n\t\t},\n\t\trefresh: function refresh() {\n\t\t\tvar route = Ember.getOwner(this).lookup('route:report.time-card-approval');\n\n\t\t\tif (!Ember.isNone(route)) {\n\t\t\t\tthis.initFilters();\n\t\t\t\troute.refresh();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Set the initial start and end times for the selected pay period\n   *\n   * @private\n   * @method setInitialPayPeriod\n   * @return {Model.MemberTimeDocuments[]}\n   */\n\t\tsetInitialPayPeriod: function setInitialPayPeriod() {\n\t\t\tvar now = _utils.Time.date().startOf('day').unix();\n\n\t\t\tvar currentPayPeriod = this.get('payPeriod').getPayPeriod(now);\n\t\t\tvar previousPayPeriod = this.get('payPeriod').getPayPeriod(currentPayPeriod.get('startDate').subtract(1, 'days').unix());\n\t\t\tvar payPeriod = this.get('organization.createdOn') <= previousPayPeriod.get('end') ? previousPayPeriod : currentPayPeriod;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\tthis.set('currentPayPeriod', currentPayPeriod);\n\t\t\t\tthis.set('previousPayPeriod', previousPayPeriod);\n\n\t\t\t\tthis.changeDateRange(payPeriod, false);\n\t\t\t}\n\t\t},\n\t\tchangeDateRange: function changeDateRange(payPeriod) {\n\t\t\tvar refresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar newStart = payPeriod.get('startDate').unix();\n\t\t\tvar newEnd = payPeriod.get('endDate').unix();\n\n\t\t\tif (start !== newStart && !this.get('isDestroyed')) {\n\t\t\t\tthis.set('start', newStart);\n\t\t\t\tthis.set('end', newEnd);\n\n\t\t\t\tif (refresh) {\n\t\t\t\t\tthis.refresh();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfilterByPermissions: function filterByPermissions(model) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!model) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn model.filter(function (item) {\n\t\t\t\treturn _this2.get('access').canTakeActionForAny(['timeEvents', 'manageTimeEntries'], item);\n\t\t\t});\n\t\t},\n\t\tfilterByStatus: function filterByStatus(model, filter) {\n\t\t\t// Logger.info(this, 'filterByStatus', filter);\n\n\t\t\tif (Ember.isNone(filter) || filter === 'all') {\n\t\t\t\treturn model;\n\t\t\t} else if (this.get('signature.isSignatureModeBase')) {\n\t\t\t\treturn this.filterByStatusBaseMode(model, filter);\n\t\t\t} else if (this.get('signature.isSignatureModeSupervisor')) {\n\t\t\t\treturn this.filterByStatusSupervisorMode(model, filter);\n\t\t\t} else {\n\t\t\t\treturn model;\n\t\t\t}\n\t\t},\n\t\tfilterByStatusBaseMode: function filterByStatusBaseMode(model, filter) {\n\t\t\t// Logger.info(this, 'filterByStatusBaseMode', filter);\n\n\t\t\tif (filter === 'signed') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn item.get('memberTimeDocument.hasValidSelfSignature');\n\t\t\t\t});\n\t\t\t} else if (filter === 'unsigned') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn !item.get('memberTimeDocument.hasValidSelfSignature') && !item.get('memberTimeDocument.needsSelfSignatureResign');\n\t\t\t\t});\n\t\t\t} else if (filter === 'resign') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn item.get('memberTimeDocument.needsSelfSignatureResign');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn model;\n\t\t\t}\n\t\t},\n\t\tfilterByStatusSupervisorMode: function filterByStatusSupervisorMode(model, filter) {\n\t\t\t// Logger.info(this, 'filterByStatusSupervisorMode', filter);\n\n\t\t\tif (filter === 'signed') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn item.get('memberTimeDocument.hasBothValidSignatures');\n\t\t\t\t});\n\t\t\t} else if (filter === 'unsigned') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn !item.get('memberTimeDocument.hasPreviousInvalidation') && (Ember.isNone(item.get('memberTimeDocument.id')) || item.get('memberTimeDocument.needsBothSignature'));\n\t\t\t\t});\n\t\t\t} else if (filter === 'employee') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn !item.get('memberTimeDocument.hasValidSelfSignature') && item.get('memberTimeDocument.hasValidAuthoritativeSignature');\n\t\t\t\t});\n\t\t\t} else if (filter === 'supervisor') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn !item.get('memberTimeDocument.hasValidAuthoritativeSignature') && item.get('memberTimeDocument.hasValidSelfSignature');\n\t\t\t\t});\n\t\t\t} else if (filter === 'resign') {\n\t\t\t\treturn model.filter(function (item) {\n\t\t\t\t\treturn item.get('memberTimeDocument.needsBothSignatureResign');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn model;\n\t\t\t}\n\t\t},\n\t\tgetSortedModel: function getSortedModel(model, sort) {\n\t\t\tif (sort === 'lastFirst') {\n\t\t\t\treturn model.sortBy('lastName', 'firstName');\n\t\t\t} else if (sort === 'signatureStatus') {\n\t\t\t\treturn model.sort(this.sortBySignatureStatus.bind(this));\n\t\t\t} else if (sort === 'lockDate') {\n\t\t\t\treturn model.sort(this.sortByLockDate.bind(this));\n\t\t\t} else {\n\t\t\t\t// default to sort by name\n\t\t\t\treturn model.sortBy('fullName');\n\t\t\t}\n\t\t},\n\t\tsortBySignatureStatus: function sortBySignatureStatus(aMember, bMember) {\n\t\t\tvar a = 0;\n\t\t\tif (aMember.get('memberTimeDocument.hasValidSelfSignature')) {\n\t\t\t\ta = aMember.get('memberTimeDocument.selfSignature.createdOn');\n\t\t\t} else if (aMember.get('memberTimeDocument.needsSelfSignatureResign')) {\n\t\t\t\ta = 1;\n\t\t\t}\n\n\t\t\tvar b = 0;\n\t\t\tif (bMember.get('memberTimeDocument.hasValidSelfSignature')) {\n\t\t\t\tb = bMember.get('memberTimeDocument.selfSignature.createdOn');\n\t\t\t} else if (bMember.get('memberTimeDocument.needsSelfSignatureResign')) {\n\t\t\t\tb = 1;\n\t\t\t}\n\n\t\t\treturn a > b ? -1 : a < b ? 1 : 0;\n\t\t},\n\t\tsortByLockDate: function sortByLockDate(aMember, bMember) {\n\t\t\tvar a = aMember.get('memberLock.effectiveDate') || 0;\n\t\t\tvar b = bMember.get('memberLock.effectiveDate') || 0;\n\n\t\t\treturn a > b ? -1 : a < b ? 1 : 0;\n\t\t},\n\n\n\t\tactions: {\n\t\t\t/**\n    * Update the start and end times to the selected date range and trigger a route refresh\n    *\n    * @event changeDateRange\n    * @param {Object} payPeriod\n    */\n\t\t\tchangeDateRange: function changeDateRange(payPeriod) {\n\t\t\t\tthis.changeDateRange(payPeriod);\n\t\t\t},\n\t\t\tfilterSelected: function filterSelected(itemKey) {\n\t\t\t\t// Logger.info(this, 'filterSelected', itemKey);\n\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tif (itemKey !== this.get('selectedFilter')) {\n\t\t\t\t\t\tthis.set('selectedFilter', itemKey);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// clicking an active filter toggles the filter off\n\t\t\t\t\t\tthis.set('selectedFilter', 'all');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tteamMemberClicked: function teamMemberClicked(item) {\n\t\t\t\tvar memberId = item.get('id');\n\t\t\t\tvar start = this.get('start');\n\t\t\t\tvar end = this.get('end');\n\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tmember_id: memberId,\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: end\n\t\t\t\t};\n\n\t\t\t\tthis.transitionToRoute('time-card.full-report', { queryParams: queryParams });\n\n\t\t\t\t// /time-card/full-report?end=1483228799&member_id=92cccae3-2aac-43c2-b69e-fbca7e472118&start=1480550400\n\t\t\t},\n\t\t\tchangeSort: function changeSort(newSelectedSort) {\n\t\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t\tif (this.get('selectedSort') === newSelectedSort) {\n\t\t\t\t\t\tthis.set('selectedSortReverse', !this.get('selectedSortReverse'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('selectedSortReverse', false);\n\t\t\t\t\t\tthis.set('selectedSort', newSelectedSort);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-card', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\n\t\tqueryParams: ['project', 'sort_order'],\n\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\n\t\tproject: null,\n\t\tstart: 0,\n\t\tend: 0,\n\t\tsort_order: 'desc',\n\n\t\toptionSelector: null,\n\t\tisCSVLoading: false,\n\t\tproFeatureManager: null,\n\t\tisCondensed: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setPeriod();\n\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'export', value: (0, _utils.loc)('Export') })]);\n\n\t\t\tthis.set('printSelector', [Ember.Object.create({ key: 'print', value: (0, _utils.loc)('Print All') }), Ember.Object.create({ key: 'print-small', value: (0, _utils.loc)('Print All With Time') })]);\n\n\t\t\tthis.set('proFeatureManager', this.get('proFeature').getManager());\n\t\t},\n\n\n\t\tsetPeriod: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod')) && this.get('start') === 0) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\n\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t\tthis.set('end', previousPeriod.get('end'));\n\t\t\t}\n\t\t}),\n\n\t\treportTitle: Ember.computed('model.project', function () {\n\t\t\tif (!Ember.isNone(this.get('model.project'))) {\n\t\t\t\treturn (0, _utils.loc)(\"Project Time Sheet\");\n\t\t\t}\n\n\t\t\treturn (0, _utils.loc)(\"Time Cards\");\n\t\t}),\n\n\t\texportReport: function exportReport() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isCSVLoading', true);\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tthis.store.exportCSV('time-card-report-csv', start, end, null, this.get('model.project')).then(function () {\n\t\t\t\t_this.set('isCSVLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangeDateRange: function changeDateRange(period) {\n\t\t\t\tthis.set('start', period.get('start'));\n\t\t\t\tthis.set('end', period.get('end'));\n\n\t\t\t\tthis.transitionToRoute('report.time-card', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: period.get('start'),\n\t\t\t\t\t\tend: period.get('end')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:report.time-card').refresh();\n\t\t\t},\n\t\t\toptionChange: function optionChange(type) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tif (type.get('key') === 'export') {\n\t\t\t\t\tthis.get('proFeatureManager').requestAction('export', function () {\n\t\t\t\t\t\treturn _this2.exportReport();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tprintChanged: function printChanged(type) {\n\t\t\t\tif (type.get('key') === 'print') {\n\t\t\t\t\t_docs.default.print(Ember.$('.v-time-card-print-container'));\n\t\t\t\t} else if (type.get('key') === 'print-small') {\n\t\t\t\t\tthis.set('isCondensed', true);\n\t\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t\t_docs.default.print(Ember.$('.v-time-card-print-container'));\n\t\t\t\t\t\tthis.set('isCondensed', false);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tchangeSort: function changeSort(sort) {\n\t\t\t\tthis.set('sort_order', sort);\n\n\t\t\t\tthis.transitionToRoute('report.time-card', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tsort_order: sort\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:report.time-card').refresh();\n\t\t\t},\n\t\t\tproFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n\t\t\t\tthis.get('proFeatureManager').openModal();\n\t\t\t},\n\t\t\tproFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n\t\t\t\tthis.get('proFeatureManager').closeModal();\n\t\t\t},\n\t\t\tproFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n\t\t\t\tthis.get('proFeatureManager').onAllow();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-card/index', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\n\t\tqueryParams: ['start', 'end'],\n\n\t\tstart: 0,\n\t\tend: 0,\n\n\t\tshowTimeEntryEdit: false,\n\t\teditEntry: null,\n\t\tshowTimeOffEdit: false,\n\t\teditTimeOffEntry: null,\n\n\t\tactions: {\n\t\t\topenTimeEntryAction: function openTimeEntryAction(entry) {\n\t\t\t\tif (this.get('access').canTakeActionFor('manageTimeEntries', entry.get('model.member'))) {\n\t\t\t\t\tif (entry.get('isTimeEntry')) {\n\t\t\t\t\t\tthis.set('editEntry', entry.get('model'));\n\t\t\t\t\t\tthis.set('showTimeEntryEdit', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('editTimeOffEntry', entry.get('model'));\n\t\t\t\t\t\tthis.set('showTimeOffEdit', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\topenTimeCard: function openTimeCard(model) {\n\t\t\t\tthis.transitionToRoute('time-card.full-report', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: model.get('start'),\n\t\t\t\t\t\tend: model.get('end'),\n\t\t\t\t\t\tmember_id: model.get('member.id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t},\n\t\t\titemSaved: function itemSaved() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-card').refresh();\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-card').refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-entries', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\n\t\tqueryParams: ['project', 'sort_order'],\n\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\n\t\tproject: null,\n\t\tstart: 0,\n\t\tend: 0,\n\t\tsort_order: 'desc',\n\n\t\toptionSelector: null,\n\t\tisCSVLoading: false,\n\t\tproFeatureManager: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.setPeriod();\n\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'export', value: (0, _utils.loc)('Export') })]);\n\n\t\t\tthis.set('proFeatureManager', this.get('proFeature').getManager());\n\t\t},\n\n\n\t\tsetPeriod: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod')) && this.get('start') === 0) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\n\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t\tthis.set('end', previousPeriod.get('end'));\n\t\t\t}\n\t\t}),\n\n\t\treportTitle: Ember.computed('model.project', function () {\n\t\t\tif (!Ember.isNone(this.get('model.project'))) {\n\t\t\t\treturn (0, _utils.loc)(\"Project Time Entries\");\n\t\t\t}\n\n\t\t\treturn (0, _utils.loc)(\"Time Entries\");\n\t\t}),\n\n\t\texportReport: function exportReport() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('isCSVLoading', true);\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tthis.store.exportCSV('time-card-report-csv', start, end, null, this.get('model.project')).then(function () {\n\t\t\t\t_this.set('isCSVLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tchangeDateRange: function changeDateRange(start, end) {\n\t\t\t\tthis.set('start', start);\n\t\t\t\tthis.set('end', end);\n\n\t\t\t\tthis.transitionToRoute('report.time-entries', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: end,\n\t\t\t\t\t\tsort_order: this.get('sort_order'),\n\t\t\t\t\t\tproject: this.get('project')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:report.time-entries').refresh();\n\t\t\t},\n\t\t\toptionChange: function optionChange() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tthis.get('proFeatureManager').requestAction('export', function () {\n\t\t\t\t\treturn _this2.exportReport();\n\t\t\t\t});\n\t\t\t},\n\t\t\tchangeSort: function changeSort(sort) {\n\t\t\t\tthis.set('sort_order', sort);\n\n\t\t\t\tthis.transitionToRoute('report.time-entries', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tsort_order: sort,\n\t\t\t\t\t\tproject: this.get('project')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tEmber.getOwner(this).lookup('route:report.time-entries').refresh();\n\t\t\t},\n\t\t\tproFeatureManagerOpenModal: function proFeatureManagerOpenModal() {\n\t\t\t\tthis.get('proFeatureManager').openModal();\n\t\t\t},\n\t\t\tproFeatureManagerCloseModal: function proFeatureManagerCloseModal() {\n\t\t\t\tthis.get('proFeatureManager').closeModal();\n\t\t\t},\n\t\t\tproFeatureManagerPlanUpgraded: function proFeatureManagerPlanUpgraded() {\n\t\t\t\tthis.get('proFeatureManager').onAllow();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-entries/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\n\t\tqueryParams: ['start', 'end'],\n\n\t\tstart: 0,\n\t\tend: 0,\n\n\t\tshowTimeEntryEdit: false,\n\t\teditEntry: null,\n\t\tshowTimeOffEdit: false,\n\t\teditTimeOffEntry: null,\n\n\t\tcreatedBy: Ember.computed('auth.member.id', function () {\n\t\t\treturn this.get('auth.member.fullName') + ' @ ' + _utils.Time.date().format('h:mm A MM/DD/YYYY');\n\t\t}),\n\n\t\tactions: {\n\t\t\topenTimeEntryAction: function openTimeEntryAction(entry) {\n\t\t\t\tif (this.get('access').canTakeActionFor('manageTimeEntries', entry.get('model.member'))) {\n\t\t\t\t\tif (entry.get('isTimeEntry')) {\n\t\t\t\t\t\tthis.set('editEntry', entry.get('model'));\n\t\t\t\t\t\tthis.set('showTimeEntryEdit', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('editTimeOffEntry', entry.get('model'));\n\t\t\t\t\t\tthis.set('showTimeOffEdit', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\n\t\t\t/**\n    * Shares a template with time-card report which allows for\n    * navigating to the time-card full report but is disabled\n    * in the time-entries report\n    *\n    */\n\t\t\topenTimeCard: function openTimeCard() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t},\n\t\t\titemSaved: function itemSaved() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-entries').refresh();\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-entries').refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-off', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tstart: 0,\n\t\tend: 0,\n\t\tmaxDate: null,\n\n\t\toptionSelector: null,\n\t\tisCSVLoading: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setPeriod();\n\t\t\tthis.set('maxDate', _utils.Time.date().add(1, 'year').unix());\n\n\t\t\tthis.set('optionSelector', [Ember.Object.create({ key: 'export', value: 'Export' })]);\n\t\t},\n\n\t\tsetPeriod: Ember.observer('auth.organizationPayPeriod.@each.id', function () {\n\t\t\tif (!Ember.isEmpty(this.get('auth.organizationPayPeriod'))) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\n\t\t\t\tthis.set('start', previousPeriod.get('start'));\n\t\t\t\tthis.set('end', previousPeriod.get('end'));\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\tchangeDateRange: function changeDateRange(start, end) {\n\t\t\t\tthis.set('start', start);\n\t\t\t\tthis.set('end', end);\n\n\t\t\t\tEmber.getOwner(this).lookup('route:report.time-off').refresh();\n\t\t\t},\n\n\t\t\toptionChange: function optionChange() {\n\t\t\t\tvar _this = this;\n\t\t\t\tthis.set('isCSVLoading', true);\n\n\t\t\t\tvar start = this.get('start');\n\t\t\t\tvar end = this.get('end');\n\n\t\t\t\tthis.store.exportCSV('time-off-report-csv', start, end).then(function () {\n\t\t\t\t\t_this.set('isCSVLoading', false);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/report/time-off/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\thasContent: Ember.computed('model.entries.@each', function () {\n\t\t\treturn this.get('model.entries.length') > 0;\n\t\t}),\n\n\t\tshowTimeEntryEdit: false,\n\t\teditEntry: null,\n\n\t\tcreatedBy: Ember.computed('auth.member.id', function () {\n\t\t\treturn this.get('auth.member.fullName');\n\t\t}),\n\n\t\tcreatedOn: Ember.computed(function () {\n\t\t\treturn _utils.Time.date().format('MM/DD/YYYY h:mm A');\n\t\t}),\n\n\t\tactions: {\n\t\t\topenTimeEntryAction: function openTimeEntryAction(entry) {\n\t\t\t\tthis.set('editEntry', entry);\n\t\t\t\tthis.set('showTimeEntryEdit', true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t},\n\t\t\titemSaved: function itemSaved() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-card').refresh();\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tEmber.getOwner(this).lookup('route:report/time-card').refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/reset', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\temail: '',\n\t\tnextMessage: null,\n\t\tsuccessMessage: false,\n\t\tisSubmitting: false,\n\n\t\t_nextMessage: Ember.computed(function () {\n\t\t\treturn {\n\t\t\t\t\"200\": (0, _utils.loc)('We sent you an email with a link to reset your password.'),\n\t\t\t\t\"201\": (0, _utils.loc)('The username was not found in the system.'),\n\t\t\t\t\"202\": (0, _utils.loc)('The system has hit an error. Please try again later.'),\n\t\t\t\t\"203\": (0, _utils.loc)('The email you provided was not associated with any accounts on busybusy.')\n\t\t\t};\n\t\t}),\n\n\t\tactions: {\n\t\t\tresetPassword: function resetPassword() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tif (!this.get('isSubmitting')) {\n\t\t\t\t\tthis.set('isSubmitting', true);\n\t\t\t\t\tvar email = this.get('email').trim();\n\t\t\t\t\tif (!Ember.isEmpty(email)) {\n\t\t\t\t\t\tthis.store.rpcRequest('account', 'password-reset-request', { email: email }).then(function (result) {\n\t\t\t\t\t\t\tif (result.data) {\n\t\t\t\t\t\t\t\t_this.set('successMessage', true);\n\t\t\t\t\t\t\t\t_this.set('nextMessage', _this.get('_nextMessage')[\"200\"]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar code = 202;\n\t\t\t\t\t\t\t\tif (result.errors && result.errors[0] && result.errors[0].code) {\n\t\t\t\t\t\t\t\t\tcode = result.errors[0].code;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_this.set('nextMessage', _this.get('_nextMessage')[code]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_this.set('isSubmitting', false);\n\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\tvar code = 202;\n\t\t\t\t\t\t\tif (err.errors && err.errors[0] && err.errors[0].code) {\n\t\t\t\t\t\t\t\tcode = err.errors[0].code;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_this.set('nextMessage', _this.get('_nextMessage')[code]);\n\t\t\t\t\t\t\t_this.set('isSubmitting', false);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('nextMessage', (0, _utils.loc)(\"You must provide an email to reset your password.\"));\n\t\t\t\t\t\tthis.set('isSubmitting', false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/scheduling', ['exports', '@busy-web/utils', 'busy-app/utils/date-range-pay-period', 'busy-app/utils/logger'], function (exports, _utils, _dateRangePayPeriod, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar MOBILE_WIDTH = 980;\n\n\t/**\n  *\n  */\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['start', 'end', 'selected', 'custom', 'isMobile', 'currentDay', 'group'],\n\n\t\t// queryParams\n\t\tstart: 0,\n\t\tend: 0,\n\t\tcurrentDay: 0,\n\t\tselected: 'weekly',\n\t\tcustom: false,\n\t\tisMobile: false,\n\t\tgroup: null,\n\n\t\t// services\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tproFeature: Ember.inject.service('pro-feature'),\n\t\tpayPeriod: Ember.inject.service('payPeriod'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\trouter: Ember.inject.service('router'),\n\n\t\tshowAdd: false,\n\t\tisBreak: false,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\t\tmemberGroups: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tEmber.set(this, 'currentDay', _utils.Time.date().startOf('day').unix());\n\n\t\t\tdefaultParams(this, {\n\t\t\t\tstart: Ember.get(this, 'start'),\n\t\t\t\tend: Ember.get(this, 'end'),\n\t\t\t\tselected: Ember.get(this, 'selected'),\n\t\t\t\tcustom: Ember.get(this, 'custom'),\n\t\t\t\tisMobile: Ember.get(this, 'isMobile')\n\t\t\t});\n\n\t\t\tEmber.set(this, 'mobileDateRangeActions', [Ember.Object.create({ id: 'daily', name: (0, _utils.loc)('Daily'), span: 1, type: 'days', sort: 100, selected: true })]);\n\n\t\t\tEmber.set(this, 'dateRangeActions', [Ember.Object.create({ id: 'weekly', name: (0, _utils.loc)('Weekly'), span: 1, type: 'weeks', sort: 200, selected: true }), Ember.Object.create({ id: 'monthly', name: (0, _utils.loc)('Monthly'), span: 1, type: 'months', sort: 300, selected: false }), (0, _dateRangePayPeriod.default)(Ember.get(this, 'payPeriod'))]);\n\n\t\t\tEmber.set(this, 'minDate', _utils.Time.date().subtract(3, 'years').startOf('day').unix());\n\t\t\tEmber.set(this, 'maxDate', _utils.Time.date().add(3, 'years').endOf('day').unix());\n\t\t},\n\n\n\t\tscheduleOptions: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ key: 'work', value: 'Schedule work' }), Ember.Object.create({ key: 'break', value: 'Schedule break' })];\n\t\t}),\n\n\t\tgroupFilterDefaultOptions: Ember.computed('group', function () {\n\t\t\tvar group = this.get('group');\n\n\t\t\treturn [Ember.Object.create({ id: null, groupName: (0, _utils.loc)('All Members'), defaultGroup: true, _selected: Ember.isEmpty(group) }), Ember.Object.create({ id: 'ungrouped', groupName: (0, _utils.loc)('Ungrouped'), ungroupedGroup: true, _selected: group === 'ungrouped' })];\n\t\t}\n\t\t// EmberObject.create({id: 'archived', groupName: loc('Archived'), archivedGroup: true, _selected: (group === 'archived')})\n\t\t),\n\n\t\tgroupFilterOptions: Ember.computed('group', 'model.memberGroups.[]', function () {\n\t\t\tvar group = this.get('group');\n\t\t\tvar memberGroups = this.get('model.memberGroups');\n\n\t\t\treturn memberGroups.map(function (memberGroup) {\n\t\t\t\treturn Ember.Object.create(Object.assign({ _selected: group === memberGroup.get('id') }, memberGroup.getProperties('id', 'groupName')));\n\t\t\t});\n\t\t}),\n\n\t\tshowScheduleButton: Ember.computed('auth.member.positionId', function () {\n\t\t\tvar position = this.get('auth.authMemberPosition');\n\t\t\tif (position.get('timeEvents') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisGroupFilterApplied: Ember.computed('group', function () {\n\t\t\treturn !Ember.isNone(Ember.get(this, 'group'));\n\t\t}),\n\n\t\tcombinedGroupFilterOptions: Ember.computed('groupFilterOptions.@each._selected', 'groupFilterDefaultOptions.@each._selected', function () {\n\t\t\treturn [].concat(_toConsumableArray(Ember.get(this, 'groupFilterOptions')), _toConsumableArray(Ember.get(this, 'groupFilterDefaultOptions')));\n\t\t}),\n\n\t\tselectedGroupFilter: Ember.computed('combinedGroupFilterOptions.@each._selected', function () {\n\t\t\treturn Ember.get(this, 'combinedGroupFilterOptions').findBy('_selected');\n\t\t}),\n\n\t\tactions: {\n\t\t\tresizeHandler: function resizeHandler(event, width) {\n\t\t\t\tvar custom = false;\n\t\t\t\tvar isMobile = false;\n\t\t\t\tvar selected = 'weekly';\n\n\t\t\t\tif (width < MOBILE_WIDTH) {\n\t\t\t\t\tisMobile = true;\n\t\t\t\t\tselected = 'daily';\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(this, 'isMobile') !== isMobile) {\n\t\t\t\t\tvar queryParams = defaultParams(this, { start: 0, end: 0, selected: selected, custom: custom, isMobile: isMobile });\n\t\t\t\t\tthis.transitionToRoute('scheduling', { queryParams: queryParams });\n\t\t\t\t\tthis.send('refreshModel');\n\t\t\t\t}\n\t\t\t},\n\t\t\tdateChange: function dateChange(start, end, custom, selected) {\n\t\t\t\tif (selected === 'weekly' && Ember.get(this, 'selected') !== selected) {\n\t\t\t\t\tend = null;\n\t\t\t\t}\n\n\t\t\t\tvar queryParams = defaultParams(this, { start: start, end: end, selected: selected, custom: custom, isMobile: Ember.get(this, 'isMobile') });\n\t\t\t\tthis.transitionToRoute('scheduling', { queryParams: queryParams });\n\t\t\t\tthis.send('refreshModel');\n\t\t\t},\n\t\t\taddScheduleSaved: function addScheduleSaved() {\n\t\t\t\tEmber.set(this, 'showAdd', false);\n\t\t\t\tthis.send('refreshModel');\n\t\t\t},\n\t\t\tscheduleAction: function scheduleAction(item) {\n\t\t\t\tEmber.set(this, 'isBreak', item.key === 'break');\n\t\t\t\tEmber.set(this, 'showAdd', true);\n\t\t\t},\n\t\t\tcloseAddDialog: function closeAddDialog() {\n\t\t\t\tEmber.set(this, 'showAdd', false);\n\t\t\t},\n\t\t\tonSelectGroupFilter: function onSelectGroupFilter(item) {\n\t\t\t\t_logger.default.info(this, 'onSelectGroupFilter', item);\n\n\t\t\t\tthis.set('group', Ember.get(item, 'id'));\n\t\t\t\tthis.send('refreshModel');\n\t\t\t},\n\t\t\tclearGroupFilter: function clearGroupFilter() {\n\t\t\t\tthis.send('onSelectGroupFilter', { id: null });\n\t\t\t}\n\t\t}\n\t});\n\n\n\tvar defaultParams = function defaultParams(controller, _ref) {\n\t\tvar _ref$start = _ref.start,\n\t\t    start = _ref$start === undefined ? 0 : _ref$start,\n\t\t    _ref$end = _ref.end,\n\t\t    end = _ref$end === undefined ? 0 : _ref$end,\n\t\t    _ref$selected = _ref.selected,\n\t\t    selected = _ref$selected === undefined ? 'weekly' : _ref$selected,\n\t\t    _ref$custom = _ref.custom,\n\t\t    custom = _ref$custom === undefined ? false : _ref$custom,\n\t\t    _ref$isMobile = _ref.isMobile,\n\t\t    isMobile = _ref$isMobile === undefined ? false : _ref$isMobile;\n\n\t\tif (window.innerWidth <= MOBILE_WIDTH && !isMobile) {\n\t\t\tselected = 'daily';\n\t\t\tcustom = false;\n\t\t\tisMobile = true;\n\t\t} else if (window.innerWidth > MOBILE_WIDTH && isMobile) {\n\t\t\tselected = 'weekly';\n\t\t\tcustom = false;\n\t\t\tisMobile = false;\n\t\t}\n\n\t\t// update controller in case params have changed\n\t\tEmber.set(controller, 'start', start);\n\t\tEmber.set(controller, 'end', end);\n\t\tEmber.set(controller, 'selected', selected);\n\t\tEmber.set(controller, 'custom', custom);\n\t\tEmber.set(controller, 'isMobile', isMobile);\n\n\t\treturn { start: start, end: end, selected: selected, custom: custom, isMobile: isMobile };\n\t};\n});","define('busy-app/controllers/scheduling/index', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tisEdit: false,\n\t\tisCopy: false,\n\t\tisDelete: false,\n\n\t\tactionModel: null,\n\n\t\temployeeSelectorPermissions: Ember.computed(function () {\n\t\t\treturn ['timeEvents'];\n\t\t}),\n\n\t\tshowEdit: Ember.computed('isEdit', 'isCopy', function () {\n\t\t\treturn Ember.get(this, 'isEdit') || Ember.get(this, 'isCopy');\n\t\t}),\n\n\t\tscheduleOptions: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ key: 'copy', value: 'Copy' }), Ember.Object.create({ key: 'edit', value: 'Edit' }), Ember.Object.create({ key: 'move', value: 'Move to Next Day' }), Ember.Object.create({ key: 'delete', value: 'Delete' })];\n\t\t}),\n\n\t\tselectedDay: Ember.computed('model.days.@each.selected', function () {\n\t\t\treturn this.get('model.days').findBy('selected', true);\n\t\t}),\n\n\t\tmoveReminderToNextDay: function moveReminderToNextDay(reminder) {\n\t\t\tvar _this = this;\n\n\t\t\tvar newStartTime = _utils.Time.date(Ember.get(reminder, 'startTime')).add(1, 'days').unix();\n\t\t\tvar newEndTime = _utils.Time.date(Ember.get(reminder, 'endTime')).add(1, 'days').unix();\n\n\t\t\tEmber.set(reminder, 'startTime', newStartTime);\n\t\t\tEmber.set(reminder, 'endTime', newEndTime);\n\n\t\t\treturn reminder.save().then(function () {\n\t\t\t\treturn _this.send('refreshModel');\n\t\t\t});\n\t\t},\n\t\tdeleteReminder: function deleteReminder(reminder) {\n\t\t\treminder.deleteRecord();\n\t\t\treturn reminder.save();\n\t\t},\n\n\n\t\tactions: {\n\t\t\tscheduleOptionAction: function scheduleOptionAction(reminder, action) {\n\t\t\t\tEmber.set(this, 'isCopy', false);\n\t\t\t\tEmber.set(this, 'isEdit', false);\n\t\t\t\tEmber.set(this, 'isDelete', false);\n\n\t\t\t\tif (action.key === 'move') {\n\t\t\t\t\treturn this.moveReminderToNextDay(reminder);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.set(this, 'actionModel', reminder);\n\t\t\t\t\tEmber.set(this, 'is' + Ember.String.classify(action.key), true);\n\t\t\t\t}\n\t\t\t},\n\t\t\teditCopySaved: function editCopySaved() {\n\t\t\t\tEmber.set(this, 'actionModel', null);\n\t\t\t\tEmber.set(this, 'isCopy', false);\n\t\t\t\tEmber.set(this, 'isEdit', false);\n\t\t\t\tthis.send('refreshModel');\n\t\t\t},\n\t\t\tconfirmDelete: function confirmDelete() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\treturn this.deleteReminder(Ember.get(this, 'actionModel')).then(function () {\n\t\t\t\t\tEmber.set(_this2, 'actionModel', null);\n\t\t\t\t\tEmber.set(_this2, 'isDelete', false);\n\t\t\t\t\t_this2.send('refreshModel');\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseDeleteDialog: function closeDeleteDialog() {\n\t\t\t\tEmber.set(this, 'actionModel', null);\n\t\t\t\tEmber.set(this, 'isDelete', false);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tEmber.set(this, 'actionModel', null);\n\t\t\t\tEmber.set(this, 'isCopy', false);\n\t\t\t\tEmber.set(this, 'isEdit', false);\n\t\t\t},\n\t\t\taddEmployees: function addEmployees(item, selected) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar scheduleLinks = Ember.get(item, 'scheduleLinks');\n\t\t\t\tif (!Ember.isEmpty(scheduleLinks) && !Ember.isEmpty(selected)) {\n\t\t\t\t\tvar prev = scheduleLinks.mapBy('member');\n\t\t\t\t\tvar removed = prev.filter(function (m) {\n\t\t\t\t\t\treturn Ember.isNone(selected.findBy('id', m.id));\n\t\t\t\t\t});\n\t\t\t\t\tvar added = selected.filter(function (m) {\n\t\t\t\t\t\treturn Ember.isNone(prev.findBy('id', m.id));\n\t\t\t\t\t});\n\n\t\t\t\t\tvar removeMemberLinks = Ember.RSVP.resolve();\n\t\t\t\t\tif (!Ember.isEmpty(removed)) {\n\t\t\t\t\t\tremoveMemberLinks = Ember.RSVP.all(removed.map(function (member) {\n\t\t\t\t\t\t\tvar link = scheduleLinks.findBy('memberId', member.id);\n\t\t\t\t\t\t\tif (link) {\n\t\t\t\t\t\t\t\tlink.set('deletedOn', _utils.Time.timestamp());\n\t\t\t\t\t\t\t\treturn link.save();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\n\t\t\t\t\tvar addMemberLinks = Ember.RSVP.resolve();\n\t\t\t\t\tif (!Ember.isEmpty(added)) {\n\t\t\t\t\t\taddMemberLinks = Ember.RSVP.all(added.map(function (member) {\n\t\t\t\t\t\t\treturn _this3.get('store').createRecord('schedule-reminder-link', {\n\t\t\t\t\t\t\t\tscheduleReminderId: item.id,\n\t\t\t\t\t\t\t\tmemberId: member.id\n\t\t\t\t\t\t\t}).save();\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isEmpty(removed) || !Ember.isEmpty(added)) {\n\t\t\t\t\t\tEmber.RSVP.hash({ removeMemberLinks: removeMemberLinks, addMemberLinks: addMemberLinks }).then(function () {\n\t\t\t\t\t\t\t_this3.send('refreshModel');\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/signup', ['exports', '@busy-web/utils', 'busy-app/utils/api-error', 'busy-app/utils/settings', 'cryptojs'], function (exports, _utils, _apiError, _settings, _cryptojs) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _slicedToArray = function () {\n    function sliceIterator(arr, i) {\n      var _arr = [];\n      var _n = true;\n      var _d = false;\n      var _e = undefined;\n\n      try {\n        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n          _arr.push(_s.value);\n\n          if (i && _arr.length === i) break;\n        }\n      } catch (err) {\n        _d = true;\n        _e = err;\n      } finally {\n        try {\n          if (!_n && _i[\"return\"]) _i[\"return\"]();\n        } finally {\n          if (_d) throw _e;\n        }\n      }\n\n      return _arr;\n    }\n\n    return function (arr, i) {\n      if (Array.isArray(arr)) {\n        return arr;\n      } else if (Symbol.iterator in Object(arr)) {\n        return sliceIterator(arr, i);\n      } else {\n        throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n      }\n    };\n  }();\n\n  function _toConsumableArray(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n        arr2[i] = arr[i];\n      }\n\n      return arr2;\n    } else {\n      return Array.from(arr);\n    }\n  }\n\n  /***/\n  var kCompanySizeOptions = [[1, 6], [7, 50], [51, 150], [151, null]];\n\n  var kTrades = ['Asphalt / Paving', 'Cabinetry', 'Concrete', 'Drywall', 'Electrical', 'Excavation', 'Flooring', 'Framing', 'General Contractor', 'Landscaping', 'Masonry', 'Painting', 'Plumbing', 'Remodeling', 'Roofing'];\n\n  var kTradeOptions = [].concat(_toConsumableArray(kTrades.sort(function (a, b) {\n    return a.localeCompare(b);\n  })), ['(Other)']);\n\n  /**\n   * `Controller/Signup`\n   *\n   * @class Signup\n   * @namespace Controllers\n   * @extends Controller\n   */\n  exports.default = Ember.Controller.extend({\n    toggle: Ember.inject.service('toggle'),\n    graylog: Ember.inject.service('graylog'),\n\n    username: '',\n    email: '',\n    phone: '',\n    firstName: '',\n    lastName: '',\n    password: '',\n    passwordMatch: '',\n    terms: false,\n\n    companyName: '',\n    postalCode: '',\n\n    payPeriodType: 0,\n    dayOne: null,\n    dayTwo: null,\n\n    overtimePeriod: null,\n    overtimeRules: null,\n\n    // deprecated\n    trade: null,\n    companySizeMin: null,\n    companySizeMax: null,\n\n    busy_utm_source: '',\n    busy_utm_medium: '',\n    busy_utm_term: '',\n    busy_utm_content: '',\n    busy_utm_campaign: '',\n    busy_ad_clicked: '',\n\n    /**\n     * string for the department of labor tooltip\n     *\n     * @private\n     * @property dolInfo\n     * @type String\n     * @default ''\n     */\n    dolInfo: '',\n\n    /**\n     * boolean to determine whether DOL tooltip is open or not\n     *\n     * @private\n     * @property tooltipIsOpen\n     * @type boolean\n     * @default false\n     */\n    tooltipIsOpen: false,\n\n    page1: true,\n    page2: false,\n    page3: false,\n    page4: false,\n    currentPage: 1,\n\n    payPeriodSelect: null,\n\n    isWeekly: false,\n    isBiWeekly: false,\n    isSemiMonthly: false,\n    isMonthly: false,\n\n    weekSelector: null,\n    monthSelector: null,\n    overtimeWeekSelector: null,\n    overtimeSelector: null,\n\n    hasBiWeekDay: false,\n    biWeekDay: 0,\n\n    isFinished: false,\n    isCreatingAccount: false,\n\n    pastPage1: Ember.computed('page2', 'page3', 'page4', function () {\n      return this.get('page2') || this.get('page3') || this.get('page4');\n    }),\n\n    pastPage2: Ember.computed('page3', 'page4', function () {\n      return this.get('page3') || this.get('page4');\n    }),\n\n    pastPage3: Ember.computed('page4', function () {\n      return this.get('page4');\n    }),\n\n    isPage4: Ember.computed('page4', 'isFinished', function () {\n      return this.get('page4') && !this.get('isFinished');\n    }),\n\n    init: function init() {\n      var _this = this;\n\n      this._super.apply(this, arguments);\n\n      this.set('identifier', _utils.UUID.generate());\n      this.graylogWatcher();\n\n      this.set('companySizeSelector', kCompanySizeOptions.map(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n            min = _ref2[0],\n            max = _ref2[1];\n\n        return _this.createCompanySizeOption(min, max);\n      }));\n      this.set(\"tradeSelector\", kTradeOptions.map(function (value) {\n        return Ember.Object.create({ value: value, label: (0, _utils.loc)(value) });\n      }));\n\n      this.set('payPeriodSelect', [Ember.Object.create({ key: 10, value: (0, _utils.loc)(\"Weekly\"), _selected: true }), Ember.Object.create({ key: 20, value: (0, _utils.loc)(\"Biweekly\") }), Ember.Object.create({ key: 30, value: (0, _utils.loc)(\"Semimonthly\") }), Ember.Object.create({ key: 40, value: (0, _utils.loc)(\"Monthly\") })]);\n\n      this.set('weekSelector', [Ember.Object.create({ key: 0, value: (0, _utils.loc)(\"Sunday\") }), Ember.Object.create({ key: 1, value: (0, _utils.loc)(\"Monday\"), _selected: true }), Ember.Object.create({ key: 2, value: (0, _utils.loc)(\"Tuesday\") }), Ember.Object.create({ key: 3, value: (0, _utils.loc)(\"Wednesday\") }), Ember.Object.create({ key: 4, value: (0, _utils.loc)(\"Thursday\") }), Ember.Object.create({ key: 5, value: (0, _utils.loc)(\"Friday\") }), Ember.Object.create({ key: 6, value: (0, _utils.loc)(\"Saturday\") })]);\n\n      this.set('monthSelector', [Ember.Object.create({ value: (0, _utils.loc)('1st'), key: 1, _selected: true }), Ember.Object.create({ value: (0, _utils.loc)('2nd'), key: 2 }), Ember.Object.create({ value: (0, _utils.loc)('3rd'), key: 3 }), Ember.Object.create({ value: (0, _utils.loc)('4th'), key: 4 }), Ember.Object.create({ value: (0, _utils.loc)('5th'), key: 5 }), Ember.Object.create({ value: (0, _utils.loc)('6th'), key: 6 }), Ember.Object.create({ value: (0, _utils.loc)('7th'), key: 7 }), Ember.Object.create({ value: (0, _utils.loc)('8th'), key: 8 }), Ember.Object.create({ value: (0, _utils.loc)('9th'), key: 9 }), Ember.Object.create({ value: (0, _utils.loc)('10th'), key: 10 }), Ember.Object.create({ value: (0, _utils.loc)('11th'), key: 11 }), Ember.Object.create({ value: (0, _utils.loc)('12th'), key: 12 }), Ember.Object.create({ value: (0, _utils.loc)('13th'), key: 13 }), Ember.Object.create({ value: (0, _utils.loc)('14th'), key: 14 }), Ember.Object.create({ value: (0, _utils.loc)('15th'), key: 15 }), Ember.Object.create({ value: (0, _utils.loc)('16th'), key: 16 }), Ember.Object.create({ value: (0, _utils.loc)('17th'), key: 17 }), Ember.Object.create({ value: (0, _utils.loc)('18th'), key: 18 }), Ember.Object.create({ value: (0, _utils.loc)('19th'), key: 19 }), Ember.Object.create({ value: (0, _utils.loc)('20th'), key: 20 }), Ember.Object.create({ value: (0, _utils.loc)('21st'), key: 21 }), Ember.Object.create({ value: (0, _utils.loc)('22nd'), key: 22 }), Ember.Object.create({ value: (0, _utils.loc)('23rd'), key: 23 }), Ember.Object.create({ value: (0, _utils.loc)('24th'), key: 24 }), Ember.Object.create({ value: (0, _utils.loc)('25th'), key: 25 }), Ember.Object.create({ value: (0, _utils.loc)('26th'), key: 26 }), Ember.Object.create({ value: (0, _utils.loc)('27th'), key: 27 }), Ember.Object.create({ value: (0, _utils.loc)('28th'), key: 28 }), Ember.Object.create({ value: (0, _utils.loc)('29th'), key: 29 }), Ember.Object.create({ value: (0, _utils.loc)('30th'), key: 30 }), Ember.Object.create({ value: (0, _utils.loc)('31st'), key: 31 })]);\n\n      this.set('overtimeWeekSelector', [Ember.Object.create({ key: 0, value: (0, _utils.loc)(\"Sunday\") }), Ember.Object.create({ key: 1, value: (0, _utils.loc)(\"Monday\"), _selected: true }), Ember.Object.create({ key: 2, value: (0, _utils.loc)(\"Tuesday\") }), Ember.Object.create({ key: 3, value: (0, _utils.loc)(\"Wednesday\") }), Ember.Object.create({ key: 4, value: (0, _utils.loc)(\"Thursday\") }), Ember.Object.create({ key: 5, value: (0, _utils.loc)(\"Friday\") }), Ember.Object.create({ key: 6, value: (0, _utils.loc)(\"Saturday\") })]);\n\n      this.set('overtimeSelector', [Ember.Object.create({ key: 10, value: (0, _utils.loc)('Standard') }), Ember.Object.create({ key: 20, value: (0, _utils.loc)('California') }), Ember.Object.create({ key: 30, value: (0, _utils.loc)('Custom') })]);\n\n      this.adTrackingUrlParse();\n      this.set('isWeekly', true);\n      this.set('payPeriodType', 10);\n      this.setPayPeriodDefaults();\n      this.set('overtimePeriod', 1);\n\n      var dolLine1 = (0, _utils.loc)('A work week is a fixed period of seven consecutive days, according to the U.S. Department of Labor. ');\n      var dolLine2 = (0, _utils.loc)('The work week is the basis for overtime calculations and does not have to coincide with the calendar week or with your pay period. ');\n      var dolLine3 = Ember.String.htmlSafe((0, _utils.loc)('Your work week may begin on any day of the week. For more info see the <a href=\"https://www.dol.gov/general/topic/wages/overtimepay\" target=\"_blank\">U.S. Department of Labor website.</a>'));\n\n      this.set('dolInfo', Ember.String.htmlSafe(dolLine1 + dolLine2 + dolLine3));\n    },\n\n\n    /**\n     * observer to set defaults for pay period settings\n     *\n     * @private\n     * @method setPayPeriodDefaults\n     */\n    setPayPeriodDefaults: Ember.observer('isWeekly', 'isBiWeekly', 'isSemiMonthly', 'isMonthly', function () {\n      if (this.get('isWeekly') || this.get('isMonthly')) {\n        this.set('dayOne', 1);\n        this.set('hasBiWeekDay', false);\n      } else if (this.get('isBiWeekly')) {\n        this.set('dayOne', null);\n        this.set('hasBiWeekDay', true);\n        this.set('biWeekDay', 1);\n      } else if (this.get('isSemiMonthly')) {\n        this.set('hasBiWeekDay', false);\n        this.set('dayOne', 1);\n        this.set('dayTwo', 15);\n      }\n    }),\n\n    createCompanySizeOption: function createCompanySizeOption(min, max) {\n      if (min && !max) {\n        return Ember.Object.create({ min: min, max: max, value: min + '+' });\n      } else if (!min && max) {\n        return Ember.Object.create({ min: min, max: max, value: '-' + min });\n      } else {\n        return Ember.Object.create({ min: min, max: max, value: min + ' \\u2013 ' + max });\n      }\n    },\n    adTrackingUrlParse: function adTrackingUrlParse() {\n      var _this2 = this;\n\n      // some browsers don't include the '?' in the search\n      // splitting on '?' and getting the last array element will give us the expected value\n      var query = window.location.search.split('?').pop();\n\n      if (Ember.isNone(query)) {\n        return;\n      }\n\n      var params = query.split('&');\n\n      var utmParams = ['busy_utm_source', 'busy_utm_medium', 'busy_utm_term', 'busy_utm_content', 'busy_utm_campaign', 'busy_ad_clicked'];\n\n      params.forEach(function (param) {\n        var _param$split = param.split('='),\n            _param$split2 = _slicedToArray(_param$split, 2),\n            key = _param$split2[0],\n            val = _param$split2[1];\n\n        var decodedKey = decodeURIComponent(key);\n        var decodedVal = decodeURIComponent(val);\n\n        // handle both `busy_utm_source` and `utm_source`\n        // utm_source is the expected format,\n        //   but busy_utm_source format is maintained for any legacy support\n        if (!decodedKey.startsWith('busy_')) {\n          decodedKey = 'busy_' + decodedKey;\n        }\n\n        if (utmParams.includes(decodedKey)) {\n          _this2.set(decodedKey, decodedVal);\n        }\n      });\n    },\n    adTrackingPost: function adTrackingPost(member_id) {\n      var _this3 = this;\n\n      // get broser info.\n      var browser = _utils.Browser.detect();\n      var adClickDate = this.get('busy_ad_clicked');\n\n      if (!Ember.isNone(adClickDate)) {\n        adClickDate = _utils.Time.timestamp();\n      }\n\n      // create a new signUpEvent model\n      var signUpEvent = this.store.createRecord('sign-up-event', {\n        memberId: member_id,\n        medium: this.get('busy_utm_medium'),\n        campaign: this.get('busy_utm_campaign'),\n        source: this.get('busy_utm_source'),\n        content: this.get('busy_utm_content'),\n        term: this.get('busy_utm_term'),\n        adClickDate: adClickDate,\n        appVersion: _settings.default.get('version'),\n        platform: 'web',\n        os: browser.type,\n        osVersion: browser.version,\n        device: browser.osType + ' ' + browser.osVersion + ' - ' + browser.type + ' ' + browser.version\n      });\n\n      // save the event.\n      return signUpEvent.save().catch(function (err) {\n        var message = _apiError.default.getErrorString(err, 'sign-up-event');\n        _this3.showError((0, _utils.loc)(\"There was an error creating your account. Please try again.\"));\n\n        err.message = message;\n        throw new Error(err);\n      });\n    },\n\n\n    biWeekSelector: Ember.computed('hasBiWeekDay', 'biWeekDay', function () {\n      var day = this.get('biWeekDay');\n      var day2 = day + 7;\n\n      var epoch = window.moment.utc('1970-01-11', 'YYYY-MM-DD').add(day, 'days');\n\n      var date = _utils.Time.date().day(day);\n      var date2 = _utils.Time.date().day(day).add(1, 'weeks');\n\n      var epochWeek = parseInt(epoch.unix() / 60 / 60 / 24 / 7, 10) % 2;\n      var dateWeek = parseInt(date.unix() / 60 / 60 / 24 / 7, 10) % 2;\n\n      if (epochWeek !== dateWeek) {\n        day2 = day;\n        day = day2 + 7;\n      }\n\n      return [Ember.Object.create({ key: day, value: date.format('ddd MMM Do YYYY') }), Ember.Object.create({ key: day2, value: date2.format('ddd MMM Do YYYY') })];\n    }),\n\n    monthSelector2: Ember.computed('dayOne', 'dayTwo', function () {\n      var day = this.get('dayOne') || 0;\n      var day2 = this.get('dayTwo') || 15;\n      var days = [];\n\n      for (var i = 1; i <= 31; i++) {\n        if (day <= 27 || i <= 27 && day > 27) {\n          var d = window.moment().month(4).date(i);\n\n          if (i === day) {\n            days.push(Ember.Object.create({ key: i, value: d.format('Do'), _disable: true }));\n          } else if (i === day2) {\n            days.push(Ember.Object.create({ key: i, value: d.format('Do'), _selected: true }));\n          } else {\n            days.push(Ember.Object.create({ key: i, value: d.format('Do') }));\n          }\n        }\n      }\n\n      return days;\n    }),\n\n    createAccount: function createAccount() {\n      var _this4 = this;\n\n      this.set('isFinished', true);\n\n      var data = {};\n      data.username = this.get('username').trim();\n      data.email = this.get('email').trim();\n      data.phone = this.get('phone').replace(/[\\D]/g, '');\n      data.password = this.get('password');\n      data.organization_name = this.get('companyName').trim();\n      data.first_name = this.get('firstName').trim();\n      data.last_name = this.get('lastName').trim();\n      data.postal_code = this.get('postalCode');\n      data.organization_overtime_period_start = window.moment.utc('1970-01-11', 'YYYY-MM-DD').add(this.get('overtimePeriod') || 0, 'days').startOf('day').unix();\n      data.organization_pay_period_type = this.get('payPeriodType');\n      data.organization_pay_period_start = window.moment.utc('1970-01-11', 'YYYY-MM-DD').startOf('day').unix();\n      data.organization_pay_period_day_one = this.get('dayOne');\n      data.employee_max = this.get('companySizeMax');\n      data.employee_min = this.get('companySizeMin');\n      data.trade = null;\n      data.organization_pay_period_day_two = null;\n      data.mixpanel_alias = null;\n\n      if (!Ember.isNone(this.get('trade')) && !Ember.isEmpty(this.get('trade'))) {\n        data.trade = this.get('trade');\n      }\n\n      if (!Ember.isNone(this.get('dayTwo'))) {\n        data.organization_pay_period_day_two = this.get('dayTwo');\n      }\n\n      if (/mixpanel_id/.test(window.location.search)) {\n        data.mixpanel_alias = window.location.search.replace(/\\?mixpanel_id=([^&]*)/, '$1');\n      }\n\n      this.hideError();\n\n      // encrypt the password\n      data.password = _cryptojs.default.SHA256(data.password).toString();\n\n      var success = function success(res) {\n        _this4.onSuccess(data.username, res);\n      };\n\n      var error = function error(err) {\n        _this4.onError(err);\n      };\n\n      //save user\n      this.set('isCreatingAccount', true);\n      this.store.rpcRequest('account', 'create', data).then(success, error);\n    },\n    onSuccess: function onSuccess(username, res) {\n      var _this5 = this;\n\n      // account was created successfully\n      if (res.success) {\n        this.get('toggle').track('time.finished.onboarding');\n\n        // authenticate the session.\n        this.send('authenticateSession', username, this.get('password'), false, function () {\n          _this5.adTrackingPost(res.data.member.id).then(function () {\n            _this5.set('isCreatingAccount', false);\n            window.location = \"/\";\n          });\n        });\n      } else {\n        // show the error.\n        this.onError(res);\n        this.set('isCreatingAccount', false);\n      }\n    },\n    onError: function onError(error) {\n      // get error message\n      var message = _apiError.default.getRpcErrorString(error, 'account', 'create');\n      this.set('isCreatingAccount', false);\n\n      // show error\n      this.showError(message);\n      error.message = message;\n\n      // throw error for sentry\n      throw new Error(error);\n    },\n    showError: function showError(errorMessage, timeout) {\n      // output error\n      this.set('errorMessage', errorMessage);\n\n      if (typeof timeout === 'number') {\n        Ember.run.later(this, function () {\n          this.hideError();\n        }, timeout);\n      }\n    },\n    hideError: function hideError() {\n      this.set('errorMessage', '');\n    },\n\n\n    isUsernameTaken: false,\n\n    isFirstNameInvalid: false,\n    isLastNameInvalid: false,\n    isUsernameInvalid: false,\n    isEmailInvalid: false,\n    isPhoneInvalid: false,\n    isPassInvalid: false,\n    isPassMatchInvalid: false,\n    isCompanyNameInvalid: false,\n    isPostalCodeInvalid: false,\n    // isCompanySizeInvalid: false,\n    // isTradeInvalid: false,\n\n    invalidFirstName: (0, _utils.loc)('You must provide a first name.'),\n    invalidLastName: (0, _utils.loc)('You must provide a last name.'),\n    invalidUsername: '',\n    invalidEmail: (0, _utils.loc)('You must provide a valid email.'),\n    invalidPhone: (0, _utils.loc)('You must provide a valid phone number with area code.'),\n    invalidPass: (0, _utils.loc)('Password must be at least 8 characters in length'),\n    invalidPassMatch: '',\n    invalidCompanyName: '',\n    invalidPostalCode: '',\n    invalidCompanySize: (0, _utils.loc)('Please select how many employees your company has'),\n    invalidTrade: (0, _utils.loc)('Please select a trade'),\n\n    validate: function validate(page) {\n      var invalid = false;\n\n      // on page 2 validate page 1 fields\n      if (page === 2) {\n        if (this.get('isUsernameTaken')) {\n          invalid = true;\n          this.set('isUsernameInvalid', true);\n          this.set('invalidUsername', (0, _utils.loc)('This username is taken. Please choose another.'));\n        } else if (!/^\\S{2}\\S*$/.test(this.get('username').trim())) {\n          invalid = true;\n          this.set('isUsernameInvalid', true);\n          this.set('invalidUsername', (0, _utils.loc)('Username must be at least 2 characters'));\n        } else {\n          this.set('isUsernameInvalid', false);\n          this.set('invalidUsername', '');\n        }\n\n        if (!/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(this.get('email').trim())) {\n          invalid = true;\n          this.set('isEmailInvalid', true);\n        } else {\n          this.set('isEmailInvalid', false);\n        }\n\n        if (this.get('features').isEnabled('phoneNumberInOnboarding') && this.get('phone').replace(/[\\D]/g, '').length < 8) {\n          invalid = true;\n          this.set('isPhoneInvalid', true);\n        } else {\n          this.set('isPhoneInvalid', false);\n        }\n\n        if (this.get('firstName').trim().length === 0) {\n          invalid = true;\n          this.set('isFirstNameInvalid', true);\n        } else {\n          this.set('isFirstNameInvalid', false);\n        }\n\n        if (this.get('lastName').trim().length === 0) {\n          invalid = true;\n          this.set('isLastNameInvalid', true);\n        } else {\n          this.set('isLastNameInvalid', false);\n        }\n\n        if (this.get('password.length') < 8) {\n          invalid = true;\n\n          this.set('isPassInvalid', true);\n        } else {\n          this.set('isPassInvalid', false);\n        }\n\n        if (this.get('password') !== this.get('passwordMatch')) {\n          invalid = true;\n          this.set('isPassMatchInvalid', true);\n          this.set('invalidPassMatch', (0, _utils.loc)('Your passwords do not match!'));\n        } else {\n          this.set('isPassMatchInvalid', false);\n          this.set('invalidPassMatch', '');\n        }\n\n        if (invalid) {\n          return (0, _utils.loc)(\"All errors must be fixed before moving on.\");\n        }\n\n        if (!this.get('terms')) {\n          return (0, _utils.loc)('You must accept the terms and conditions!');\n        }\n      } else if (page === 3) {\n        // Company Information\n        if (this.get('companyName').trim().length === 0) {\n          invalid = true;\n          this.set('isCompanyNameInvalid', true);\n          this.set('invalidCompanyName', (0, _utils.loc)('You must provide a company name!'));\n        } else {\n          this.set('isCompanyNameInvalid', false);\n          this.set('invalidCompanyName', '');\n        }\n\n        if (Ember.isNone(this.get('companySizeMin'))) {\n          invalid = true;\n          this.set('isCompanySizeInvalid', true);\n        } else {\n          this.set('isCompanySizeInvalid', false);\n        }\n\n        if (Ember.isNone(this.get('trade'))) {\n          invalid = true;\n          this.set('isTradeInvalid', true);\n        } else {\n          this.set('isTradeInvalid', false);\n        }\n\n        if (invalid) {\n          return (0, _utils.loc)(\"All errors must be fixed before moving on.\");\n        }\n      } else if (page === 4) {\n        // pay period settings\n        if (this.get('payPeriodType') === 10) {\n          if (Ember.isNone(this.get('dayOne'))) {\n            return (0, _utils.loc)(\"You must pick the day of the week your pay period starts on\");\n          }\n        } else if (this.get('payPeriodType') === 20) {\n          if (!this.get('hasBiWeekDay')) {\n            return (0, _utils.loc)(\"You must pick the day of the week your pay period starts on\");\n          } else if (Ember.isNone(this.get('dayOne'))) {\n            return (0, _utils.loc)(\"You must pick the day of your next pay period.\");\n          }\n        } else if (this.get('payPeriodType') === 30) {\n          if (Ember.isNone(this.get('dayOne'))) {\n            return (0, _utils.loc)(\"You must pick the first day of the month your pay period starts on\");\n          } else if (Ember.isNone(this.get('dayTwo'))) {\n            return (0, _utils.loc)(\"You must pick the second day of the month your pay period starts on\");\n          }\n        } else if (this.get('payPeriodType') === 40) {\n          if (Ember.isNone(this.get('dayOne'))) {\n            return (0, _utils.loc)(\"You must pick the day of the month your pay period starts on\");\n          }\n        } else {\n          return (0, _utils.loc)(\"You must select how often you process payroll\");\n        }\n\n        // overtime settings\n        if (Ember.isNone(this.get('overtimePeriod'))) {\n          return (0, _utils.loc)(\"You must select when you work week begins\");\n        }\n\n        if (invalid) {\n          return (0, _utils.loc)(\"All errors must be fixed before moving on\");\n        }\n      }\n      // else if (page === 4) {\n      // }\n      // else if (page === 5) {\n      // }\n\n      // if (this.get('postalCode').trim().length === 0) {\n      // \tinvalid = true;\n      // \tthis.set('isPostalCodeInvalid', true);\n      // \tthis.set('invalidPostalCode', loc('You must provide a postal code!'));\n      // }\n      // else {\n      // \tthis.set('isPostalCodeInvalid', false);\n      // \tthis.set('invalidPostalCode', '');\n      // }\n\n      return false;\n    },\n    _verifyUserName: function _verifyUserName(username) {\n      var _this6 = this;\n\n      // make sure there is a username to check.\n      if (!Ember.isEmpty(username)) {\n        // hide previous errors\n        this.hideError();\n\n        return this.store.rpcRequest('account', 'username-available', { username: username }).then(function (data) {\n          var err = '';\n          var isUsernameTaken = false;\n          var isUsernameInvalid = false;\n\n          if (!data.data) {\n            isUsernameTaken = true;\n            isUsernameInvalid = true;\n            err = (0, _utils.loc)('This username is taken. Please choose another.');\n          } else if (!/^\\S{2}\\S*$/.test(username.trim())) {\n            isUsernameTaken = true;\n            isUsernameInvalid = true;\n            err = (0, _utils.loc)('Username must be at least 2 characters');\n          }\n\n          _this6.set('invalidUsername', err);\n          _this6.set('isUsernameTaken', isUsernameTaken);\n          _this6.set('isUsernameInvalid', isUsernameInvalid);\n\n          return !isUsernameTaken && !isUsernameInvalid;\n        });\n      } else {\n        return Ember.RSVP.resolve(false);\n      }\n    },\n    nextPage: function nextPage() {\n      var page = this.get('currentPage') + 1;\n      page = page > 4 ? 4 : page;\n\n      var invalid = this.validate(page);\n      if (!invalid) {\n        this.set('page1', false);\n        this.set('page2', false);\n        this.set('page3', false);\n        this.set('page4', false);\n\n        this.set('page' + page, true);\n        this.set('currentPage', page);\n      } else {\n        this.showError(invalid, 4000);\n      }\n    },\n\n\n    /* Graylog events */\n\n    /**\n     * function to send onboarding start message to graylog\n     *\n     * @private\n     * @method graylogOnboardingStart\n     */\n    graylogOnboardingStart: function graylogOnboardingStart() {\n      this.get('graylog').sendEvent({\n        short_message: 'On-Boarding: Start',\n        full_message: 'On-Boarding: Start',\n        level: 6,\n        _identifier: this.get('identifier')\n      });\n    },\n\n\n    /**\n     * function to send onboarding account info to graylog\n     *\n     * @private\n     * @method graylogOnboardingAccountInformation\n     */\n    graylogOnboardingAccountInformation: function graylogOnboardingAccountInformation() {\n      this.get('graylog').sendEvent({\n        short_message: 'On-Boarding: Account Information',\n        full_message: 'On-Boarding: Account Information',\n        level: 6,\n        _identifier: this.get('identifier'),\n        _first_name: this.get('firstName'),\n        _last_name: this.get('lastName'),\n        _phone: this.get('phone'),\n        _email: this.get('email')\n      });\n    },\n\n\n    /**\n     * function to send onboarding company info to graylog\n     *\n     * @private\n     * @method graylogOnboardingCompanyInformation\n     */\n    graylogOnboardingCompanyInformation: function graylogOnboardingCompanyInformation() {\n      this.get('graylog').sendEvent({\n        short_message: 'On-Boarding: Company Information',\n        full_message: 'On-Boarding: Company Information',\n        level: 6,\n        _identifier: this.get('identifier'),\n        _company_name: this.get('companyName'),\n        _company_size: this.get('companySizeMin') + ' - ' + this.get('companySizeMax')\n      });\n    },\n\n\n    /**\n     * function to send onboarding completed message to graylog\n     *\n     * @private\n     * @method graylogOnboardingEnd\n     */\n    graylogOnboardingEnd: function graylogOnboardingEnd() {\n      this.get('graylog').sendEvent({\n        short_message: 'On-Boarding: Completed',\n        full_message: 'On-Boarding: Completed',\n        level: 6,\n        _identifier: this.get('identifier')\n      });\n    },\n\n\n    graylogWatcher: Ember.observer('page1', 'page2', 'page3', 'page4', 'isFinished', function () {\n      if (this.get('page2')) {\n        this.graylogOnboardingStart();\n        this.graylogOnboardingAccountInformation();\n      } else if (this.get('page3')) {\n        this.graylogOnboardingCompanyInformation();\n      } else if (this.get('isFinished')) {\n        this.graylogOnboardingEnd();\n      }\n    }),\n\n    /* end Graylog events */\n\n    actions: {\n      selectCompanySize: function selectCompanySize(item) {\n        this.set('companySizeMin', item.get('min'));\n        this.set('companySizeMax', item.get('max'));\n      },\n      selectTrade: function selectTrade(item) {\n        this.set('trade', item.get('label'));\n      },\n      overtimeChange: function overtimeChange(item) {\n        this.set('overtimePeriod', item.key);\n      },\n      overtimeRulesChange: function overtimeRulesChange(item) {\n        this.set('overtimeRules', item.key);\n      },\n      selectDayOne: function selectDayOne(item) {\n        if (item.key > 27 && this.get('dayTwo') > 27) {\n          this.set('dayTwo', null);\n        } else if (item.key === this.get('dayTwo')) {\n          this.set('dayTwo', null);\n        }\n\n        this.set('dayOne', item.key);\n      },\n      selectDayTwo: function selectDayTwo(item) {\n        this.set('dayTwo', item.key);\n      },\n      selectBiWeekDay: function selectBiWeekDay(item) {\n        this.set('hasBiWeekDay', true);\n        this.set('biWeekDay', item.key);\n        this.set('dayOne', null);\n      },\n      selectPayPeriodAction: function selectPayPeriodAction(item) {\n        this.set('isWeekly', false);\n        this.set('isBiWeekly', false);\n        this.set('hasBiWeekDay', false);\n        this.set('biWeekDay', 0);\n        this.set('isSemiMonthly', false);\n        this.set('isMonthly', false);\n\n        if (item.key === 10) {\n          this.set('isWeekly', true);\n        } else if (item.key === 20) {\n          this.set('isBiWeekly', true);\n          this.set('dayOne', null);\n        } else if (item.key === 30) {\n          this.set('isSemiMonthly', true);\n        } else if (item.key === 40) {\n          this.set('isMonthly', true);\n        }\n\n        this.set('payPeriodType', item.key);\n      },\n      signupAction: function signupAction() {\n        // prevent double clicks\n        if (this.get('isCreatingAccount')) {\n          return;\n        }\n\n        var invalid = this.validate(3);\n        if (!invalid) {\n          this.createAccount();\n          this.graylogOnboardingEnd();\n        } else {\n          this.showError(invalid, 4000);\n        }\n      },\n      cancelAction: function cancelAction() {\n        this.transitionToRoute('login');\n      },\n      validatePhoneAction: function validatePhoneAction() {\n        if (this.get('phone').replace(/[\\D]/g, '').length < 8) {\n          this.set('isPhoneInvalid', true);\n        } else {\n          this.set('isPhoneInvalid', false);\n        }\n      },\n      validatePasswordMatch: function validatePasswordMatch() {\n        if (this.get('password') !== this.get('passwordMatch')) {\n          this.set('isPassMatchInvalid', true);\n          this.set('invalidPassMatch', (0, _utils.loc)('Your passwords do not match!'));\n        } else {\n          this.set('isPassMatchInvalid', false);\n          this.set('invalidPassMatch', '');\n        }\n      },\n      nextAction: function nextAction() {\n        this.nextPage();\n      },\n      backAction: function backAction() {\n        var page = this.get('currentPage') - 1;\n        page = page < 1 ? 1 : page;\n\n        this.set('page1', false);\n        this.set('page2', false);\n        this.set('page3', false);\n        this.set('page4', false);\n        this.set('isFinished', false);\n\n        this.set('page' + page, true);\n        this.set('currentPage', page);\n      },\n      verifyUserName: function verifyUserName(username) {\n        this._verifyUserName(username);\n      },\n      submitUsername: function submitUsername(username) {\n        var _this7 = this;\n\n        this._verifyUserName(username).then(function () {\n          _this7.nextPage();\n        });\n      },\n\n\n      /**\n       * toggles the tooltipIsOpen boolean\n       *\n       * @event openTooltip\n       */\n      toggleTooltip: function toggleTooltip() {\n        this.set('tooltipIsOpen', !this.get('tooltipIsOpen'));\n      }\n    }\n  });\n});","define('busy-app/controllers/ticket', ['exports', '@busy-web/utils', 'busy-app/utils/settings', 'cryptojs'], function (exports, _utils, _settings, _cryptojs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['verify_email', 'reset_password', 'invitation', 'unsubscribe'],\n\n\t\tsession: Ember.inject.service('session'),\n\n\t\tverify_email: null,\n\t\treset_password: null,\n\t\tinvitation: null,\n\t\tunsubscribe: null,\n\n\t\tisSuccess: false,\n\t\terrorMessage: '',\n\n\t\tresetPassword: '',\n\t\tresetPasswordCheck: '',\n\n\t\tinvitePassword: '',\n\t\tinvitePasswordCheck: '',\n\t\tinviteNextStep: false,\n\n\t\tisVerifyEmail: Ember.computed('verify_email', function () {\n\t\t\tif (!Ember.isNone(this.get('verify_email'))) {\n\t\t\t\tthis.sendVerification(this.get('verify_email'));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisResetPassword: Ember.computed('reset_password', function () {\n\t\t\tvar reset_password = !Ember.isNone(this.get('reset_password'));\n\t\t\tif (reset_password && this.get('session.isAuthenticated')) {\n\t\t\t\tvar store = Ember.getOwner(this).lookup('session-store:application');\n\t\t\t\tstore.clear();\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\t\t\treturn reset_password;\n\t\t}),\n\n\t\tisInvitaion: Ember.computed('invitation', function () {\n\t\t\tvar isInvitaion = !Ember.isNone(this.get('invitation'));\n\t\t\tif (isInvitaion && this.get('session.isAuthenticated')) {\n\t\t\t\tvar store = Ember.getOwner(this).lookup('session-store:application');\n\t\t\t\tstore.clear();\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\t\t\treturn isInvitaion;\n\t\t}),\n\n\t\tisUnsubscribe: Ember.computed('unsubscribe', function () {\n\t\t\tif (!Ember.isNone(this.get('unsubscribe'))) {\n\t\t\t\tthis.sendUnsubscribe(this.get('unsubscribe'));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisRedirect: Ember.computed.or('isResetPassword', 'isUnsubscribe'),\n\n\t\tsendVerification: function sendVerification(hash) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.store.rpcRequest('account', 'verifyEmail', { hash: hash }).then(function (res) {\n\t\t\t\tif (res.success) {\n\t\t\t\t\t_this.set('isSuccess', true);\n\t\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\t\twindow.location = '/account-ready';\n\t\t\t\t\t}, 3000);\n\t\t\t\t} else if (parseInt(res.code.objectAt(0), 10) === 201) {\n\t\t\t\t\t_this.set('isSuccess', false);\n\t\t\t\t\t_this.set('errorMessage', (0, _utils.loc)('Email verification has failed.'));\n\t\t\t\t\t_this.set('errorDescription', (0, _utils.loc)('This url has expired or has already been used to verify this email!'));\n\t\t\t\t} else {\n\t\t\t\t\t_this.set('isSuccess', false);\n\t\t\t\t\t_this.set('errorMessage', (0, _utils.loc)('There was an error unsubscribing your account.'));\n\t\t\t\t\t_this.set('errorDescription', (0, _utils.loc)('Please call customer service at 1-855-287-9287.'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsendUnsubscribe: function sendUnsubscribe(hash) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar errorMessage = 'There was an error unsubscribing your account.';\n\t\t\tvar errorDescription = 'Please call customer service at 1-855-287-9287.';\n\n\t\t\tvar errorAlreadyUnsubscribed = '\\n\\t\\t\\tThis url has expired or has already been used to unsubscribe this email!\\n\\t\\t\\tFor additional questions or concerns, please call customer service at 1-855-287-9287.\\n\\t\\t';\n\n\t\t\tthis.store.rpcRequest('email-report', 'unsubscribe', { hash: hash }, _settings.default.get('special_rpc_url')).then(function (res) {\n\t\t\t\tif (Ember.get(res, 'data.success')) {\n\t\t\t\t\t_this2.set('isSuccess', true);\n\t\t\t\t} else {\n\t\t\t\t\tif (Ember.get(res, 'code').includes(-32000)) {\n\t\t\t\t\t\terrorDescription = errorAlreadyUnsubscribed;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this2.set('isSuccess', false);\n\t\t\t\t\t_this2.set('errorMessage', (0, _utils.loc)(errorMessage));\n\t\t\t\t\t_this2.set('errorDescription', (0, _utils.loc)(errorDescription));\n\t\t\t\t}\n\t\t\t}).catch(function () {\n\t\t\t\t_this2.set('isSuccess', false);\n\t\t\t\t_this2.set('errorMessage', (0, _utils.loc)(errorMessage));\n\t\t\t\t_this2.set('errorDescription', (0, _utils.loc)(errorDescription));\n\t\t\t});\n\t\t},\n\t\tvalidatePasswords: function validatePasswords(password, passwordMatch) {\n\t\t\tthis.set('errorMessage', '');\n\t\t\tthis.set('errorMatchMessage', '');\n\t\t\tthis.set('isInvalid', false);\n\t\t\tthis.set('isInvalidMatch', false);\n\n\t\t\tif (!Ember.isEmpty(passwordMatch) && password !== passwordMatch) {\n\t\t\t\tthis.set('errorMatchMessage', (0, _utils.loc)('The passwords don\\'t match!'));\n\t\t\t\tthis.set('isInvalidMatch', true);\n\t\t\t}\n\n\t\t\tif (password.length < 8) {\n\t\t\t\tthis.set('errorMessage', (0, _utils.loc)('Password must be at least 8 characters in length.'));\n\t\t\t\tthis.set('isInvalid', true);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\n\t\tactions: {\n\t\t\thomeAction: function homeAction() {\n\t\t\t\twindow.location = '/';\n\t\t\t},\n\t\t\tsubmitPassword: function submitPassword() {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tthis.set('errorMessage', '');\n\t\t\t\tvar password = this.get('resetPassword');\n\t\t\t\tvar passwordMatch = this.get('resetPasswordCheck');\n\n\t\t\t\tif (password !== passwordMatch) {\n\t\t\t\t\tthis.set('errorMessage', (0, _utils.loc)(\"The passwords don't match!\"));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (password.length < 8) {\n\t\t\t\t\tthis.set('errorMessage', (0, _utils.loc)('Password must be at least 8 characters in length.'));\n\t\t\t\t\tthis.set('isInvalid', true);\n\t\t\t\t}\n\n\t\t\t\tpassword = _cryptojs.default.SHA256(password).toString();\n\t\t\t\tthis.store.rpcRequest('account', 'reset-password', { hash: this.get('reset_password'), password: password }).then(function (result) {\n\t\t\t\t\tif (result.data) {\n\t\t\t\t\t\t_this3.set('isSuccess', true);\n\t\t\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\t\t\twindow.location = '/';\n\t\t\t\t\t\t}, 3000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this3.set('errorMessage', (0, _utils.loc)('This reset url has already been used. You must submit a new password reset request.'));\n\t\t\t\t\t}\n\t\t\t\t}).catch(function () {\n\t\t\t\t\t_this3.set('errorMessage', (0, _utils.loc)('This reset url has already been used. You must submit a new password reset request.'));\n\t\t\t\t});\n\t\t\t},\n\t\t\tvalidatePasswordAction: function validatePasswordAction() {\n\t\t\t\tvar password = this.get('invitePassword');\n\t\t\t\tvar passwordMatch = this.get('invitePasswordCheck');\n\t\t\t\tthis.validatePasswords(password, passwordMatch);\n\t\t\t},\n\t\t\tinvitePasswordAction: function invitePasswordAction() {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar password = this.get('invitePassword');\n\t\t\t\tvar passwordMatch = this.get('invitePasswordCheck');\n\t\t\t\tif (!this.validatePasswords(password, passwordMatch)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tpassword = _cryptojs.default.SHA256(password).toString();\n\t\t\t\tthis.store.rpcRequest('account', 'reset-password', { hash: this.get('invitation'), password: password }).then(function (result) {\n\t\t\t\t\tif (result.data) {\n\t\t\t\t\t\t_this4.set('inviteNextStep', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this4.set('errorMessage', (0, _utils.loc)('This invite url has already been used. Contact your account admin to get a new invatation.'));\n\t\t\t\t\t\t_this4.set('isInvalid', true);\n\t\t\t\t\t}\n\t\t\t\t}).catch(function () {\n\t\t\t\t\t_this4.set('errorMessage', (0, _utils.loc)('This invite url has already been used. Contact your account admin to get a new invatation.'));\n\t\t\t\t\t_this4.set('isInvalid', true);\n\t\t\t\t});\n\t\t\t},\n\t\t\tloginPageAction: function loginPageAction() {\n\t\t\t\twindow.location = '/';\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/time-card/full-report/index', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['start', 'end', 'member_id', 'mobile', 'sort'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tstart: null,\n\t\tend: null,\n\t\tmember_id: null,\n\t\tmobile: false,\n\t\tsort: 'desc',\n\n\t\tshowTimeEntryEdit: false,\n\t\teditEntry: null,\n\t\tshowTimeOffEdit: false,\n\t\teditTimeOffEntry: null,\n\t\tpayPeriod: Ember.computed('start', function () {\n\t\t\treturn this.get('payPeriods').getPayPeriod(this.get('start'));\n\t\t}),\n\n\t\tdirtyFlag: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.isPrintable();\n\t\t},\n\n\n\t\tisPrintable: Ember.observer('mobile', function () {\n\t\t\t_docs.default.setPrintable(this.get('mobile'));\n\t\t}),\n\n\t\theaderDateRange: Ember.computed('start', 'end', function () {\n\t\t\tvar start = parseInt(this.get('start'), 10);\n\t\t\tvar startFormatted = _utils.Time.timeFormat(start, 'MM/DD/YYYY');\n\n\t\t\tvar end = parseInt(this.get('end'), 10);\n\t\t\tvar endFormatted = _utils.Time.timeFormat(end, 'MM/DD/YYYY');\n\n\t\t\treturn startFormatted + ' - ' + endFormatted;\n\t\t}),\n\n\t\tdateRangeString: Ember.computed('start', 'end', function () {\n\t\t\tvar start = parseInt(this.get('start'), 10);\n\t\t\tvar startFormatted = _utils.Time.timeFormat(start, 'MMM D');\n\n\t\t\tvar end = parseInt(this.get('end'), 10);\n\t\t\tvar endFormatted = _utils.Time.timeFormat(end, 'MMM D, YYYY');\n\n\t\t\treturn startFormatted + ' - ' + endFormatted;\n\t\t}),\n\n\t\tcreatedDate: Ember.computed(function () {\n\t\t\treturn _utils.Time.dateFormat(_utils.Time.date(), 'MM/DD/YYYY h:mm A');\n\t\t}),\n\n\t\tmember: Ember.computed.alias('model.model'),\n\n\t\tisTimecardMine: Ember.computed('auth.memberId', 'member', function () {\n\t\t\treturn this.get('auth.memberId') === this.get('member.id');\n\t\t}),\n\n\t\tisSupervisor: Ember.computed('member', function () {\n\t\t\tvar supervisorAction = 'timeEvents';\n\t\t\tvar member = this.get('member');\n\n\t\t\tif (Ember.isNone(member) || Ember.isNone(member.get('id'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.get('access').canTakeActionFor(supervisorAction, member);\n\t\t}),\n\n\t\tisSignable: Ember.computed.and('signature.isTimecardSigningEnabled', 'model.currentPeriod.isSignable'),\n\n\t\tactions: {\n\t\t\topenTimeEntryAction: function openTimeEntryAction(entry) {\n\t\t\t\tif (entry.get('isTimeEntry')) {\n\t\t\t\t\tthis.set('editEntry', entry.get('model'));\n\t\t\t\t\tthis.set('showTimeEntryEdit', true);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('editTimeOffEntry', entry.get('model'));\n\t\t\t\t\tthis.set('showTimeOffEdit', true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\t\t\t},\n\t\t\titemSaved: function itemSaved() {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\t_this.send('syncRoute');\n\t\t\t\t});\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showTimeEntryEdit', false);\n\t\t\t\tthis.set('showTimeOffEdit', false);\n\t\t\t\tthis.set('editEntry', null);\n\t\t\t\tthis.set('editTimeOffEntry', null);\n\n\t\t\t\tthis.send('syncRoute');\n\t\t\t},\n\t\t\tprintReport: function printReport() {\n\t\t\t\t_docs.default.print();\n\t\t\t},\n\t\t\tsortEntries: function sortEntries() {\n\t\t\t\tvar sort = this.get('sort') === 'desc' ? 'asc' : 'desc';\n\t\t\t\tthis.set('sort', sort);\n\n\t\t\t\tthis.transitionToRoute('time-card.full-report', {\n\t\t\t\t\tqueryParams: { sort: sort }\n\t\t\t\t});\n\n\t\t\t\tthis.send('refreshRoute');\n\t\t\t},\n\t\t\tsyncRoute: function syncRoute() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t},\n\t\t\trefreshRoute: function refreshRoute() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tEmber.getOwner(_this2).lookup('route:time-card/full-report').refresh();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/time-card/pay-period', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['start', 'end', 'member_id'],\n\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\n\t\tstart: null,\n\t\tend: null,\n\t\tmember_id: null,\n\n\t\tmember: null,\n\t\tdirtyFlag: null,\n\n\t\tdayEntries: null,\n\t\tshowNewTimeEntryDialog: false,\n\t\tshowNewTimeOffDialog: false,\n\n\t\tdebugKey: 'pay-period-controller',\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tthis.set('debugKey', this.get('debugKey') + '-' + Math.random());\n\t\t\tthis.getMember();\n\t\t},\n\n\n\t\tisTooOldToEdit: Ember.computed('start', function () {\n\t\t\tvar start = _utils.Time.date().unix();\n\t\t\tif (!Ember.isNone(this.get('start'))) {\n\t\t\t\tstart = _utils.Time.date(this.get('start')).unix();\n\t\t\t}\n\n\t\t\tvar minDate = _utils.Time.date().subtract(89, 'days').unix();\n\t\t\treturn start <= minDate;\n\t\t}),\n\n\t\tselectMenu: Ember.computed('access.auth.authMemberPosition.id', 'member.id', 'isTooOldToEdit', function () {\n\t\t\tvar canTakeAction = this.get('access').canTakeActionFor('manageTimeEntries', this.get('member'));\n\t\t\tif (!this.get('isTooOldToEdit') && !Ember.isNone(this.get('member.id')) && !Ember.isNone(this.get('access.auth.authMemberPosition.id')) && canTakeAction) {\n\t\t\t\treturn [Ember.Object.create({ key: 'new-time-entry', value: (0, _utils.loc)('New Time Entry') }), Ember.Object.create({ key: 'new-time-off', value: (0, _utils.loc)('Add Time Off') }), Ember.Object.create({ key: 'full-report', value: (0, _utils.loc)('Full Report') })];\n\t\t\t} else {\n\t\t\t\treturn [Ember.Object.create({ key: 'full-report', value: (0, _utils.loc)('Full Report') })];\n\t\t\t}\n\t\t}),\n\n\t\tdataRangeString: Ember.computed('start', 'end', function () {\n\t\t\tvar start = Number(this.get('start'));\n\t\t\tvar end = Number(this.get('end'));\n\t\t\tvar date = '';\n\t\t\tif (!isNaN(start) && !isNaN(end)) {\n\t\t\t\tvar startDate = _utils.Time.timeFormat(start, 'MMM D');\n\t\t\t\tvar endDate = _utils.Time.timeFormat(end, 'MMM D, YYYY');\n\n\t\t\t\tdate = startDate + ' - ' + endDate;\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tgetMember: Ember.observer('member_id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('member_id'))) {\n\t\t\t\tthis.store.findRecord('member', this.get('member_id')).then(function (member) {\n\t\t\t\t\t_this.set('member', member);\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tpayPeriodSalary: Ember.computed('start', 'auth.organizationPayPeriod.[]', 'member.wage.wageRate', function () {\n\t\t\tvar period = this.get('payPeriod').getPayPeriod(this.get('start'));\n\t\t\tvar wageRate = this.get('member.wage.wageRate');\n\t\t\tvar wage = this.get('member.wage.wage');\n\t\t\tif (wageRate === 30 || wageRate === 40 || wageRate === 50) {\n\t\t\t\tif (!Ember.isNone(period) && !Ember.isNone(period.get('type'))) {\n\t\t\t\t\tvar salary = wage;\n\t\t\t\t\tvar payPeriodType = period.get('type');\n\n\t\t\t\t\t// convert all salary to a yearly salary\n\t\t\t\t\tif (wageRate === 30) {\n\t\t\t\t\t\t// convert weekly salary to yearly\n\t\t\t\t\t\tsalary = salary * 52;\n\t\t\t\t\t} else if (wageRate === 40) {\n\t\t\t\t\t\t// convert monthly salary to yearly\n\t\t\t\t\t\tsalary = salary * 12;\n\t\t\t\t\t}\n\n\t\t\t\t\t// convert salary to the pay-period span\n\t\t\t\t\tif (payPeriodType === 10) {\n\t\t\t\t\t\t// calculate weekly salary from yearly\n\t\t\t\t\t\tsalary = salary / 52;\n\t\t\t\t\t} else if (payPeriodType === 20) {\n\t\t\t\t\t\t// calculate bi weekly salary from yearly\n\t\t\t\t\t\tsalary = salary / 26;\n\t\t\t\t\t} else if (payPeriodType === 30) {\n\t\t\t\t\t\t// calculate bi monthly salary from yearly\n\t\t\t\t\t\tsalary = salary / 24;\n\t\t\t\t\t} else if (payPeriodType === 40) {\n\t\t\t\t\t\t// calculate monthly salary from yearly\n\t\t\t\t\t\tsalary = salary / 12;\n\t\t\t\t\t}\n\t\t\t\t\treturn salary;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}),\n\n\t\tisTimecardMine: Ember.computed('auth.memberId', 'member.id', function () {\n\t\t\treturn this.get('auth.memberId') === this.get('member.id');\n\t\t}),\n\n\t\tisSupervisor: Ember.computed('member', function () {\n\t\t\tvar supervisorAction = 'manageTimeEntries';\n\t\t\tvar member = this.get('member');\n\n\t\t\tif (Ember.isNone(member) || Ember.isNone(member.get('id'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.get('access').canTakeActionFor(supervisorAction, member);\n\t\t}),\n\n\t\tsignatureState: Ember.computed('isTimecardMine', 'isSupervisor', 'payPeriodSeconds.isSignable', 'features.{signatures,signatures-supervisor}', 'signature.{isTimecardSigningEnabled,isTimecardSupervisorSigningEnabled}', 'payPeriodSeconds.memberTimeDocument.{hasValidSelfSignature,needsSelfSignatureResign,hasBothValidSignatures,needsEitherSignatureResign}',\n\t\t// 'payPeriodSeconds.memberTimeDocument.needsEitherSignatureResign',\n\t\t// 'payPeriodSeconds.memberTimeDocument.needsAuthoritativeSignatureResign',\n\t\tfunction () {\n\n\t\t\tif (Ember.isNone(this.get('isTimecardMine')) || Ember.isNone(this.get('isSupervisor')) || Ember.isNone(this.get('payPeriodSeconds')) || Ember.isNone(this.get('features')) || Ember.isNone(this.get('signature'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.get('signature').getSignatureState(this.get('isTimecardMine'), this.get('isSupervisor'), this.get('payPeriodSeconds'), this.get('features'), this.get('signature'), this.get('payPeriodSeconds.memberTimeDocument'));\n\t\t}),\n\n\t\tsignatureStateClass: Ember.computed('signatureState', function () {\n\t\t\treturn {\n\t\t\t\t'Signed': 'green',\n\t\t\t\t'Sign': 'blue',\n\t\t\t\t'Re-Sign': 'red'\n\t\t\t}[this.get('signatureState')];\n\t\t}),\n\n\t\tactions: {\n\t\t\tdayClickAction: function dayClickAction(day) {\n\t\t\t\tthis.transitionToRoute('time-card.time-entries', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: day.get('start'),\n\t\t\t\t\t\tmember_id: this.get('member.id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectItemAction: function selectItemAction(item) {\n\t\t\t\tif (item.get('key') === 'new-time-entry') {\n\t\t\t\t\tthis.set('showNewTimeEntryDialog', true);\n\t\t\t\t} else if (item.get('key') === 'new-time-off') {\n\t\t\t\t\tthis.set('showNewTimeOffDialog', true);\n\t\t\t\t} else if (item.get('key') === 'full-report') {\n\t\t\t\t\tthis.transitionToRoute('time-card.full-report.index', {\n\t\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t\t\tend: this.get('end')\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseNewTimeOffDialog: function closeNewTimeOffDialog() {\n\t\t\t\tthis.set('showNewTimeOffDialog', false);\n\t\t\t},\n\n\n\t\t\t/**\n    * legacy support for time-off feature\n    *\n    */\n\t\t\tfullReportClick: function fullReportClick() {\n\t\t\t\tthis.transitionToRoute('time-card.full-report', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tstart: this.get('start'),\n\t\t\t\t\t\tmember_id: this.get('member.id'),\n\t\t\t\t\t\tend: this.get('end')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\t/**\n    * legacy support for time-off feature\n    *\n    */\n\t\t\topenNewTimeEntryDialog: function openNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', true);\n\t\t\t},\n\t\t\tcloseNewTimeEntryDialog: function closeNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', false);\n\t\t\t},\n\t\t\tonDone: function onDone() {\n\t\t\t\tthis.send('reloadModel');\n\t\t\t},\n\t\t\topenFullReport: function openFullReport(payPeriod) {\n\t\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tstart: payPeriod.get('startTime'),\n\t\t\t\t\tmember_id: payPeriod.get('memberId'),\n\t\t\t\t\tend: payPeriod.get('endTime')\n\t\t\t\t};\n\n\t\t\t\treturn this.transitionToRoute('time-card.full-report', { queryParams: queryParams });\n\t\t\t},\n\t\t\treloadSync: function reloadSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/time-card/time-entries', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tqueryParams: ['start', 'member_id'],\n\t\tstart: null,\n\t\tmember_id: null,\n\t\tdirtyFlag: false,\n\n\t\tshowEditDialog: false,\n\t\tshowNewTimeEntryDialog: false,\n\t\tshowNewTimeOffDialog: false,\n\n\t\tisTooOldToEdit: Ember.computed('start', function () {\n\t\t\tvar start = _utils.Time.date().unix();\n\t\t\tvar minDate = _utils.Time.date().subtract(89, 'days').unix();\n\t\t\tif (!Ember.isNone(this.get('start'))) {\n\t\t\t\tstart = _utils.Time.date(this.get('start')).unix();\n\t\t\t}\n\t\t\treturn start <= minDate;\n\t\t}),\n\n\t\tdataRangeString: Ember.computed('start', function () {\n\t\t\tvar start = Number(this.get('start'));\n\t\t\tvar date = '';\n\t\t\tif (!isNaN(start)) {\n\t\t\t\tdate = _utils.Time.timeFormat(start, 'ddd, MMM D, YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tmember: Ember.computed('member_id', function () {\n\t\t\tif (!Ember.isNone(this.get('member_id'))) {\n\t\t\t\treturn this.store.findRecord('member', this.get('member_id'));\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\topenTimeEntry: function openTimeEntry(item) {\n\t\t\t\tthis.transitionToRoute('time-card.time-entry', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: item.get('id'),\n\t\t\t\t\t\tmember_id: this.get('member_id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\topenTimeOffEntry: function openTimeOffEntry(item) {\n\t\t\t\tthis.transitionToRoute('time-card.time-off-entry', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: item.get('id'),\n\t\t\t\t\t\tmember_id: this.get('member_id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\topenNewTimeEntryDialog: function openNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', true);\n\t\t\t},\n\t\t\topenNewTimeOffDialog: function openNewTimeOffDialog() {\n\t\t\t\tthis.set('showNewTimeOffDialog', true);\n\t\t\t},\n\t\t\tcloseNewTimeEntryDialog: function closeNewTimeEntryDialog() {\n\t\t\t\tthis.set('showNewTimeEntryDialog', false);\n\t\t\t},\n\t\t\tcloseTimeOffDialog: function closeTimeOffDialog() {\n\t\t\t\tthis.set('showNewTimeOffDialog', false);\n\t\t\t},\n\t\t\topenEditDialog: function openEditDialog(entry) {\n\t\t\t\t// set openEntry on the member model.\n\t\t\t\tentry.set('model.member.openEntry', entry.get('model'));\n\n\t\t\t\t// set on entry, not controller\n\t\t\t\tentry.set('showEditDialog', true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog(entry) {\n\t\t\t\t// set on entry, not controller\n\t\t\t\tentry.set('showEditDialog', false);\n\t\t\t\tthis.send('reloadModel');\n\t\t\t},\n\t\t\treloadSync: function reloadSync() {\n\t\t\t\tthis.set('dirtyFlag', true);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/time-card/time-entry', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['id', 'member_id'],\n\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tid: null,\n\t\tmember_id: null,\n\n\t\tshowEditDialog: false,\n\n\t\tentryHistoryDialog: false,\n\n\t\ttimeEntryLog: null,\n\t\tupdatedTimeEntryLog: null,\n\t\ttimeEntryBreakLog: null,\n\t\tstartTimeTrusted: false,\n\t\tendTimeTrusted: false,\n\n\t\tminDate: null,\n\t\tmaxDate: null,\n\t\tstartDateTime: null,\n\t\tendDateTime: null,\n\n\t\tbreakTime: 0,\n\t\ttotalTime: 0,\n\n\t\tprojectIdChange: null,\n\t\tcostCodeIdChange: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tthis.setDates();\n\t\t\tthis.adjustEndTime();\n\t\t\tthis.totalAdjusted();\n\t\t\tthis.totalTimeString();\n\t\t},\n\n\n\t\tisTooOldToEdit: Ember.computed('model.{startTime,member.lockDate}', function () {\n\t\t\tif (this.get('features.locks')) {\n\t\t\t\tif (this.get('model.startTime') > this.get('model.member.lockDate')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tvar start = _utils.Time.date().unix();\n\t\t\t\tvar minDate = _utils.Time.date().subtract(89, 'days').unix();\n\t\t\t\tif (!Ember.isNone(this.get('model.startTime'))) {\n\t\t\t\t\tstart = _utils.Time.date(this.get('model.startTime')).unix();\n\t\t\t\t}\n\t\t\t\treturn start <= minDate;\n\t\t\t}\n\t\t}),\n\n\t\tsetDates: Ember.observer('model.startTime', 'model.endTime', function () {\n\t\t\tif (!Ember.isNone(this.get('model.startTime')) && !Ember.isNone(this.get('model.endTime'))) {\n\t\t\t\tvar startTime = _utils.Time.date(this.get('model.startTime'));\n\t\t\t\tvar endTime = _utils.Time.date(this.get('model.endTime'));\n\t\t\t\tvar startDeviceTime = _utils.Time.date(this.get('model.startTime'));\n\n\t\t\t\tthis.set('endDateTime', endTime);\n\t\t\t\tthis.set('oldStartDate', startTime);\n\t\t\t\tthis.set('startDateTime', startTime);\n\t\t\t\tthis.set('startDeviceTime', startDeviceTime);\n\t\t\t}\n\t\t}),\n\n\t\tsetBreakTimes: Ember.observer('model.breakTime', function () {\n\t\t\tif (!Ember.isNone(this.get('model.breakTime'))) {\n\t\t\t\tthis.set('breakTime', this.get('model.breakTime'));\n\t\t\t}\n\t\t}),\n\n\t\toldStartDate: null,\n\t\tadjustEndTime: Ember.observer('startDateTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime'))) {\n\t\t\t\tvar oldStart = this.get('oldStartDate');\n\t\t\t\tvar start = this.get('startDateTime');\n\t\t\t\tvar breakTime = this.get('breakTime');\n\n\t\t\t\tif (oldStart.date() !== start.date()) {\n\t\t\t\t\tvar totalTime = this.get('totalTime');\n\t\t\t\t\tvar curDuration = totalTime + breakTime;\n\t\t\t\t\tthis.set('endDateTime', _utils.Time.date(start.unix()).add(curDuration, 'seconds').startOf('hour'));\n\t\t\t\t} else {\n\t\t\t\t\tvar end = this.get('endDateTime');\n\t\t\t\t\tvar seconds = end.unix() - start.unix() - breakTime;\n\t\t\t\t\tthis.set('totalTime', seconds);\n\t\t\t\t}\n\t\t\t\tthis.set('oldStartDate', this.get('startDateTime'));\n\t\t\t}\n\t\t}),\n\n\t\ttotalAdjusted: Ember.observer('totalTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime')) && !Ember.isNone(this.get('endDateTime'))) {\n\t\t\t\tvar start = this.get('startDateTime');\n\t\t\t\tvar total = this.get('totalTime');\n\t\t\t\tvar breakTime = this.get('breakTime');\n\t\t\t\tvar totalTime = total + breakTime;\n\t\t\t\tthis.set('endDateTime', _utils.Time.date(start.unix()).add(totalTime, 'seconds'));\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * function that calculates the amount of hours and minutes\n   * from clock-in to clock-out input boxes.\n   *\n   * @public\n   */\n\t\ttotalTimeString: Ember.observer('endDateTime', 'breakTime', function () {\n\t\t\tif (!Ember.isNone(this.get('startDateTime')) && !Ember.isNone(this.get('endDateTime'))) {\n\t\t\t\t//variables for setting up seconds, minutes, and hours\n\t\t\t\tvar seconds = this.get('endDateTime').unix() - this.get('startDateTime').unix();\n\t\t\t\tvar breakSeconds = this.get('breakTime');\n\t\t\t\tseconds = seconds - breakSeconds;\n\t\t\t\tthis.set('totalTime', seconds);\n\t\t\t}\n\t\t}),\n\n\t\tactions: {\n\t\t\teditTimeEntry: function editTimeEntry() {\n\t\t\t\tthis.set('showEditDialog', true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.get('model').rollbackBreaks();\n\t\t\t\tthis.get('model').rollbackAttributes();\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t\twindow.history.back();\n\t\t\t},\n\t\t\tprojectSelected: function projectSelected(item) {\n\t\t\t\tthis.set('model.projectId', item.get('id'));\n\t\t\t},\n\t\t\tcostCodeSelected: function costCodeSelected(item) {\n\t\t\t\tthis.set('model.costCodeId', item.get('id'));\n\t\t\t},\n\t\t\tequipmentSelected: function equipmentSelected(item) {\n\t\t\t\tthis.set('model.equipmentId', item.get('id'));\n\t\t\t},\n\t\t\tviewEntryHistory: function viewEntryHistory() {\n\t\t\t\tthis.set('entryHistoryDialog', true);\n\t\t\t},\n\t\t\tviewFullMap: function viewFullMap() {\n\t\t\t\tthis.transitionToRoute('employees.employee-locations', {\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tid: this.get('model.id'),\n\t\t\t\t\t\tmember_id: this.get('model.member.id')\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseEntryHistory: function closeEntryHistory() {\n\t\t\t\tthis.set('entryHistoryDialog', false);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/time-card/time-off-entry', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Controller.extend({\n\t\tqueryParams: ['id', 'member_id'],\n\n\t\tid: null,\n\t\tmember_id: null,\n\t\tshowEditDialog: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.getMember();\n\t\t},\n\t\tgetMember: function getMember() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('member_id'))) {\n\t\t\t\tthis.store.findRecord('member', this.get('member_id')).then(function (member) {\n\t\t\t\t\t_this.set('member', member);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\teditTimeOffEntry: function editTimeOffEntry() {\n\t\t\t\tthis.set('showEditDialog', true);\n\t\t\t},\n\t\t\tcloseEditDialog: function closeEditDialog() {\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t},\n\t\t\titemDeleted: function itemDeleted() {\n\t\t\t\tthis.set('showEditDialog', false);\n\t\t\t\twindow.history.back();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/controllers/verify-email', ['exports', 'busy-app/utils/api-error', 'busy-app/utils/settings'], function (exports, _apiError, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Controller.extend({\n\t\tsession: Ember.inject.service('session'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tverifyEmailDialog: false,\n\t\tresentHeader: false,\n\n\t\tshowError: false,\n\t\terrorMessage: '',\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\t// add the verify class to the body\n\t\t\t// this hides the left nav bar.\n\t\t\tEmber.$('body').addClass('verify');\n\n\t\t\t// call verify to check if\n\t\t\t// the email has been verified.\n\t\t\tthis.verify();\n\t\t},\n\t\tcheckVerified: function checkVerified() {\n\t\t\tvar _this = this;\n\n\t\t\twindow.setTimeout(function () {\n\t\t\t\t_this.verify();\n\t\t\t}, 10000);\n\t\t},\n\t\tverify: function verify() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// get authKey from session\n\t\t\tvar authKey = this.get('session.data.authenticated');\n\n\t\t\t// if the authKey is not null or undefined\n\t\t\tif (!Ember.isNone(authKey)) {\n\t\t\t\t// setup the url string\n\t\t\t\tvar url = _settings.default.get('api_url') + '/member?_version=' + _settings.default.get('api_version');\n\n\t\t\t\t// set query param data\n\t\t\t\tvar data = {\n\t\t\t\t\tusername: authKey.username\n\t\t\t\t};\n\n\t\t\t\tvar beforeSend = function beforeSend(xhr) {\n\t\t\t\t\t// setup basic auth for the call\n\t\t\t\t\txhr.setRequestHeader('Authorization', 'Basic ' + authKey.auth_hash);\n\t\t\t\t};\n\n\t\t\t\tvar success = function success(res) {\n\t\t\t\t\t// get the member data from the api response\n\t\t\t\t\tvar member = _typeof(res.data) === 'object' ? res.data[0] : {};\n\n\t\t\t\t\t// if the response is successful and the email has been verified\n\t\t\t\t\tif (res.success && member.verified_email) {\n\t\t\t\t\t\t// get auth session hash\n\t\t\t\t\t\tvar auth = _this2.get('session.data.authenticated');\n\n\t\t\t\t\t\t// set the verifiedEmail and keys for the auth member\n\t\t\t\t\t\tEmber.set(auth, 'verifiedEmail', true);\n\t\t\t\t\t\tEmber.set(auth, 'public_key', res.public_key);\n\t\t\t\t\t\tEmber.set(auth, 'private_key', res.private_key);\n\n\t\t\t\t\t\t// send the new data to the session store.\n\t\t\t\t\t\t_this2.get('session.store').persist(auth);\n\n\t\t\t\t\t\t// remove class verify\n\t\t\t\t\t\tEmber.$('body').removeClass('verify');\n\n\t\t\t\t\t\t// transition to the index route.\n\t\t\t\t\t\t_this2.transitionToRoute('index');\n\n\t\t\t\t\t\t// reload the authenticated member models\n\t\t\t\t\t\t_this2.send('reloadAuth');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// call verified timeout callback.\n\t\t\t\t\t\t_this2.checkVerified();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tvar error = function error(xhr) {\n\t\t\t\t\t// handle a unauthorized api error\n\t\t\t\t\tif (xhr.status === 401) {\n\t\t\t\t\t\t// invalidate the auth session\n\t\t\t\t\t\t_this2.send('invalidateSession');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// send the ajax api request\n\t\t\t\tEmber.$.ajax({ url: url, data: data, beforeSend: beforeSend, success: success, error: error });\n\t\t\t}\n\t\t},\n\t\tresendEmail: function resendEmail() {\n\t\t\tvar _this3 = this;\n\n\t\t\t// get session auth data\n\t\t\tvar auth = this.get('session.data.authenticated');\n\n\t\t\t// restet the error message\n\t\t\tthis.resetErrorMessage();\n\n\t\t\tvar success = function success(res) {\n\t\t\t\tif (res.data === true) {\n\t\t\t\t\t_this3.set('resentHeader', true);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar error = function error(err) {\n\t\t\t\tvar code = _apiError.default.getRpcErrorString(err, 'account', 'request-verification-email');\n\t\t\t\t_this3.showErrorMessage(code);\n\t\t\t};\n\n\t\t\treturn this.store.rpcRequest('account', 'request-verification-email', { member_id: auth.id }).then(success).catch(error);\n\t\t},\n\t\tshowErrorMessage: function showErrorMessage(message, time) {\n\t\t\t// show errorMessage\n\t\t\tthis.set('showError', true);\n\t\t\tthis.set('errorMessage', message);\n\n\t\t\tif (!Ember.isNone(time)) {\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t// hide errorMessage\n\t\t\t\t\tthis.resetErrorMessage();\n\t\t\t\t}, time);\n\t\t\t}\n\t\t},\n\t\tresetErrorMessage: function resetErrorMessage() {\n\t\t\t// hide errorMessage\n\t\t\tthis.set('showError', false);\n\t\t\tthis.set('errorMessage', '');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tsendNewEmail: function sendNewEmail(dialog) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tdialog.showSavingMessage();\n\n\t\t\t\tif (this.get('auth.member.hasDirtyAttributes')) {\n\t\t\t\t\t// trim the whitespace on the email\n\t\t\t\t\tthis.set('auth.member.email', this.get('auth.member.email').trim());\n\n\t\t\t\t\t// save the auth member model\n\t\t\t\t\tthis.get('auth.member.content').save().then(function () {\n\t\t\t\t\t\t// call to reverify the email.\n\t\t\t\t\t\t_this4.resendEmail();\n\n\t\t\t\t\t\t// show the saving message.\n\t\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdialog.showSavedMessage();\n\t\t\t\t}\n\t\t\t},\n\t\t\tresendEmailAction: function resendEmailAction() {\n\t\t\t\tthis.resendEmail();\n\t\t\t},\n\t\t\tchangeEmail: function changeEmail() {\n\t\t\t\tthis.set('verifyEmailDialog', true);\n\t\t\t},\n\t\t\tcancelNewEmail: function cancelNewEmail() {\n\t\t\t\tthis.set('verifyEmailDialog', false);\n\t\t\t},\n\t\t\tlogout: function logout() {\n\t\t\t\tthis.get('auth').invalidateSession();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/currency', ['exports', '@busy-web/utils/currency'], function (exports, _currency) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _currency.default;\n    }\n  });\n});","define('busy-app/events/dom', ['exports', 'busy-app/events/emitter'], function (exports, _emitter) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emitter.default.extend({\n    _resize: function _resize(event) {\n      return [event, window.innerWidth, window.innerHeight];\n    }\n  });\n});","define('busy-app/events/emitter', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Object.extend(Ember.Evented, {\n\t\tsend: function send(eventName) {\n\t\t\tvar dispatch = Ember.get(this, '_' + eventName);\n\t\t\tif (!Ember.isNone(dispatch) && typeof dispatch === 'function') {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\t\t\targs[_key - 1] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\tvar eventArgs = dispatch.apply(this, args);\n\n\t\t\t\t_utils.Assert.test('Events must return an array of arguments for event listeners', Ember.isArray(eventArgs));\n\n\t\t\t\teventArgs.unshift(eventName);\n\n\t\t\t\tthis.trigger.apply(this, _toConsumableArray(eventArgs));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n});","define('busy-app/events/router', ['exports', 'busy-app/events/emitter'], function (exports, _emitter) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emitter.default.extend({\n\t\t/**\n   * Internal property to keep track of the\n   * current router path\n   *\n   * @property _path\n   * @type {string}\n   */\n\t\t_path: '',\n\n\t\t/**\n   * Called by the router to trigger a\n   * beforeTransition event\n   *\n   * @private\n   * @method _transition\n   */\n\t\t_transition: function _transition(path) {\n\t\t\tvar lastPath = this.get('_path');\n\n\t\t\t// set current router path\n\t\t\tthis.set('_path', path);\n\n\t\t\t// trigger the event\n\t\t\treturn [path, lastPath];\n\t\t}\n\t});\n});","define('busy-app/helpers/add', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.add = add;\n\tfunction add(params) {\n\t\tvar args = params.slice(0); //Array.prototype.slice.call(params, 0);\n\t\tif (args.length === 1 && Array.isArray(args[0])) {\n\t\t\targs = args[0];\n\t\t}\n\t\treturn args.reduce(function (a, b) {\n\t\t\treturn a + b;\n\t\t}, 0);\n\t} /**\n    * @module helpers\n    *\n    */\n\texports.default = Ember.Helper.helper(add);\n});","define('busy-app/helpers/app-version', ['exports', 'busy-app/config/environment', 'ember-cli-app-version/utils/regexp'], function (exports, _environment, _regexp) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.appVersion = appVersion;\n  function appVersion(_) {\n    var hash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    var version = _environment.default.APP.version;\n    // e.g. 1.0.0-alpha.1+4jds75hf\n\n    // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n    var versionOnly = hash.versionOnly || hash.hideSha;\n    var shaOnly = hash.shaOnly || hash.hideVersion;\n\n    var match = null;\n\n    if (versionOnly) {\n      if (hash.showExtended) {\n        match = version.match(_regexp.versionExtendedRegExp); // 1.0.0-alpha.1\n      }\n      // Fallback to just version\n      if (!match) {\n        match = version.match(_regexp.versionRegExp); // 1.0.0\n      }\n    }\n\n    if (shaOnly) {\n      match = version.match(_regexp.shaRegExp); // 4jds75hf\n    }\n\n    return match ? match[0] : version;\n  }\n\n  exports.default = Ember.Helper.helper(appVersion);\n});","define('busy-app/helpers/bg-image', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.bgImage = bgImage;\n\tfunction bgImage(params /*, hash*/) {\n\t\t// set placeholder string\n\t\tvar string = '/images/imageplaceholder.png';\n\n\t\t// if params[0] is not null or undefined then set that to the string\n\t\tif (!Ember.isNone(params[0])) {\n\t\t\tstring = params[0];\n\t\t}\n\n\t\t// return the safestring css background image.\n\t\treturn Ember.String.htmlSafe('background-image:url(' + string + ');background-repeat:no-repeat;background-size:cover;background-position:center;');\n\t}\n\n\texports.default = Ember.Helper.helper(bgImage);\n});","define('busy-app/helpers/busy-loc', ['exports', '@busy-web/utils/loc'], function (exports, _loc) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Helper.extend({\n\t\t/**\n   * Ember injected service auth\n   *\n   * @private\n   * @property auth\n   * @type {Services.Auth}\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * Flag set to true if the helper is using a currency symbol\n   *\n   * @private\n   * @property hasCurrency\n   * @type {boolean}\n   */\n\t\thasCurrency: false,\n\n\t\t/**\n   * Helpers compute override mehtod and main entry\n   * mehtod of the template helper\n   *\n   * @public\n   * @method compute\n   * @param params {array} mixed values passed from the template\n   * @param namedArgs {object} key value pair of args passed from the template\n   * @return {string} the localized string\n   */\n\t\tcompute: function compute(params, namedArgs) {\n\t\t\tvar string = params[0];\n\t\t\tvar args = params.slice(1, params.length);\n\t\t\tvar hasCurrency = namedArgs.hasCurrency;\n\n\t\t\tvar str = '';\n\t\t\tif (hasCurrency) {\n\t\t\t\tthis.set('hasCurrency', true);\n\t\t\t\tstr = this.get('auth.currencySymbol');\n\t\t\t}\n\n\t\t\tstr += (0, _loc.default)(string, args);\n\t\t\treturn str;\n\t\t},\n\n\n\t\t/**\n   * Ember observer triggers on currencySymbol change to rerender the template\n   *\n   * @private\n   * @method rerender\n   */\n\t\trerender: Ember.observer('auth.currencySymbol', function () {\n\t\t\tif (this.get('hasCurrency')) {\n\t\t\t\tthis.recompute();\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/helpers/can-take-action-for', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Helper.extend({\n\t\taccess: Ember.inject.service('access'),\n\t\tactionName: null,\n\t\tmember: null,\n\n\t\tcompute: function compute(params) {\n\t\t\tvar actionName = params[0];\n\t\t\tvar forMember = params[1];\n\n\t\t\tEmber.set(this, 'actionName', actionName);\n\t\t\tEmber.set(this, 'member', forMember);\n\n\t\t\tif (!Ember.isNone(forMember) && !Ember.isNone(Ember.get(forMember, 'id')) && !Ember.isNone(Ember.get(this, 'access.auth.authMemberPosition.id')) && !Ember.isNone(Ember.get(this, 'access.auth.organization.id'))) {\n\t\t\t\treturn Ember.get(this, 'access').canTakeActionFor(actionName, forMember);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\tonUpdate: Ember.observer('access.auth.authMemberPosition.id', 'access.auth.organization.id', 'member.positionId', function () {\n\t\t\tif (!Ember.isNone(Ember.get(this, 'member.positionId')) && !Ember.isNone(Ember.get(this, 'access.auth.authMemberPosition.id')) && !Ember.isNone(Ember.get(this, 'access.auth.organization.id'))) {\n\t\t\t\tEmber.run.next(this, function () {\n\t\t\t\t\tthis.recompute();\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/helpers/cancel-all', ['exports', 'ember-concurrency/helpers/cancel-all'], function (exports, _cancelAll) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _cancelAll.default;\n    }\n  });\n});","define('busy-app/helpers/currency-symbol', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Helper.extend({\n\t\t/**\n   * Ember service injection for auth\n   *\n   * @private\n   * @property auth\n   * @type Services.Auth\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * Main helper entry point for the template helper function\n   *\n   * @public\n   * @method compute\n   * @return {string} currency symbol\n   */\n\t\tcompute: function compute() {\n\t\t\tif (!Ember.isNone(this.get('auth.currencySymbol'))) {\n\t\t\t\treturn this.get('auth.currencySymbol');\n\t\t\t} else {\n\t\t\t\treturn '$';\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Ember observer to rerender the helper\n   *\n   * @private\n   * @method rerender\n   */\n\t\trerender: Ember.observer('auth.currencySymbol', function () {\n\t\t\tthis.recompute();\n\t\t})\n\t});\n});","define('busy-app/helpers/date-format', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.dateFormat = dateFormat;\n\n\n\t/**\n  * `DateFormat`\n  *\n  * Takes a timestamp and a format string and displays the date.\n  *\n  */\n\t/**\n  * @module helpers\n  *\n  */\n\tfunction dateFormat(params, namedArgs) {\n\t\tvar timestamp = params[0];\n\t\tvar offset = namedArgs.offset;\n\t\tvar isDST = namedArgs.dst;\n\t\tvar isLocal = namedArgs.local;\n\t\tvar format = namedArgs.format;\n\t\tvar timezone = '';\n\n\t\t(true && !(typeof timestamp === 'number' && timestamp > 0) && Ember.assert(\"date-format requires a timestamp as the first parameter\", typeof timestamp === 'number' && timestamp > 0));\n\n\n\t\tif (Ember.isNone(format)) {\n\t\t\tformat = 'L LT';\n\t\t}\n\n\t\tif (!Ember.isNone(offset) && !Ember.isNone(isDST)) {\n\t\t\ttimezone = ' <sup>' + _utils.Time.timezoneString(offset, isDST) + '</sup>';\n\t\t}\n\n\t\tvar date = _utils.Time.date(timestamp);\n\t\tif (isLocal === true) {\n\t\t\tdate.local();\n\t\t}\n\n\t\treturn date.format(format) + timezone;\n\t}\n\n\texports.default = Ember.Helper.helper(dateFormat);\n});","define('busy-app/helpers/diff', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.diff = diff;\n\tfunction diff(params) {\n\t\tvar args = params.slice(0);\n\t\tif (args.length === 1 && Array.isArray(args[0])) {\n\t\t\targs = args[0];\n\t\t}\n\t\targs = args.reverse();\n\t\treturn args.reduce(function (a, b) {\n\t\t\treturn b - a;\n\t\t}, 0);\n\t} /**\n    * @module Helpers\n    *\n    */\n\texports.default = Ember.Helper.helper(diff);\n});","define('busy-app/helpers/equal', ['exports', '@busy-web/ember-date-time/helpers/equal'], function (exports, _equal) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _equal.default;\n    }\n  });\n  Object.defineProperty(exports, 'equal', {\n    enumerable: true,\n    get: function () {\n      return _equal.equal;\n    }\n  });\n});","define('busy-app/helpers/filter-by', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.filterBy = filterBy;\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tfunction filterBy(list, key, value) {\n\t\treturn list.filterBy(key, value);\n\t}\n\n\texports.default = Ember.Helper.extend({\n\t\tlist: null,\n\n\t\tcompute: function compute(_ref) {\n\t\t\tvar _this = this;\n\n\t\t\tvar _ref2 = _slicedToArray(_ref, 3),\n\t\t\t    list = _ref2[0],\n\t\t\t    key = _ref2[1],\n\t\t\t    value = _ref2[2];\n\n\t\t\tif (Ember.isNone(Ember.get(this, 'list'))) {\n\t\t\t\tEmber.addObserver(this, 'list.@each.' + key, function () {\n\t\t\t\t\treturn _this.recompute();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tEmber.set(this, 'list', list);\n\n\t\t\treturn filterBy(list, key, value);\n\t\t}\n\t});\n});","define('busy-app/helpers/format-currency', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Helper.extend({\n\t\t/**\n   * Ember injected service for auth\n   *\n   * @private\n   * @property auth\n   * @type Services.Auth\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * Conveinence Check to see if the browser is safari.\n   *\n   * @private\n   * @property isSafari\n   * @type boolean\n   */\n\t\tisSafari: Ember.computed(function () {\n\t\t\t// check if the broswer has a safari user agent returns true if it does.\n\t\t\treturn (/safari/.test(window.navigator.userAgent.toLowerCase()) && !/chrome/.test(window.navigator.userAgent.toLowerCase())\n\t\t\t);\n\t\t}),\n\n\t\t/**\n   * Computes the output for the helper\n   *\n   * @private\n   * @method compute\n   * @param value {number} The number to convert to a currency\n   * @returns {string} The number with 2 decimals and a currency symbol.\n   */\n\t\tcompute: function compute(params) {\n\t\t\t// allow only one argument in the params.\n\t\t\t_utils.Assert.funcNumArgs(params, 1, true);\n\n\t\t\t// get the value from the arguments\n\t\t\tvar value = parseFloat(params[0] || 0);\n\t\t\tvar lang = window.navigator.language;\n\t\t\tif (window.navigator.languages) {\n\t\t\t\tlang = window.navigator.languages[0];\n\t\t\t}\n\n\t\t\t// assert the value is of type number and is not NaN\n\t\t\t_utils.Assert.isNumber(value);\n\t\t\tif (isNaN(value)) {\n\t\t\t\treturn params[0];\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('auth.organizationInfo.currencyCode')) && window.Intl && typeof window.Intl.NumberFormat === 'function') {\n\t\t\t\tvar code = this.get('auth.organizationInfo.currencyCode') || 'USD';\n\t\t\t\tvar cur = _utils.Currency.code(code);\n\n\t\t\t\tvar nt = new window.Intl.NumberFormat(lang, {\n\t\t\t\t\tstyle: 'currency',\n\t\t\t\t\tcurrency: cur.get('code'),\n\t\t\t\t\tminimumFractionDigits: cur.get('digits'),\n\t\t\t\t\tmaximumFractionDigits: cur.get('digits')\n\t\t\t\t});\n\n\t\t\t\treturn nt.format(value);\n\t\t\t} else {\n\t\t\t\treturn '$' + value.toFixed(2);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * Ember Observer method for recalculating the value.\n   *\n   * @private\n   * @method rerender\n   */\n\t\trerender: Ember.observer('auth.currencySymbol', function () {\n\t\t\tthis.recompute();\n\t\t})\n\t});\n});","define('busy-app/helpers/format-date', ['exports', '@busy-web/ember-date-time/helpers/format-date'], function (exports, _formatDate) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _formatDate.default;\n    }\n  });\n  Object.defineProperty(exports, 'formatDate', {\n    enumerable: true,\n    get: function () {\n      return _formatDate.formatDate;\n    }\n  });\n});","define('busy-app/helpers/format-hours', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Helper.extend({\n\n\t\t/**\n   * Helper override method initializes the class\n   *\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t// set observer for rerendering the template.\n\t\t\tEmber.addObserver(_utils.Time, 'hoursFormat', this, 'rerender');\n\t\t},\n\n\n\t\t/**\n   * Helper override mehtod and main entry point for the template helper\n   *\n   * @public\n   * @method compute\n   * @param params {array} arguments passed by the template\n   * @param namedArgs {object} key:value params passed by the template\n   * @return {string}\n   */\n\t\tcompute: function compute(params, namedArgs) {\n\t\t\t(true && !(params.length === 1) && Ember.assert('format-hours can only take one argument', params.length === 1));\n\n\n\t\t\tvar seconds = parseInt(params[0] || 0, 10);\n\n\t\t\t(true && !(typeof seconds === 'number' && !isNaN(seconds)) && Ember.assert('format-hours takes a number as an argument you passed: ' + _typeof(params[0]), typeof seconds === 'number' && !isNaN(seconds)));\n\n\n\t\t\tvar isNeg = false;\n\t\t\tif (seconds < 0 && namedArgs.allowNeg === true) {\n\t\t\t\tisNeg = true;\n\t\t\t\tseconds = Math.abs(seconds);\n\t\t\t}\n\n\t\t\tvar time = _utils.Time.convertSecondsString(seconds, namedArgs.format, namedArgs.padHours, namedArgs.showSeconds, namedArgs.longFormat, namedArgs.toFixed);\n\n\t\t\tif (isNeg) {\n\t\t\t\ttime = '-' + time;\n\t\t\t}\n\t\t\treturn time;\n\t\t},\n\n\n\t\t/**\n   * rerenders the template\n   *\n   * @private\n   * @method rerender\n   */\n\t\trerender: function rerender() {\n\t\t\tthis.recompute();\n\t\t}\n\t});\n});","define('busy-app/helpers/format-number', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\texports.default = Ember.Helper.extend({\n\t\t/**\n   * Ember injected service for auth\n   *\n   * @private\n   * @property auth\n   * @type {Services.Auth}\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * Conveinence Check to see if the browser is safari.\n   *\n   * @private\n   * @property isSafari\n   * @type {boolean}\n   */\n\t\tisSafari: Ember.computed(function () {\n\t\t\treturn (/safari/.test(window.navigator.userAgent.toLowerCase()) && !/chrome/.test(window.navigator.userAgent.toLowerCase())\n\t\t\t);\n\t\t}),\n\n\t\t/**\n   * Computes the output for the helper\n   *\n   * @private\n   * @method compute\n   * @param value {number} The number to convert to a currency\n   * @returns {string} The number with 2 decimals and a currency symbol.\n   */\n\t\tcompute: function compute(params) {\n\t\t\tvar _params = _slicedToArray(params, 3),\n\t\t\t    _params$ = _params[0],\n\t\t\t    value = _params$ === undefined ? 0 : _params$,\n\t\t\t    _params$2 = _params[1],\n\t\t\t    minimumFractionDigits = _params$2 === undefined ? 1 : _params$2,\n\t\t\t    _params$3 = _params[2],\n\t\t\t    maximumFractionDigits = _params$3 === undefined ? minimumFractionDigits : _params$3;\n\n\t\t\tif (value === 'N/A') {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (!this.toLocaleStringSupportsOptions() && value !== 'N/A') {\n\t\t\t\treturn value.toFixed(minimumFractionDigits);\n\t\t\t}\n\n\t\t\treturn value.toLocaleString(window.navigator.language, { style: 'decimal', minimumFractionDigits: minimumFractionDigits, maximumFractionDigits: maximumFractionDigits });\n\t\t},\n\t\ttoLocaleStringSupportsOptions: function toLocaleStringSupportsOptions() {\n\t\t\treturn !!((typeof Intl === 'undefined' ? 'undefined' : _typeof(Intl)) == 'object' && Intl && typeof Intl.NumberFormat == 'function');\n\t\t},\n\n\n\t\t/**\n   * Ember Observer method for recalculating the value.\n   *\n   * @private\n   * @method rerender\n   */\n\t\trerender: Ember.observer('auth.currencySymbol', function () {\n\t\t\tthis.recompute();\n\t\t})\n\t});\n});","define('busy-app/helpers/g-map/compute', ['exports', 'ember-google-maps/helpers/g-map/compute'], function (exports, _compute) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _compute.default;\n    }\n  });\n  Object.defineProperty(exports, 'gMapCompute', {\n    enumerable: true,\n    get: function () {\n      return _compute.gMapCompute;\n    }\n  });\n});","define('busy-app/helpers/get-val', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.getVal = getVal;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/**\n  * @module helpers\n  *\n  */\n\tfunction getVal(params /*, hash*/) {\n\t\tvar model = params[0];\n\t\tvar key = params[1];\n\n\t\t(true && !(!Ember.isNone(model) && (typeof model === 'undefined' ? 'undefined' : _typeof(model)) === 'object') && Ember.assert(\"You must provide a model of type object for the first param in get-val\", !Ember.isNone(model) && (typeof model === 'undefined' ? 'undefined' : _typeof(model)) === 'object'));\n\t\t(true && !(!Ember.isNone(key) && typeof key === 'string') && Ember.assert(\"You must provide a key of type String for the second param in get-val\", !Ember.isNone(key) && typeof key === 'string'));\n\n\n\t\treturn Ember.get(model, key);\n\t}\n\n\texports.default = Ember.Helper.helper(getVal);\n});","define('busy-app/helpers/get-value', ['exports', '@busy-web/components/helpers/get-value'], function (exports, _getValue) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _getValue.default;\n    }\n  });\n  Object.defineProperty(exports, 'getValue', {\n    enumerable: true,\n    get: function () {\n      return _getValue.getValue;\n    }\n  });\n});","define('busy-app/helpers/has-permission-for', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Helper.extend({\n\t\taccess: Ember.inject.service('access'),\n\n\t\tcompute: function compute(params) {\n\t\t\tvar actionName = params[0];\n\t\t\tvar hasPermission = false;\n\t\t\tif (!Ember.isNone(this.get('access.auth.authMemberPosition.id'))) {\n\t\t\t\thasPermission = this.get('access').hasPermissionFor(actionName);\n\t\t\t}\n\t\t\treturn hasPermission;\n\t\t},\n\n\t\tonUpdate: Ember.observer('access.auth.authMemberPosition', function () {\n\t\t\tthis.recompute();\n\t\t})\n\t});\n});","define('busy-app/helpers/ignore-children', ['exports', 'ember-ignore-children-helper/helpers/ignore-children'], function (exports, _ignoreChildren) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _ignoreChildren.default;\n    }\n  });\n  Object.defineProperty(exports, 'ignoreChildren', {\n    enumerable: true,\n    get: function () {\n      return _ignoreChildren.ignoreChildren;\n    }\n  });\n});","define('busy-app/helpers/is-after', ['exports', 'ember-moment/helpers/is-after'], function (exports, _isAfter) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isAfter.default;\n    }\n  });\n});","define('busy-app/helpers/is-before', ['exports', 'ember-moment/helpers/is-before'], function (exports, _isBefore) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isBefore.default;\n    }\n  });\n});","define('busy-app/helpers/is-between', ['exports', 'ember-moment/helpers/is-between'], function (exports, _isBetween) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isBetween.default;\n    }\n  });\n});","define('busy-app/helpers/is-equal', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.isEqual = isEqual;\n\tfunction isEqual(params /*, hash*/) {\n\t\treturn params[0] === params[1];\n\t}\n\n\texports.default = Ember.Helper.helper(isEqual);\n});","define('busy-app/helpers/is-greater', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.isGreater = isGreater;\n\n\n  /**\n   * HTMLBars Helper method for checking if value 1 is greater than value 2.\n   *\n   * @public\n   * @method is-greater\n   * @param {number} param1 The value to test if it is greater\n   * @param {number} param2 The value to test against param1.\n   * @returns {boolean} true if param1 is greater than param2.\n   */\n  /**\n   * @module helpers\n   *\n   */\n  function isGreater(params) {\n    // Assert only 2 params are passed in\n    _utils.Assert.funcNumArgs(params, 2, true);\n\n    // convert params to int\n    var p1 = parseInt(params[0], 10);\n    var p2 = parseInt(params[1], 10);\n\n    // Assert p1 and p2 are numbers and not NaN\n    _utils.Assert.isNumber(p1);\n    _utils.Assert.isNumber(p2);\n\n    // return true if p1 is greater than p2.\n    return p1 > p2;\n  }\n\n  exports.default = Ember.Helper.helper(isGreater);\n});","define('busy-app/helpers/is-owner', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Helper.extend({\n    access: Ember.inject.service('access'),\n\n    compute: function compute(params) {\n      var forMember = params[0];\n\n      if (!Ember.isNone(this.get('access.auth.authMemberPosition.id')) && !Ember.isNone(this.get('access.auth.organization.id'))) {\n        return this.get('access').isOwner(forMember.id);\n      }\n\n      return false;\n    },\n\n\n    onUpdate: Ember.observer('access.auth.authMemberPosition.id', 'access.auth.organization.id', function () {\n      this.recompute();\n    })\n  });\n});","define('busy-app/helpers/is-same-or-after', ['exports', 'ember-moment/helpers/is-same-or-after'], function (exports, _isSameOrAfter) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isSameOrAfter.default;\n    }\n  });\n});","define('busy-app/helpers/is-same-or-before', ['exports', 'ember-moment/helpers/is-same-or-before'], function (exports, _isSameOrBefore) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isSameOrBefore.default;\n    }\n  });\n});","define('busy-app/helpers/is-same', ['exports', 'ember-moment/helpers/is-same'], function (exports, _isSame) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _isSame.default;\n    }\n  });\n});","define('busy-app/helpers/lf-lock-model', ['exports', 'liquid-fire/helpers/lf-lock-model'], function (exports, _lfLockModel) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _lfLockModel.default;\n    }\n  });\n  Object.defineProperty(exports, 'lfLockModel', {\n    enumerable: true,\n    get: function () {\n      return _lfLockModel.lfLockModel;\n    }\n  });\n});","define('busy-app/helpers/lf-or', ['exports', 'liquid-fire/helpers/lf-or'], function (exports, _lfOr) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _lfOr.default;\n    }\n  });\n  Object.defineProperty(exports, 'lfOr', {\n    enumerable: true,\n    get: function () {\n      return _lfOr.lfOr;\n    }\n  });\n});","define('busy-app/helpers/map-by', ['exports', 'busy-app/utils/mod/array', 'busy-app/utils/logger'], function (exports, _array, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.mapBy = mapBy;\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction _toArray(arr) {\n\t\treturn Array.isArray(arr) ? arr : Array.from(arr);\n\t}\n\n\tfunction mapBy(params) {\n\t\tvar _params$slice = params.slice(0),\n\t\t    _params$slice2 = _toArray(_params$slice),\n\t\t    list = _params$slice2[0],\n\t\t    keys = _params$slice2.slice(1);\n\n\t\tif (Ember.isEmpty(list)) {\n\t\t\treturn list;\n\t\t}\n\n\t\tif (list.toArray) {\n\t\t\tlist = list.toArray();\n\t\t}\n\n\t\tif (Ember.isEmpty(keys)) {\n\t\t\t_logger.default.error('<helper:map-by', 'mapBy helper got a empty mapBy \\'keys\\' [ ' + keys + ' ].');\n\t\t\treturn [];\n\t\t}\n\n\t\t// format keys without dots and special syntax like @each\n\t\tkeys = normailizeKeys(keys);\n\n\t\t// return the mapped resutls\n\t\tvar result = mapRecursive(list, keys);\n\t\treturn (0, _array.compact)(result || []);\n\t}\n\n\tvar mapRecursive = function mapRecursive(list, keys) {\n\t\t// return if the keys list is empty\n\t\tif (keys.length <= 0) {\n\t\t\tlist = list.compact();\n\t\t\treturn list;\n\t\t}\n\n\t\t// get the next key from the bottom\n\t\t// of the keys array\n\t\tvar key = keys.shift();\n\n\t\t// handle objects in path\n\t\tif (!Ember.isNone(list) && (typeof list === 'undefined' ? 'undefined' : _typeof(list)) === 'object') {\n\t\t\tif (!Array.isArray(list)) {\n\t\t\t\t// not an array so it must be an object\n\t\t\t\t// use handleMapResult to get the value from the object\n\t\t\t\t// and return it or allow handleMapResult to recurse the map\n\t\t\t\treturn handleMapResult(list, key, keys.slice(0));\n\t\t\t} else if (key === 'firstObject') {\n\t\t\t\t// handle firstObject keys\n\t\t\t\tkey = key.shift();\n\n\t\t\t\t// get the 0 array element and pass it to handleMapResult\n\t\t\t\tlist = handleMapResult(list[0], key, keys.slice(0));\n\t\t\t} else {\n\t\t\t\t// map the list using the handleMapResult so it can call mapRecursive\n\t\t\t\t// if it needs to.\n\t\t\t\tlist = list.map(function (m) {\n\t\t\t\t\treturn handleMapResult(m, key, keys.slice(0));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// result could be a list of list so flatten the lists into one list\n\t\t\treturn mergeLists(list);\n\t\t} else {\n\t\t\t// something other than an array or object\n\t\t\t// so just return it.\n\t\t\treturn list;\n\t\t}\n\t};\n\n\tvar handleMapResult = function handleMapResult(obj, key, keys) {\n\t\t// get the value from the map item\n\t\tvar value = Ember.get(obj, key);\n\n\t\t// if it is an array call the map again\n\t\t// with the keys list\n\t\tif (Array.isArray(value) && !Ember.isEmpty(value)) {\n\t\t\tvalue = mapRecursive(value, keys);\n\t\t}\n\t\treturn value;\n\t};\n\n\tvar mergeLists = function mergeLists(list) {\n\t\tif (!Ember.isEmpty(list)) {\n\t\t\tvar _ref;\n\n\t\t\t// merge each list in the list\n\t\t\t// into one list.\n\t\t\treturn (_ref = []).concat.apply(_ref, _toConsumableArray(list));\n\t\t}\n\t\treturn list;\n\t};\n\n\tvar normailizeKeys = function normailizeKeys(keys) {\n\t\tvar mapKeys = keys.map(function (k) {\n\t\t\tvar keysplit = k.split('.');\n\t\t\treturn keysplit.filter(function (k) {\n\t\t\t\treturn ['@each', '[]'].indexOf(k) === -1;\n\t\t\t});\n\t\t});\n\t\treturn mergeLists(mapKeys);\n\t};\n\n\texports.default = Ember.Helper.helper(mapBy);\n});","define('busy-app/helpers/map', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.map = map;\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tfunction map(params, _ref) {\n\t\tvar callback = _ref.callback;\n\n\t\tvar _params$slice = params.slice(0, 2),\n\t\t    _params$slice2 = _slicedToArray(_params$slice, 2),\n\t\t    list = _params$slice2[0],\n\t\t    func = _params$slice2[1];\n\n\t\tif (!Ember.isNone(callback)) {\n\t\t\tfunc = callback;\n\t\t}\n\n\t\tif (Ember.isEmpty(list)) {\n\t\t\t_logger.default.error(this, \"map helper got an undefined array passed in\");\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof func !== 'function') {\n\t\t\t_logger.default.error(this, \"map helper requires a callback function to map the list by\");\n\t\t\treturn list;\n\t\t}\n\n\t\treturn list.map(function (item) {\n\t\t\treturn func(item);\n\t\t});\n\t}\n\n\texports.default = Ember.Helper.helper(map);\n});","define('busy-app/helpers/moment-add', ['exports', 'ember-moment/helpers/moment-add'], function (exports, _momentAdd) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentAdd.default;\n    }\n  });\n});","define('busy-app/helpers/moment-calendar', ['exports', 'ember-moment/helpers/moment-calendar'], function (exports, _momentCalendar) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentCalendar.default;\n    }\n  });\n});","define('busy-app/helpers/moment-diff', ['exports', 'ember-moment/helpers/moment-diff'], function (exports, _momentDiff) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentDiff.default;\n    }\n  });\n});","define('busy-app/helpers/moment-duration', ['exports', 'ember-moment/helpers/moment-duration'], function (exports, _momentDuration) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentDuration.default;\n    }\n  });\n});","define('busy-app/helpers/moment-format', ['exports', 'ember-moment/helpers/moment-format'], function (exports, _momentFormat) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentFormat.default;\n    }\n  });\n});","define('busy-app/helpers/moment-from-now', ['exports', 'ember-moment/helpers/moment-from-now'], function (exports, _momentFromNow) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentFromNow.default;\n    }\n  });\n});","define('busy-app/helpers/moment-from', ['exports', 'ember-moment/helpers/moment-from'], function (exports, _momentFrom) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentFrom.default;\n    }\n  });\n});","define('busy-app/helpers/moment-subtract', ['exports', 'ember-moment/helpers/moment-subtract'], function (exports, _momentSubtract) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentSubtract.default;\n    }\n  });\n});","define('busy-app/helpers/moment-to-date', ['exports', 'ember-moment/helpers/moment-to-date'], function (exports, _momentToDate) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentToDate.default;\n    }\n  });\n});","define('busy-app/helpers/moment-to-now', ['exports', 'ember-moment/helpers/moment-to-now'], function (exports, _momentToNow) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentToNow.default;\n    }\n  });\n});","define('busy-app/helpers/moment-to', ['exports', 'ember-moment/helpers/moment-to'], function (exports, _momentTo) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _momentTo.default;\n    }\n  });\n});","define('busy-app/helpers/moment-unix', ['exports', 'ember-moment/helpers/unix'], function (exports, _unix) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _unix.default;\n    }\n  });\n});","define('busy-app/helpers/moment', ['exports', 'ember-moment/helpers/moment'], function (exports, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _moment.default;\n    }\n  });\n});","define('busy-app/helpers/now', ['exports', 'ember-moment/helpers/now'], function (exports, _now) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _now.default;\n    }\n  });\n});","define('busy-app/helpers/perform', ['exports', 'ember-concurrency/helpers/perform'], function (exports, _perform) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _perform.default;\n    }\n  });\n});","define('busy-app/helpers/pluralize', ['exports', 'ember-inflector/lib/helpers/pluralize'], function (exports, _pluralize) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _pluralize.default;\n});","define('busy-app/helpers/reduce', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.reduce = reduce;\n\t/**\n  * @module Helpers\n  *\n  */\n\tfunction reduce(params) {\n\t\tvar args = params.slice(0);\n\n\t\tvar list = args.shift();\n\t\tvar callback = args.shift();\n\t\tvar startValue = args.shift() || 0;\n\n\t\tif (Ember.isEmpty(list)) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn list.reduce(function (a, b) {\n\t\t\treturn callback(a, b);\n\t\t}, startValue);\n\t}\n\n\texports.default = Ember.Helper.helper(reduce);\n});","define('busy-app/helpers/singularize', ['exports', 'ember-inflector/lib/helpers/singularize'], function (exports, _singularize) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _singularize.default;\n});","define('busy-app/helpers/task', ['exports', 'ember-concurrency/helpers/task'], function (exports, _task) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _task.default;\n    }\n  });\n});","define('busy-app/helpers/throw-alert', ['exports', '@busy-web/components/helpers/throw-alert'], function (exports, _throwAlert) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _throwAlert.default;\n    }\n  });\n  Object.defineProperty(exports, 'throwAlert', {\n    enumerable: true,\n    get: function () {\n      return _throwAlert.throwAlert;\n    }\n  });\n});","define('busy-app/helpers/unix', ['exports', 'ember-moment/helpers/unix'], function (exports, _unix) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _unix.default;\n    }\n  });\n});","define('busy-app/helpers/utc', ['exports', 'ember-moment/helpers/utc'], function (exports, _utc) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _utc.default;\n    }\n  });\n  Object.defineProperty(exports, 'utc', {\n    enumerable: true,\n    get: function () {\n      return _utc.utc;\n    }\n  });\n});","define(\"busy-app/in-repo-pin-addon/tests/addon.lint-test\", [], function () {\n  \"use strict\";\n});","define(\"busy-app/in-repo-pin-addon/tests/app.lint-test\", [], function () {\n  \"use strict\";\n});","define('busy-app/index', ['exports', 'ember-uuid'], function (exports, _emberUuid) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'v4', {\n    enumerable: true,\n    get: function () {\n      return _emberUuid.v4;\n    }\n  });\n  Object.defineProperty(exports, 'v1', {\n    enumerable: true,\n    get: function () {\n      return _emberUuid.v1;\n    }\n  });\n  Object.defineProperty(exports, 'parse', {\n    enumerable: true,\n    get: function () {\n      return _emberUuid.parse;\n    }\n  });\n  Object.defineProperty(exports, 'unparse', {\n    enumerable: true,\n    get: function () {\n      return _emberUuid.unparse;\n    }\n  });\n});","define('busy-app/initializers/@busy-web/data', ['exports', '@busy-web/data/initializers/@busy-web/data'], function (exports, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _data.default;\n    }\n  });\n  Object.defineProperty(exports, 'initialize', {\n    enumerable: true,\n    get: function () {\n      return _data.initialize;\n    }\n  });\n});","define('busy-app/initializers/@busy-web/ember-cli-launch-darkly', ['exports', '@busy-web/ember-cli-launch-darkly/initializers/@busy-web/ember-cli-launch-darkly'], function (exports, _emberCliLaunchDarkly) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberCliLaunchDarkly.default;\n    }\n  });\n  Object.defineProperty(exports, 'initialize', {\n    enumerable: true,\n    get: function () {\n      return _emberCliLaunchDarkly.initialize;\n    }\n  });\n});","define('busy-app/initializers/add-modals-container', ['exports', 'ember-modal-dialog/initializers/add-modals-container'], function (exports, _addModalsContainer) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'add-modals-container',\n    initialize: _addModalsContainer.default\n  };\n});","define('busy-app/initializers/app-version', ['exports', 'ember-cli-app-version/initializer-factory', 'busy-app/config/environment'], function (exports, _initializerFactory, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var name = void 0,\n      version = void 0;\n  if (_environment.default.APP) {\n    name = _environment.default.APP.name;\n    version = _environment.default.APP.version;\n  }\n\n  exports.default = {\n    name: 'App Version',\n    initialize: (0, _initializerFactory.default)(name, version)\n  };\n});","define('busy-app/initializers/application', ['exports', 'moment', 'busy-app/utils/app-global', 'busy-app/utils/settings'], function (exports, _moment, _appGlobal, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = {\n\t\tname: 'application',\n\t\tafter: 'export-application-global',\n\n\t\tinitialize: function initialize(app) {\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\tEmber.run.backburner.DEBUG = true;\n\t\t\t}\n\n\t\t\twindow.BusyApp.isMobile = false;\n\t\t\tif (window.orientation !== undefined) {\n\t\t\t\twindow.BusyApp.isMobile = true;\n\t\t\t}\n\n\t\t\t// set moment locale\n\t\t\t_moment.default.locale(window.navigator.language);\n\n\t\t\twindow.BusyApp._application = _appGlobal.default.create(app.__container__.ownerInjection());\n\t\t}\n\t};\n});","define('busy-app/initializers/container-debug-adapter', ['exports', 'ember-resolver/resolvers/classic/container-debug-adapter'], function (exports, _containerDebugAdapter) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'container-debug-adapter',\n\n    initialize: function initialize() {\n      var app = arguments[1] || arguments[0];\n\n      app.register('container-debug-adapter:main', _containerDebugAdapter.default);\n      app.inject('container-debug-adapter:main', 'namespace', 'application:main');\n    }\n  };\n});","define('busy-app/initializers/data-adapter', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'data-adapter',\n    before: 'store',\n    initialize: function initialize() {}\n  };\n});","define('busy-app/initializers/ember-concurrency', ['exports', 'ember-concurrency/initializers/ember-concurrency'], function (exports, _emberConcurrency) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _emberConcurrency.default;\n    }\n  });\n});","define('busy-app/initializers/ember-data', ['exports', 'ember-data/setup-container', 'ember-data'], function (exports, _setupContainer) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'ember-data',\n    initialize: _setupContainer.default\n  };\n});","define('busy-app/initializers/ember-feature-flags', ['exports', 'busy-app/config/environment', 'busy-app/services/features'], function (exports, _environment, _features) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.initialize = initialize;\n\n\n  var INJECTION_FACTORIES_DEPRECATION_MESSAGE = '[ember-feature-flags] The next major version of ember-feature-flags will no longer inject the service automatically. Instead, you should explicitly inject it into your Route, Controller or Component with `Ember.inject.service`.';\n\n  function initialize() {\n    var application = arguments[1] || arguments[0];\n    var serviceName = _environment.default.featureFlagsService || 'features';\n    var serviceLookupName = 'service:' + serviceName;\n\n    application.register(serviceLookupName, _features.default);\n    application.inject('route', serviceName, serviceLookupName);\n    application.inject('controller', serviceName, serviceLookupName);\n    application.inject('component', serviceName, serviceLookupName);\n    application.inject(serviceLookupName, 'application', 'application:main');\n\n    Ember.deprecate(INJECTION_FACTORIES_DEPRECATION_MESSAGE, false, {\n      id: 'ember-feature-flags.deprecate-injection-factories',\n      until: '4.0.0'\n    });\n  }\n\n  exports.default = {\n    name: 'ember-feature-flags',\n    initialize: initialize\n  };\n});","define('busy-app/initializers/ember-simple-auth', ['exports', 'busy-app/config/environment', 'ember-simple-auth/configuration', 'ember-simple-auth/initializers/setup-session', 'ember-simple-auth/initializers/setup-session-service', 'ember-simple-auth/initializers/setup-session-restoration'], function (exports, _environment, _configuration, _setupSession, _setupSessionService, _setupSessionRestoration) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'ember-simple-auth',\n\n    initialize: function initialize(registry) {\n      var config = _environment.default['ember-simple-auth'] || {};\n      config.rootURL = _environment.default.rootURL || _environment.default.baseURL;\n      _configuration.default.load(config);\n\n      (0, _setupSession.default)(registry);\n      (0, _setupSessionService.default)(registry);\n      (0, _setupSessionRestoration.default)(registry);\n    }\n  };\n});","define('busy-app/initializers/ember-stripe-service', ['exports', 'ember-stripe-service/utils/stripe-mock', 'busy-app/config/environment'], function (exports, _stripeMock, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.initialize = initialize;\n  function initialize() {\n    var application = arguments[1] || arguments[0];\n    var stripeConfig = _environment.default.stripe || {};\n\n    stripeConfig.debug = stripeConfig.debug || _environment.default.LOG_STRIPE_SERVICE;\n\n    application.register('config:stripe', stripeConfig, { instantiate: false });\n    application.inject('service:stripe', 'config', 'config:stripe');\n\n    if (stripeConfig.debug) {\n      Ember.Logger.info('StripeService: initialize');\n    }\n\n    if (!stripeConfig.publishableKey) {\n      throw new Ember.Error(\"StripeService: Missing Stripe key, please set `ENV.stripe.publishableKey` in config.environment.js\");\n    }\n\n    if (typeof FastBoot !== 'undefined' || stripeConfig.mock) {\n      window.Stripe = _stripeMock.default;\n    }\n  }\n\n  exports.default = {\n    name: 'ember-stripe-stripe',\n    initialize: initialize\n  };\n});","define('busy-app/initializers/export-application-global', ['exports', 'busy-app/config/environment'], function (exports, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.initialize = initialize;\n  function initialize() {\n    var application = arguments[1] || arguments[0];\n    if (_environment.default.exportApplicationGlobal !== false) {\n      var theGlobal;\n      if (typeof window !== 'undefined') {\n        theGlobal = window;\n      } else if (typeof global !== 'undefined') {\n        theGlobal = global;\n      } else if (typeof self !== 'undefined') {\n        theGlobal = self;\n      } else {\n        // no reasonable global, just bail\n        return;\n      }\n\n      var value = _environment.default.exportApplicationGlobal;\n      var globalName;\n\n      if (typeof value === 'string') {\n        globalName = value;\n      } else {\n        globalName = Ember.String.classify(_environment.default.modulePrefix);\n      }\n\n      if (!theGlobal[globalName]) {\n        theGlobal[globalName] = application;\n\n        application.reopen({\n          willDestroy: function willDestroy() {\n            this._super.apply(this, arguments);\n            delete theGlobal[globalName];\n          }\n        });\n      }\n    }\n  }\n\n  exports.default = {\n    name: 'export-application-global',\n\n    initialize: initialize\n  };\n});","define('busy-app/initializers/injectStore', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'injectStore',\n    before: 'store',\n    initialize: function initialize() {}\n  };\n});","define(\"busy-app/initializers/liquid-fire\", [\"exports\", \"liquid-fire/ember-internals\", \"liquid-fire/velocity-ext\"], function (exports, _emberInternals) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  (0, _emberInternals.initialize)();\n\n  exports.default = {\n    name: 'liquid-fire',\n    initialize: function initialize() {}\n  };\n});","define('busy-app/initializers/nist-time', ['exports', 'moment', 'busy-app/utils/settings'], function (exports, _moment, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/***/\n\tvar kDeviceTime = 10;\n\tvar kServerTime = 30;\n\tvar kUserTime = 40;\n\n\t/**\n  * `Service/NIST`\n  *\n  * This service is initialized in the application initializer and\n  * should not be imported by any files.\n  *\n  * For access to the nist time use `window.__NIST`\n  *\n  */\n\tvar NIST = Ember.Object.extend({\n\t\tstore: Ember.inject.service('store'),\n\n\t\t_standardOffset: 0,\n\t\t_callDelay: 0,\n\t\ttrustedTime: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (_settings.default.get('nist_mode')) {\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\t// starts the time sync loop\n\t\t\t\t\tthis.syncLoop();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t},\n\t\tsyncLoop: function syncLoop() {\n\t\t\t// syncTime 5 minutes\n\t\t\tvar syncTime = 300000;\n\t\t\tif (!this.get('trustedTime')) {\n\t\t\t\tsyncTime = 30000;\n\t\t\t}\n\n\t\t\tvar _this = this;\n\t\t\twindow.setTimeout(function () {\n\t\t\t\t_this.syncLoop();\n\t\t\t}, syncTime);\n\n\t\t\t// set the initial standardOffset\n\t\t\tthis.setStandardOffset();\n\t\t},\n\t\ttimezone: function timezone() {\n\t\t\t// local time zone offset\n\t\t\treturn (0, _moment.default)().utcOffset() * 60;\n\t\t},\n\t\tcurrentClientTime: function currentClientTime() {\n\t\t\t// the current time in utc + the local time zone offset in milliseconds\n\t\t\treturn _moment.default.utc().add(this.timezone(), 'seconds').valueOf();\n\t\t},\n\t\tsetStandardOffset: function setStandardOffset() {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.get('store'))) {\n\t\t\t\t// get the current local client time\n\t\t\t\tvar t0 = this.currentClientTime();\n\n\t\t\t\t// send the rpc call to the server\n\t\t\t\tthis.get('store').rpcRequest('utility', 'server-time').then(function (result) {\n\t\t\t\t\tvar offset = 0;\n\t\t\t\t\tvar delay = 0;\n\t\t\t\t\tvar isTrusted = false;\n\n\t\t\t\t\t// if reuslt is a valid object then calculate the ntpOffset\n\t\t\t\t\tif ((typeof result === 'undefined' ? 'undefined' : _typeof(result)) === 'object' && result.data) {\n\t\t\t\t\t\t// get the date according to local time in milliseconds\n\t\t\t\t\t\tvar date = (result.data + _this2.timezone()) * 1000;\n\n\t\t\t\t\t\t// t1 and t2 are set to the same value\n\t\t\t\t\t\t// because the api only returns on value\n\t\t\t\t\t\tvar t1 = date;\n\t\t\t\t\t\tvar t2 = date;\n\n\t\t\t\t\t\t// t3 is the current local client time\n\t\t\t\t\t\tvar t3 = _this2.currentClientTime();\n\n\t\t\t\t\t\t// call ntpOffset\n\t\t\t\t\t\tvar nistTime = _this2.ntpOffset(t0, t1, t2, t3);\n\n\t\t\t\t\t\t// set the new offsets\n\t\t\t\t\t\toffset = nistTime.offset;\n\t\t\t\t\t\tdelay = nistTime.callDelay;\n\t\t\t\t\t\tisTrusted = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// set the class properties\n\t\t\t\t\t_this2.set('standardOffset', offset);\n\t\t\t\t\t_this2.set('callDelay', delay);\n\t\t\t\t\t_this2.set('trustedTime', isTrusted);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetStandardOffset: function getStandardOffset() {\n\t\t\tvar offset = this.get('standardOffset');\n\n\t\t\tvar isNeg = false;\n\t\t\tif (offset < 0) {\n\t\t\t\toffset = -offset;\n\t\t\t\tisNeg = true;\n\t\t\t}\n\n\t\t\tvar rounded = Math.ceil(offset / 1000);\n\t\t\tif (isNeg) {\n\t\t\t\trounded = -rounded;\n\t\t\t}\n\n\t\t\treturn rounded;\n\t\t},\n\t\tgetStandardTime: function getStandardTime() {\n\t\t\treturn Math.ceil((this.currentClientTime() + this.get('standardOffset')) / 1000);\n\t\t},\n\t\tisTrustedTime: function isTrustedTime() {\n\t\t\treturn this.get('trustedTime');\n\t\t},\n\t\tntpOffset: function ntpOffset(t0, t1, t2, t3) {\n\t\t\treturn {\n\t\t\t\tcallDelay: t3 - t0 - (t2 - t1),\n\t\t\t\toffset: (t1 - t0 + (t2 - t3)) / 2\n\t\t\t};\n\t\t},\n\t\ttimestamp: function timestamp() {\n\t\t\tvar time = _moment.default.utc().add(this.timezone(), 'seconds');\n\t\t\tif (_settings.default.get('nist_mode')) {\n\t\t\t\ttime = this.getStandardTime();\n\t\t\t}\n\t\t\treturn time;\n\t\t},\n\t\tisTrustedTimeType: function isTrustedTimeType(isUser) {\n\t\t\tisUser = !Ember.isNone(isUser) ? isUser : false;\n\t\t\tif (isUser) {\n\t\t\t\treturn kUserTime;\n\t\t\t} else {\n\t\t\t\treturn this.isTrustedTime() ? kServerTime : kDeviceTime;\n\t\t\t}\n\t\t}\n\t});\n\n\texports.default = {\n\t\tname: 'nist-time',\n\t\tafter: 'application',\n\t\tinitialize: function initialize(app) {\n\t\t\twindow.__NIST = NIST.create(app.__container__.ownerInjection());\n\t\t}\n\t};\n});","define('busy-app/initializers/store', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'store',\n    after: 'ember-data',\n    initialize: function initialize() {}\n  };\n});","define('busy-app/initializers/transforms', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'transforms',\n    before: 'store',\n    initialize: function initialize() {}\n  };\n});","define(\"busy-app/instance-initializers/ember-data\", [\"exports\", \"ember-data/initialize-store-service\"], function (exports, _initializeStoreService) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: \"ember-data\",\n    initialize: _initializeStoreService.default\n  };\n});","define('busy-app/instance-initializers/ember-simple-auth', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    name: 'ember-simple-auth',\n\n    initialize: function initialize() {}\n  };\n});","define(\"busy-app/langs/en-us\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    \" break\": \" break\",\n    \" clocked-in\": \" clocked-in\",\n    \" to see how to format your data.\": \" to see how to format your data.\",\n    \"\\\"Affiliate\\\"\": \"\\\"Affiliate\\\"\",\n    \"\\\"AppExchange\\\"\": \"\\\"AppExchange\\\"\",\n    \"\\\"Malicious Code\\\"\": \"\\\"Malicious Code\\\"\",\n    \"\\\"Purchased Services\\\"\": \"\\\"Purchased Services\\\"\",\n    \"\\\"Services\\\"\": \"\\\"Services\\\"\",\n    \"\\\"Users\\\"\": \"\\\"Users\\\"\",\n    \"\\\"We,\\\" \\\"Us\\\" or \\\"Our\\\"\": \"\\\"We,\\\" \\\"Us\\\" or \\\"Our\\\"\",\n    \"\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"\": \"\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"\",\n    \"\\\"You\\\" or \\\"Your\\\"\": \"\\\"You\\\" or \\\"Your\\\"\",\n    \"\\\"Your Data\\\"\": \"\\\"Your Data\\\"\",\n    \"$%@\": \"$%@\",\n    \"%\": \"%\",\n    \"%@ - %@\": \"%@ - %@\",\n    \"%@ Days\": \"%@ Days\",\n    \"%@ Days Unpaid\": \"%@ Days Unpaid\",\n    \"%@ Ending in %@\": \"%@ Ending in %@\",\n    \"%@ Hours\": \"%@ Hours\",\n    \"%@ Hrs\": \"%@ Hrs\",\n    \"%@ Hrs %@ Mins\": \"%@ Hrs %@ Mins\",\n    \"%@ Hrs %@ Mins %@ Secs\": \"%@ Hrs %@ Mins %@ Secs\",\n    \"%@ Hrs Paid\": \"%@ Hrs Paid\",\n    \"%@ employees updated\": \"%@ employees updated\",\n    \"%@ ending in %@\": \"%@ ending in %@\",\n    \"%@ hours\": \"%@ hours\",\n    \"%@ time %@ with conflicts.\": \"%@ time %@ with conflicts.\",\n    \"%@%\": \"%@%\",\n    \"(Upcoming)\": \"(Upcoming)\",\n    \"(can add, edit, and remove employees and can set their wage, position, etc.)\": \"(can add, edit, and remove employees and can set their wage, position, etc.)\",\n    \"(can clock in, clock out, and take breaks)\": \"(can clock in, clock out, and take breaks)\",\n    \"(can create and edit time entries)\": \"(can create and edit time entries)\",\n    \"(can remove photos or edit notes)\": \"(can remove photos or edit notes)\",\n    \"*<b>Project Name<\\/b> is required.\": \"*<b>Project Name<\\/b> is required.\",\n    \"*Cost Code #, Description and Unit of Measure are required.\": \"*Cost Code #, Description and Unit of Measure are required.\",\n    \"*Only the first and last names are required.\": \"*Only the first and last names are required.\",\n    \", go to the\": \", go to the\",\n    \"\\/hour\": \"\\/hour\",\n    \"\\/hr\": \"\\/hr\",\n    \"\\/month\": \"\\/month\",\n    \"\\/week\": \"\\/week\",\n    \"\\/year\": \"\\/year\",\n    \"1 hour\": \"1 hour\",\n    \"10 hours\": \"10 hours\",\n    \"11 hours\": \"11 hours\",\n    \"12 hours\": \"12 hours\",\n    \"2 hours\": \"2 hours\",\n    \"3 Parent Projects\": \"3 Parent Projects\",\n    \"3 hours\": \"3 hours\",\n    \"4 hours\": \"4 hours\",\n    \"5 hours\": \"5 hours\",\n    \"6 hours\": \"6 hours\",\n    \"7 hours\": \"7 hours\",\n    \"7477 W. Lake Mead Blvd\": \"7477 W. Lake Mead Blvd\",\n    \"7th Day Doubletime (wage x 2.0)\": \"7th Day Doubletime (wage x 2.0)\",\n    \"7th Day Overtime (wage x 1.5)\": \"7th Day Overtime (wage x 1.5)\",\n    \"7th Day Overtime (wage x 2.0)\": \"7th Day Overtime (wage x 2.0)\",\n    \"7th Day Overtime needs to be less hours than Daily Doubletime.\": \"7th Day Overtime needs to be less hours than Daily Doubletime.\",\n    \"8 hours\": \"8 hours\",\n    \"9 hours\": \"9 hours\",\n    \"<b>Manage Budgets<\\/b> (can view, add, edit, and remove budgets)\": \"<b>Manage Budgets<\\/b> (can view, add, edit, and remove budgets)\",\n    \"<b>Manage Company Settings<\\/b> (can manage settings for the whole company)\": \"<b>Manage Company Settings<\\/b> (can manage settings for the whole company)\",\n    \"<b>Manage Cost Codes<\\/b> (can add, edit, and remove cost codes, and groups)\": \"<b>Manage Cost Codes<\\/b> (can add, edit, and remove cost codes, and groups)\",\n    \"<b>Manage Employee Groups<\\/b> (can arrange employees into group)\": \"<b>Manage Employee Groups<\\/b> (can arrange employees into group)\",\n    \"<b>Manage Projects<\\/b> (can add, edit, and remove projects, subprojects, and groups)\": \"<b>Manage Projects<\\/b> (can add, edit, and remove projects, subprojects, and groups)\",\n    \"<b>Paid<\\/b>\": \"<b>Paid<\\/b>\",\n    \"<b>View Expenses<\\/b> (can see money spent on projects and paid to employees)\": \"<b>View Expenses<\\/b> (can see money spent on projects and paid to employees)\",\n    \"A Plan Must Be Selected!\": \"A Plan Must Be Selected!\",\n    \"A conflicting time entry was merged into this time entry.\": \"A conflicting time entry was merged into this time entry.\",\n    \"A paid \": \"A paid \",\n    \"A report breakdown of the hours and cost spent per employee.\": \"A report breakdown of the hours and cost spent per employee.\",\n    \"A report breakdown of the hours and cost spent per subproject.\": \"A report breakdown of the hours and cost spent per subproject.\",\n    \"A report for comparing this projects budget to the actual cost of the project.\": \"A report for comparing this projects budget to the actual cost of the project.\",\n    \"A report for cost code costs by pay period.\": \"A report for cost code costs by pay period.\",\n    \"A report for employee costs by pay period.\": \"A report for employee costs by pay period.\",\n    \"A report for employee information.\": \"A report for employee information.\",\n    \"A report for employee payroll by pay period.\": \"A report for employee payroll by pay period.\",\n    \"A report for employee time cards by date range.\": \"A report for employee time cards by date range.\",\n    \"A report for employee time off by date range.\": \"A report for employee time off by date range.\",\n    \"A report for project by employee.\": \"A report for project by employee.\",\n    \"A report for project costs by pay period.\": \"A report for project costs by pay period.\",\n    \"A time card entry was submitted for %@ that overlaps an existing entry.\": \"A time card entry was submitted for %@ that overlaps an existing entry.\",\n    \"A time card entry was submitted for you that overlaps an existing entry.\": \"A time card entry was submitted for you that overlaps an existing entry.\",\n    \"A time off entry exists for %@ on this day.\": \"A time off entry exists for %@ on this day.\",\n    \"A time off entry exists for one or more employees on this day.\": \"A time off entry exists for one or more employees on this day.\",\n    \"About\": \"About\",\n    \"Account Information\": \"Account Information\",\n    \"Account Settings\": \"Account Settings\",\n    \"Acquisition of Non-busybusy.com Products and Services.\": \"Acquisition of Non-busybusy.com Products and Services.\",\n    \"Actions\": \"Actions\",\n    \"Activity Log\": \"Activity Log\",\n    \"Actual\": \"Actual\",\n    \"Add\": \"Add\",\n    \"Add Break\": \"Add Break\",\n    \"Add Card\": \"Add Card\",\n    \"Add Comment\": \"Add Comment\",\n    \"Add Cost Code\": \"Add Cost Code\",\n    \"Add Employee\": \"Add Employee\",\n    \"Add Insurance Class\": \"Add Insurance Class\",\n    \"Add Position\": \"Add Position\",\n    \"Add Project\": \"Add Project\",\n    \"Add Subproject\": \"Add Subproject\",\n    \"Add Time Off\": \"Add Time Off\",\n    \"Add a Company\": \"Add a Company\",\n    \"Add a description for this note...\": \"Add a description for this note...\",\n    \"Add new group\": \"Add new group\",\n    \"Address\": \"Address\",\n    \"Address 1\": \"Address 1\",\n    \"Address 2\": \"Address 2\",\n    \"Advanced Options\": \"Advanced Options\",\n    \"All\": \"All\",\n    \"All Cost Codes\": \"All Cost Codes\",\n    \"All Employees\": \"All Employees\",\n    \"All Locations\": \"All Locations\",\n    \"All Projects\": \"All Projects\",\n    \"All conflicts have been resolved\": \"All conflicts have been resolved\",\n    \"All errors must be fixed before moving on\": \"All errors must be fixed before moving on\",\n    \"All errors must be fixed before moving on.\": \"All errors must be fixed before moving on.\",\n    \"All time\": \"All time\",\n    \"Always know your labor costs by tracking the time spent on each project.\": \"Always know your labor costs by tracking the time spent on each project.\",\n    \"Amount\": \"Amount\",\n    \"An error occurred! Please try again later.\": \"An error occurred! Please try again later.\",\n    \"An existing Procore account\": \"An existing Procore account\",\n    \"Annual Billing\": \"Annual Billing\",\n    \"Any previously sent emails are no longer valid.\": \"Any previously sent emails are no longer valid.\",\n    \"Archive\": \"Archive\",\n    \"Archived\": \"Archived\",\n    \"Are you a business looking to get started with busybusy?\": \"Are you a business looking to get started with busybusy?\",\n    \"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\": \"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\",\n    \"Are you sure you want to %@ this?\": \"Are you sure you want to %@ this?\",\n    \"Are you sure you want to Delete this?\": \"Are you sure you want to Delete this?\",\n    \"Are you sure you want to archive\": \"Are you sure you want to archive\",\n    \"Are you sure you want to archive the selected projects?\": \"Are you sure you want to archive the selected projects?\",\n    \"Are you sure you want to delete this entry?\": \"Are you sure you want to delete this entry?\",\n    \"Are you sure you want to delete this wage change?\": \"Are you sure you want to delete this wage change?\",\n    \"Are you sure you want to delete this?\": \"Are you sure you want to delete this?\",\n    \"Are you sure you want to stop syncing with Procore?\": \"Are you sure you want to stop syncing with Procore?\",\n    \"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\": \"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\",\n    \"Are you sure?\": \"Are you sure?\",\n    \"As used herein, \\\"Confidential Information\\\" means all confidential information disclosed by a party (\\\"Disclosing Party\\\") to the other party (\\\"Receiving Party\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other\\u2019s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\": \"As used herein, \\\"Confidential Information\\\" means all confidential information disclosed by a party (\\\"Disclosing Party\\\") to the other party (\\\"Receiving Party\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other\\u2019s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\",\n    \"Automatic Import Settings\": \"Automatic Import Settings\",\n    \"Back\": \"Back\",\n    \"Basic\": \"Basic\",\n    \"Before adding your employees, you first need to upgrade your account. It's free for 30 days, so you can see how easy we make payroll processing and job costing.\": \"Before adding your employees, you first need to upgrade your account. It's free for 30 days, so you can see how easy we make payroll processing and job costing.\",\n    \"Beginning\": \"Beginning\",\n    \"Below is an example of some projects.\": \"Below is an example of some projects.\",\n    \"Biweekly\": \"Biweekly\",\n    \"Bi-weekly\": \"Bi-weekly\",\n    \"Both\": \"Both\",\n    \"Break %@\": \"Break %@\",\n    \"Break Time\": \"Break Time\",\n    \"Break conflict resolution\": \"Break conflict resolution\",\n    \"Break deleted\": \"Break deleted\",\n    \"Break deleted by conflict resolution\": \"Break deleted by conflict resolution\",\n    \"Break end\": \"Break end\",\n    \"Break end @ \": \"Break end @ \",\n    \"Break end location\": \"Break end location\",\n    \"Break start\": \"Break start\",\n    \"Break start @ \": \"Break start @ \",\n    \"Break start is outside the entry start time\": \"Break start is outside the entry start time\",\n    \"Break start location\": \"Break start location\",\n    \"Break stop is outside the entry stop time\": \"Break stop is outside the entry stop time\",\n    \"Breaks\": \"Breaks\",\n    \"Breaks:  \": \"Breaks:  \",\n    \"Budget Used\": \"Budget Used\",\n    \"Budget vs Actual\": \"Budget vs Actual\",\n    \"Budget vs. Actual\": \"Budget vs. Actual\",\n    \"Budgeted\": \"Budgeted\",\n    \"Build Deck\": \"Build Deck\",\n    \"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\": \"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\",\n    \"By:  %@\": \"By:  %@\",\n    \"CONFIDENTIALITY\": \"CONFIDENTIALITY\",\n    \"California\": \"California\",\n    \"California Settings\": \"California Settings\",\n    \"Call us at 1-855-287-9287\": \"Call us at 1-855-287-9287\",\n    \"Cancel\": \"Cancel\",\n    \"Card Number\": \"Card Number\",\n    \"Card Number cannot be blank.\": \"Card Number cannot be blank.\",\n    \"Card Number is Invalid\": \"Card Number is Invalid\",\n    \"Card Number is Invalid. Please check your number and try again.\": \"Card Number is Invalid. Please check your number and try again.\",\n    \"Card was declined. Please check your card and try again.\": \"Card was declined. Please check your card and try again.\",\n    \"Cash Allowances\": \"Cash Allowances\",\n    \"Change\": \"Change\",\n    \"Change Collection Project\": \"Change Collection Project\",\n    \"Change Current Overtime\": \"Change Current Overtime\",\n    \"Change Current Wage\": \"Change Current Wage\",\n    \"Change Overtime Period\": \"Change Overtime Period\",\n    \"Change Overtime Rules\": \"Change Overtime Rules\",\n    \"Change Password\": \"Change Password\",\n    \"Change Pay Period\": \"Change Pay Period\",\n    \"Choose File\": \"Choose File\",\n    \"Choose Photos\": \"Choose Photos\",\n    \"Choose a file to upload.\": \"Choose a file to upload.\",\n    \"Choose busybusy.qwc downloaded in Step 2\": \"Choose busybusy.qwc downloaded in Step 2\",\n    \"City\": \"City\",\n    \"Click here\": \"Click here\",\n    \"Click here to set up your company.\": \"Click here to set up your company.\",\n    \"Click here to start tracking your time\": \"Click here to start tracking your time\",\n    \"Click here to view conflicting time entry history\": \"Click here to view conflicting time entry history\",\n    \"Click save and wait for busybusy Integration Status to say \\u201CConnected\\u201D.\": \"Click save and wait for busybusy Integration Status to say \\u201CConnected\\u201D.\",\n    \"Click the verification link in the email to get started with busybusy.\": \"Click the verification link in the email to get started with busybusy.\",\n    \"Clock In\": \"Clock In\",\n    \"Clock In At\": \"Clock In At\",\n    \"Clock Out\": \"Clock Out\",\n    \"Clock Out At\": \"Clock Out At\",\n    \"Clock in\": \"Clock in\",\n    \"Clock in at\": \"Clock in at\",\n    \"Clock in at location\": \"Clock in at location\",\n    \"Clock in location\": \"Clock in location\",\n    \"Clock out\": \"Clock out\",\n    \"Clock out at\": \"Clock out at\",\n    \"Clock out at location\": \"Clock out at location\",\n    \"Clock out location\": \"Clock out location\",\n    \"Clocked In @ \": \"Clocked In @ \",\n    \"Clocked Out @ \": \"Clocked Out @ \",\n    \"Clocking In\": \"Clocking In\",\n    \"Close\": \"Close\",\n    \"Close add group\": \"Close add group\",\n    \"Collapse All\": \"Collapse All\",\n    \"Columns\": \"Columns\",\n    \"Company Information\": \"Company Information\",\n    \"Company Logo\": \"Company Logo\",\n    \"Company Name\": \"Company Name\",\n    \"Company Position\": \"Company Position\",\n    \"Company Settings\": \"Company Settings\",\n    \"Company Setup\": \"Company Setup\",\n    \"Company Size\": \"Company Size\",\n    \"Company name\": \"Company name\",\n    \"Compelled Disclosure.\": \"Compelled Disclosure.\",\n    \"Concrete\": \"Concrete\",\n    \"Confidentiality\": \"Confidentiality\",\n    \"Confirm %@\": \"Confirm %@\",\n    \"Confirm Delete\": \"Confirm Delete\",\n    \"Confirm Password\": \"Confirm Password\",\n    \"Conflict %@\\/%@\": \"Conflict %@\\/%@\",\n    \"Conflict resolution\": \"Conflict resolution\",\n    \"Conflicting History\": \"Conflicting History\",\n    \"Congratulations!\": \"Congratulations!\",\n    \"Connect\": \"Connect\",\n    \"Connect to Procore\": \"Connect to Procore\",\n    \"Connect to QuickBooks\": \"Connect to QuickBooks\",\n    \"Connected\": \"Connected\",\n    \"Connected: \": \"Connected: \",\n    \"Connecting with Procore will automatically export busybusy employees, projects, cost codes and time entries to Procore.\": \"Connecting with Procore will automatically export busybusy employees, projects, cost codes and time entries to Procore.\",\n    \"Contact Information\": \"Contact Information\",\n    \"Continue\": \"Continue\",\n    \"Copy project structure from: \": \"Copy project structure from: \",\n    \"Cost\": \"Cost\",\n    \"Cost Code\": \"Cost Code\",\n    \"Cost Code #\": \"Cost Code #\",\n    \"Cost Code Export\": \"Cost Code Export\",\n    \"Cost Code Import\": \"Cost Code Import\",\n    \"Cost Code Import Error\": \"Cost Code Import Error\",\n    \"Cost Code Import Step 1 of 3\": \"Cost Code Import Step 1 of 3\",\n    \"Cost Code Import Step 2 of 3\": \"Cost Code Import Step 2 of 3\",\n    \"Cost Code Import Step 3 of 3\": \"Cost Code Import Step 3 of 3\",\n    \"Cost Code Information\": \"Cost Code Information\",\n    \"Cost Code Job Costing\": \"Cost Code Job Costing\",\n    \"Cost Code: \": \"Cost Code: \",\n    \"Cost Code:  \": \"Cost Code:  \",\n    \"Cost Codes\": \"Cost Codes\",\n    \"Cost Codes Imported\": \"Cost Codes Imported\",\n    \"Cost Codes Updated\": \"Cost Codes Updated\",\n    \"Cost code\": \"Cost code\",\n    \"Coupon Code\": \"Coupon Code\",\n    \"Coupon Discount\": \"Coupon Discount\",\n    \"Create a row for each of the colored end projects.\": \"Create a row for each of the colored end projects.\",\n    \"Created By\": \"Created By\",\n    \"Created by: \": \"Created by: \",\n    \"Created by:  %@\": \"Created by:  %@\",\n    \"Created on: \": \"Created on: \",\n    \"Created on:  %@\": \"Created on:  %@\",\n    \"Credit Card\": \"Credit Card\",\n    \"Currency\": \"Currency\",\n    \"Current Activity\": \"Current Activity\",\n    \"Current Overtime\": \"Current Overtime\",\n    \"Current Overtime Period\": \"Current Overtime Period\",\n    \"Current Status\": \"Current Status\",\n    \"Current Wage\": \"Current Wage\",\n    \"Currently Importing...\": \"Currently Importing...\",\n    \"Custom\": \"Custom\",\n    \"Custom Settings\": \"Custom Settings\",\n    \"Customer\": \"Customer\",\n    \"DEFINITIONS\": \"DEFINITIONS\",\n    \"Daily\": \"Daily\",\n    \"Daily By Project\": \"Daily By Project\",\n    \"Daily Doubletime must be greater than daily overtime!\": \"Daily Doubletime must be greater than daily overtime!\",\n    \"Daily Overtime (wage x 1.5)\": \"Daily Overtime (wage x 1.5)\",\n    \"Daily Overtime (wage x 2.0)\": \"Daily Overtime (wage x 2.0)\",\n    \"Daily Overtime needs to be less hours than Daily Doubletime.\": \"Daily Overtime needs to be less hours than Daily Doubletime.\",\n    \"Daily Time Flag (hours worked until flagged)\": \"Daily Time Flag (hours worked until flagged)\",\n    \"Daily Time Flag (hours worked until flagged): \": \"Daily Time Flag (hours worked until flagged): \",\n    \"Daily Total\": \"Daily Total\",\n    \"Dashboard\": \"Dashboard\",\n    \"Data not yet imported.\": \"Data not yet imported.\",\n    \"Date\": \"Date\",\n    \"Date Range\": \"Date Range\",\n    \"Day\": \"Day\",\n    \"Definition of Confidential Information.\": \"Definition of Confidential Information.\",\n    \"Definitions\": \"Definitions\",\n    \"Delete\": \"Delete\",\n    \"Delete Collection\": \"Delete Collection\",\n    \"Delete Comment\": \"Delete Comment\",\n    \"Delete this Collection?\": \"Delete this Collection?\",\n    \"Delete this comment: \": \"Delete this comment: \",\n    \"Deleted\": \"Deleted\",\n    \"Deleted by conflict resolution\": \"Deleted by conflict resolution\",\n    \"Deleted successfuly\": \"Deleted successfuly\",\n    \"Deleting Position\": \"Deleting Position\",\n    \"Deleting note card...\": \"Deleting note card...\",\n    \"Deleting...\": \"Deleting...\",\n    \"Description\": \"Description\",\n    \"Description: \": \"Description: \",\n    \"Description:  \": \"Description:  \",\n    \"Details\": \"Details\",\n    \"Details:  \": \"Details:  \",\n    \"Device:  %@\": \"Device:  %@\",\n    \"Disclaimer.\": \"Disclaimer.\",\n    \"Disconnect\": \"Disconnect\",\n    \"Disconnect from QuickBooks\": \"Disconnect from QuickBooks\",\n    \"Disconnecting\": \"Disconnecting\",\n    \"Doe Residence\": \"Doe Residence\",\n    \"Don't worry, you can cancel at any time.\": \"Don't worry, you can cancel at any time.\",\n    \"Done\": \"Done\",\n    \"Double Time\": \"Double Time\",\n    \"Doubletime\": \"Doubletime\",\n    \"Downgrade\": \"Downgrade\",\n    \"Downgrade to Free\": \"Downgrade to Free\",\n    \"Downgrading will archive your team, but will allow you to maintain access to the company tools and data.\": \"Downgrading will archive your team, but will allow you to maintain access to the company tools and data.\",\n    \"Download\": \"Download\",\n    \"Download and install\": \"Download and install\",\n    \"Download our\": \"Download our\",\n    \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to get started.\": \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to get started.\",\n    \"Drag Positions up or down\": \"Drag Positions up or down\",\n    \"Drag a file or click here to change your photo.\": \"Drag a file or click here to change your photo.\",\n    \"Drag a file or click here to upload a photo.\": \"Drag a file or click here to upload a photo.\",\n    \"Drag files or click here to change your photos.\": \"Drag files or click here to change your photos.\",\n    \"Drag files or click here to upload a photos.\": \"Drag files or click here to upload a photos.\",\n    \"Drag files or click here to upload files\": \"Drag files or click here to upload files\",\n    \"Duplicate\": \"Duplicate\",\n    \"Duplicate Project\": \"Duplicate Project\",\n    \"Duration\": \"Duration\",\n    \"E Street Garage\": \"E Street Garage\",\n    \"END of User Agreement\": \"END of User Agreement\",\n    \"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\": \"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\",\n    \"Edit\": \"Edit\",\n    \"Edit Break\": \"Edit Break\",\n    \"Edit Card\": \"Edit Card\",\n    \"Edit Company Profile\": \"Edit Company Profile\",\n    \"Edit Cost Code\": \"Edit Cost Code\",\n    \"Edit Current Entry\": \"Edit Current Entry\",\n    \"Edit Date\": \"Edit Date\",\n    \"Edit Details\": \"Edit Details\",\n    \"Edit Insurance Class\": \"Edit Insurance Class\",\n    \"Edit Locked\": \"Edit Locked\",\n    \"Edit No Changes Made\": \"Edit No Changes Made\",\n    \"Edit Notecard\": \"Edit Notecard\",\n    \"Edit Photo\": \"Edit Photo\",\n    \"Edit Position\": \"Edit Position\",\n    \"Edit Profile\": \"Edit Profile\",\n    \"Edit Project\": \"Edit Project\",\n    \"Edit Subscription\": \"Edit Subscription\",\n    \"Edit Time Entries for: \": \"Edit Time Entries for: \",\n    \"Edit Time Entry\": \"Edit Time Entry\",\n    \"Edit Time Off\": \"Edit Time Off\",\n    \"Edit Time Off Entry\": \"Edit Time Off Entry\",\n    \"Edited break\": \"Edited break\",\n    \"Effective As Of: \": \"Effective As Of: \",\n    \"Effective Date\": \"Effective Date\",\n    \"Effective Date: \": \"Effective Date: \",\n    \"Effective Date:  %@\": \"Effective Date:  %@\",\n    \"Effective Hourly Rate: \": \"Effective Hourly Rate: \",\n    \"Effective Hourly Rate:  \": \"Effective Hourly Rate:  \",\n    \"Eliminate Paper Time Cards\": \"Eliminate Paper Time Cards\",\n    \"Email\": \"Email\",\n    \"Email must be a vaild email address.\": \"Email must be a vaild email address.\",\n    \"Employee\": \"Employee\",\n    \"Employee Cost\": \"Employee Cost\",\n    \"Employee ID\": \"Employee ID\",\n    \"Employee Id\": \"Employee Id\",\n    \"Employee Import Error\": \"Employee Import Error\",\n    \"Employee Import Step 1 of 4\": \"Employee Import Step 1 of 4\",\n    \"Employee Import Step 2 of 4\": \"Employee Import Step 2 of 4\",\n    \"Employee Import Step 3 of 4\": \"Employee Import Step 3 of 4\",\n    \"Employee Import Step 4 of 4\": \"Employee Import Step 4 of 4\",\n    \"Employee Information\": \"Employee Information\",\n    \"Employee Job Costing\": \"Employee Job Costing\",\n    \"Employee List\": \"Employee List\",\n    \"Employee Locations\": \"Employee Locations\",\n    \"Employee Payroll Report\": \"Employee Payroll Report\",\n    \"Employee Project\": \"Employee Project\",\n    \"Employee Report\": \"Employee Report\",\n    \"Employee Signature\": \"Employee Signature\",\n    \"Employee Signature Report\": \"Employee Signature Report\",\n    \"Employees\": \"Employees\",\n    \"Employees Export\": \"Employees Export\",\n    \"Employees Import\": \"Employees Import\",\n    \"Employees Imported\": \"Employees Imported\",\n    \"Employees Updated\": \"Employees Updated\",\n    \"Enable Cost Codes\": \"Enable Cost Codes\",\n    \"Enable Cost Codes: \": \"Enable Cost Codes: \",\n    \"Enable Paid Breaks\": \"Enable Paid Breaks\",\n    \"End Break\": \"End Break\",\n    \"End Time\": \"End Time\",\n    \"End time\": \"End time\",\n    \"End time:  \": \"End time:  \",\n    \"Enter Project Address\": \"Enter Project Address\",\n    \"Enter notes here.\": \"Enter notes here.\",\n    \"Enter your email\": \"Enter your email\",\n    \"Entries\": \"Entries\",\n    \"Entries older than 90 days can not be changed again.\": \"Entries older than 90 days can not be changed again.\",\n    \"Entry\": \"Entry\",\n    \"Entry History\": \"Entry History\",\n    \"Equipment\": \"Equipment\",\n    \"Equipment:  \": \"Equipment:  \",\n    \"Est. Cost\": \"Est. Cost\",\n    \"Estimated Cost (hourly)\": \"Estimated Cost (hourly)\",\n    \"Estimated Cost (salary)\": \"Estimated Cost (salary)\",\n    \"Estimated Cost of Employee\": \"Estimated Cost of Employee\",\n    \"Estimated Hourly Cost: \": \"Estimated Hourly Cost: \",\n    \"Estimated Total Cost\": \"Estimated Total Cost\",\n    \"Every %@\": \"Every %@\",\n    \"Every other %@\": \"Every other %@\",\n    \"Exclusion of Consequential and Related Damages.\": \"Exclusion of Consequential and Related Damages.\",\n    \"Exclusive Remedy.\": \"Exclusive Remedy.\",\n    \"Exp. Month\": \"Exp. Month\",\n    \"Exp. Year\": \"Exp. Year\",\n    \"Exp. Year and Exp. Month are required to update a card.\": \"Exp. Year and Exp. Month are required to update a card.\",\n    \"Exp:  %@\\/%@\": \"Exp:  %@\\/%@\",\n    \"Expand All\": \"Expand All\",\n    \"Expected Hours Per Week can't be zero\": \"Expected Hours Per Week can't be zero\",\n    \"Expected Hours Per Week: \": \"Expected Hours Per Week: \",\n    \"Export\": \"Export\",\n    \"FEES AND PAYMENT FOR PURCHASED SERVICES\": \"FEES AND PAYMENT FOR PURCHASED SERVICES\",\n    \"FROM\": \"FROM\",\n    \"False\": \"False\",\n    \"Federal Government End Use Provisions.\": \"Federal Government End Use Provisions.\",\n    \"Fees and Payment for Purchased Services\": \"Fees and Payment for Purchased Services\",\n    \"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\": \"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\",\n    \"File Name\": \"File Name\",\n    \"Finish\": \"Finish\",\n    \"First\": \"First\",\n    \"First Name\": \"First Name\",\n    \"First Name is required\": \"First Name is required\",\n    \"Follow Company Settings\": \"Follow Company Settings\",\n    \"For example, if you have a Procore cost code division of \": \"For example, if you have a Procore cost code division of \",\n    \"For example, if you have a busybusy project named\": \"For example, if you have a busybusy project named\",\n    \"For further assistance please send us a\": \"For further assistance please send us a\",\n    \"Forgot Your Password?\": \"Forgot Your Password?\",\n    \"Forgot your username or password? \": \"Forgot your username or password? \",\n    \"Foundation\": \"Foundation\",\n    \"Free\": \"Free\",\n    \"Friday\": \"Friday\",\n    \"Full Map\": \"Full Map\",\n    \"Full Report\": \"Full Report\",\n    \"GPS Location\": \"GPS Location\",\n    \"General\": \"General\",\n    \"General Liability\": \"General Liability\",\n    \"General Provisions\": \"General Provisions\",\n    \"General Requirements\": \"General Requirements\",\n    \"General Settings\": \"General Settings\",\n    \"Get more from busybusy\": \"Get more from busybusy\",\n    \"Getting Started\": \"Getting Started\",\n    \"Go off Break\": \"Go off Break\",\n    \"Go on Break\": \"Go on Break\",\n    \"Group Name\": \"Group Name\",\n    \"HOL\": \"HOL\",\n    \"Headers\": \"Headers\",\n    \"Help\": \"Help\",\n    \"Hide Details\": \"Hide Details\",\n    \"Hide wage History\": \"Hide wage History\",\n    \"Holiday\": \"Holiday\",\n    \"Hourly\": \"Hourly\",\n    \"Hours\": \"Hours\",\n    \"Hours Worked\": \"Hours Worked\",\n    \"How can we help?\": \"How can we help?\",\n    \"How often do you process payroll?\": \"How often do you process payroll?\",\n    \"I agree to the \": \"I agree to the \",\n    \"I did not receive an email.\": \"I did not receive an email.\",\n    \"I entered the wrong email.\": \"I entered the wrong email.\",\n    \"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\": \"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\",\n    \"If you have any questions or concerns regarding this agreement,\": \"If you have any questions or concerns regarding this agreement,\",\n    \"If you would like to import your existing procore data into busybusy, simply connect to Procore and click on the Import Data option.\": \"If you would like to import your existing procore data into busybusy, simply connect to Procore and click on the Import Data option.\",\n    \"Import\": \"Import\",\n    \"Import Cost Codes\": \"Import Cost Codes\",\n    \"Import Employees\": \"Import Employees\",\n    \"Import Projects\": \"Import Projects\",\n    \"Import employees, projects and cost codes from Procore.\": \"Import employees, projects and cost codes from Procore.\",\n    \"Import in progress\": \"Import in progress\",\n    \"Importing cost codes %@%\": \"Importing cost codes %@%\",\n    \"Importing employees %@%\": \"Importing employees %@%\",\n    \"Importing projects\": \"Importing projects\",\n    \"Improve Job Costing & Simplify the Payroll Process\": \"Improve Job Costing & Simplify the Payroll Process\",\n    \"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\": \"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\",\n    \"Indemnification by Us.\": \"Indemnification by Us.\",\n    \"Indemnification by You.\": \"Indemnification by You.\",\n    \"Install HVAC\": \"Install HVAC\",\n    \"Insurance Class\": \"Insurance Class\",\n    \"Insurance Classes\": \"Insurance Classes\",\n    \"Insurance General Liability Class\": \"Insurance General Liability Class\",\n    \"Insurance Workers' Compensation Class\": \"Insurance Workers' Compensation Class\",\n    \"Integration with Non-busybusy.com Services.\": \"Integration with Non-busybusy.com Services.\",\n    \"Integrations\": \"Integrations\",\n    \"Intuit QuickBooks\": \"Intuit QuickBooks\",\n    \"Invoice Date\": \"Invoice Date\",\n    \"Invoice History\": \"Invoice History\",\n    \"Invoice Period\": \"Invoice Period\",\n    \"Is Paid:  \": \"Is Paid:  \",\n    \"It\\u2019s that simple!\": \"It\\u2019s that simple!\",\n    \"Job Costing\": \"Job Costing\",\n    \"Job Details\": \"Job Details\",\n    \"Johnson Home\": \"Johnson Home\",\n    \"Know where your employees are and what they are working on\": \"Know where your employees are and what they are working on\",\n    \"LIMITATION OF LIABILITY\": \"LIMITATION OF LIABILITY\",\n    \"Labor Budget\": \"Labor Budget\",\n    \"Labor Burden\": \"Labor Burden\",\n    \"Labor Burden %\": \"Labor Burden %\",\n    \"Labor Burden: \": \"Labor Burden: \",\n    \"Labor Cost\": \"Labor Cost\",\n    \"Labor Cost Spent\": \"Labor Cost Spent\",\n    \"Labor Hours\": \"Labor Hours\",\n    \"Labor Hours Worked\": \"Labor Hours Worked\",\n    \"Las Vegas, NV 89128-1028\": \"Las Vegas, NV 89128-1028\",\n    \"Last\": \"Last\",\n    \"Last Import: \": \"Last Import: \",\n    \"Last Name\": \"Last Name\",\n    \"Last Name is required\": \"Last Name is required\",\n    \"Learn more\": \"Learn more\",\n    \"Limitation of Liability\": \"Limitation of Liability\",\n    \"Limitation of Liability.\": \"Limitation of Liability.\",\n    \"Loading Log Details...\": \"Loading Log Details...\",\n    \"Loading Log Entries...\": \"Loading Log Entries...\",\n    \"Loading Status...\": \"Loading Status...\",\n    \"Loading...\": \"Loading...\",\n    \"Location\": \"Location\",\n    \"Location Set\": \"Location Set\",\n    \"Locations\": \"Locations\",\n    \"Log\": \"Log\",\n    \"Log out\": \"Log out\",\n    \"Login\": \"Login\",\n    \"Lot 1\": \"Lot 1\",\n    \"Lot 2\": \"Lot 2\",\n    \"MUTUAL INDEMNIFICATION\": \"MUTUAL INDEMNIFICATION\",\n    \"Make This My Default Card\": \"Make This My Default Card\",\n    \"Manage Employees for: \": \"Manage Employees for: \",\n    \"Manage Insurance Classes\": \"Manage Insurance Classes\",\n    \"Manage Photos posted by: \": \"Manage Photos posted by: \",\n    \"Manage payroll items on all new employees imported from QuickBooks.\": \"Manage payroll items on all new employees imported from QuickBooks.\",\n    \"Manual break\": \"Manual break\",\n    \"Manual entry\": \"Manual entry\",\n    \"Match Payroll Categories\": \"Match Payroll Categories\",\n    \"Member Limit\": \"Member Limit\",\n    \"Merge Entries\": \"Merge Entries\",\n    \"Merge entries\": \"Merge entries\",\n    \"Message\": \"Message\",\n    \"Misc\": \"Misc\",\n    \"Monday\": \"Monday\",\n    \"Monthly\": \"Monthly\",\n    \"Monthly Billing\": \"Monthly Billing\",\n    \"Move to Group\": \"Move to Group\",\n    \"Must be a number\": \"Must be a number\",\n    \"Mutual Indemnification\": \"Mutual Indemnification\",\n    \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement: \": \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement: \",\n    \"NON-BUSYBUSY.COM PROVIDERS\": \"NON-BUSYBUSY.COM PROVIDERS\",\n    \"NOW\": \"NOW\",\n    \"Name\": \"Name\",\n    \"Name is required to update a card.\": \"Name is required to update a card.\",\n    \"Name on Card\": \"Name on Card\",\n    \"Nevermind, I remember my password.\": \"Nevermind, I remember my password.\",\n    \"New Notecard\": \"New Notecard\",\n    \"New Password\": \"New Password\",\n    \"New Position\": \"New Position\",\n    \"New Time Entry\": \"New Time Entry\",\n    \"New project name: \": \"New project name: \",\n    \"Next\": \"Next\",\n    \"Next Payment\": \"Next Payment\",\n    \"No\": \"No\",\n    \"No Cost Codes Found\": \"No Cost Codes Found\",\n    \"No Projects Found\": \"No Projects Found\",\n    \"No Results Found\": \"No Results Found\",\n    \"No Thanks\": \"No Thanks\",\n    \"No Thanks, I Don't Have Employees\": \"No Thanks, I Don't Have Employees\",\n    \"No changes were made\": \"No changes were made\",\n    \"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\": \"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\",\n    \"No locations available\": \"No locations available\",\n    \"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\": \"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\",\n    \"No payroll items set or changed!\": \"No payroll items set or changed!\",\n    \"No results\": \"No results\",\n    \"No subprojects found.\": \"No subprojects found.\",\n    \"No time cards for this date range were found.\": \"No time cards for this date range were found.\",\n    \"No time off entries found for this date range.\": \"No time off entries found for this date range.\",\n    \"Non-busybusy.com Applications\": \"Non-busybusy.com Applications\",\n    \"Non-busybusy.com Applications and Your Data.\": \"Non-busybusy.com Applications and Your Data.\",\n    \"Non-busybusy.com Providers\": \"Non-busybusy.com Providers\",\n    \"None\": \"None\",\n    \"Not Connected\": \"Not Connected\",\n    \"Not Paid\": \"Not Paid\",\n    \"Not Set\": \"Not Set\",\n    \"Note\": \"Note\",\n    \"Notecard\": \"Notecard\",\n    \"Notes: \": \"Notes: \",\n    \"Now click one of the store links below to download the app on your phone.\": \"Now click one of the store links below to download the app on your phone.\",\n    \"Now let's add your employees\": \"Now let's add your employees\",\n    \"O.T. (x1.5)\": \"O.T. (x1.5)\",\n    \"O.T. (x2)\": \"O.T. (x2)\",\n    \"O.T. Hours (x1.5)\": \"O.T. Hours (x1.5)\",\n    \"O.T. Hours (x2)\": \"O.T. Hours (x2)\",\n    \"O.T. Wages (x1.5)\": \"O.T. Wages (x1.5)\",\n    \"O.T. Wages (x2)\": \"O.T. Wages (x2)\",\n    \"OT (x1.5)\": \"OT (x1.5)\",\n    \"OT (x2)\": \"OT (x2)\",\n    \"OT Hours\": \"OT Hours\",\n    \"OT Hours (x1.5)\": \"OT Hours (x1.5)\",\n    \"OT Hours (x2)\": \"OT Hours (x2)\",\n    \"OT1 = %@\": \"OT1 = %@\",\n    \"OT2 = %@\": \"OT2 = %@\",\n    \"OTH\": \"OTH\",\n    \"Off\": \"Off\",\n    \"Once connected to Procore, busybusy will send all time entries, projects, employees and cost codes to Procore automatically for you.\": \"Once connected to Procore, busybusy will send all time entries, projects, employees and cost codes to Procore automatically for you.\",\n    \"Open QuickBooks Web Connector and click \\u201CUpload Application File\\u201D\": \"Open QuickBooks Web Connector and click \\u201CUpload Application File\\u201D\",\n    \"Options\": \"Options\",\n    \"Other\": \"Other\",\n    \"Others with higher position\": \"Others with higher position\",\n    \"Others with lower position\": \"Others with lower position\",\n    \"Others with same position\": \"Others with same position\",\n    \"Our Protection of Your Data.\": \"Our Protection of Your Data.\",\n    \"Our Responsibilities.\": \"Our Responsibilities.\",\n    \"Our Warranties.\": \"Our Warranties.\",\n    \"Overburden %\": \"Overburden %\",\n    \"Overlapping Time\": \"Overlapping Time\",\n    \"Overtime\": \"Overtime\",\n    \"Overtime Cost (x1.5)\": \"Overtime Cost (x1.5)\",\n    \"Overtime Cost (x2)\": \"Overtime Cost (x2)\",\n    \"Overtime Hours\": \"Overtime Hours\",\n    \"Overtime Hours(x1.5)\": \"Overtime Hours(x1.5)\",\n    \"Overtime Hours(x2)\": \"Overtime Hours(x2)\",\n    \"Overtime Period\": \"Overtime Period\",\n    \"Overtime Rules\": \"Overtime Rules\",\n    \"Overtime Rules: \": \"Overtime Rules: \",\n    \"Overtime Settings\": \"Overtime Settings\",\n    \"Overtime X2.0 (OT2)\": \"Overtime X2.0 (OT2)\",\n    \"Overtime x1.5 (OT1)\": \"Overtime x1.5 (OT1)\",\n    \"PROPRIETARY RIGHTS\": \"PROPRIETARY RIGHTS\",\n    \"PTO\": \"PTO\",\n    \"Paid\": \"Paid\",\n    \"Paid Break\": \"Paid Break\",\n    \"Paid Time Off\": \"Paid Time Off\",\n    \"Paid\\/Unpaid\": \"Paid\\/Unpaid\",\n    \"Password\": \"Password\",\n    \"Password is invalid\": \"Password is invalid\",\n    \"Password is invalid.\": \"Password is invalid.\",\n    \"Password must contain at a number, a letter, and be more than 6 characters long.\": \"Password must contain at a number, a letter, and be more than 6 characters long.\",\n    \"Passwords do not match\": \"Passwords do not match\",\n    \"Pay\": \"Pay\",\n    \"Pay Period\": \"Pay Period\",\n    \"Pay Period Settings\": \"Pay Period Settings\",\n    \"Pay Period: \": \"Pay Period: \",\n    \"Pay Rate: \": \"Pay Rate: \",\n    \"Pay period type not found!\": \"Pay period type not found!\",\n    \"Payment Method\": \"Payment Method\",\n    \"Payroll\": \"Payroll\",\n    \"Payroll Items\": \"Payroll Items\",\n    \"Payroll Items Imported\": \"Payroll Items Imported\",\n    \"Payroll Items Updated\": \"Payroll Items Updated\",\n    \"Payroll Mapping\": \"Payroll Mapping\",\n    \"Payroll Rate\": \"Payroll Rate\",\n    \"Payroll Report\": \"Payroll Report\",\n    \"Payroll Type\": \"Payroll Type\",\n    \"Payroll data was not found for this pay period.\": \"Payroll data was not found for this pay period.\",\n    \"Period:  %@\": \"Period:  %@\",\n    \"Personal\": \"Personal\",\n    \"Phone\": \"Phone\",\n    \"Phone Number\": \"Phone Number\",\n    \"Photo\": \"Photo\",\n    \"Photos\": \"Photos\",\n    \"Photos %@\": \"Photos %@\",\n    \"Please fill out all required fields\": \"Please fill out all required fields\",\n    \"Please fill out all required fields.\": \"Please fill out all required fields.\",\n    \"Please fill out the required fields.\": \"Please fill out the required fields.\",\n    \"Please pick a different plan or archive\": \"Please pick a different plan or archive\",\n    \"Please select how many employees your company has.\": \"Please select how many employees your company has.\",\n    \"Please set the expiration date.\": \"Please set the expiration date.\",\n    \"Position\": \"Position\",\n    \"Position must be set before saving\": \"Position must be set before saving\",\n    \"Positions\": \"Positions\",\n    \"Postal Code\": \"Postal Code\",\n    \"Preferences\": \"Preferences\",\n    \"Prev\": \"Prev\",\n    \"Previous\": \"Previous\",\n    \"Print\": \"Print\",\n    \"Print Report\": \"Print Report\",\n    \"Process payroll faster\": \"Process payroll faster\",\n    \"Procore\": \"Procore\",\n    \"Procore Settings\": \"Procore Settings\",\n    \"Profile\": \"Profile\",\n    \"Profile Picture\": \"Profile Picture\",\n    \"Project\": \"Project\",\n    \"Project Budget\": \"Project Budget\",\n    \"Project Details\": \"Project Details\",\n    \"Project Import Error\": \"Project Import Error\",\n    \"Project Import Format Guide\": \"Project Import Format Guide\",\n    \"Project Import Step 1 of 2\": \"Project Import Step 1 of 2\",\n    \"Project Import Step 2 of 2\": \"Project Import Step 2 of 2\",\n    \"Project Information\": \"Project Information\",\n    \"Project Job Costing\": \"Project Job Costing\",\n    \"Project Lvl 1\": \"Project Lvl 1\",\n    \"Project Lvl 2\": \"Project Lvl 2\",\n    \"Project Lvl 3\": \"Project Lvl 3\",\n    \"Project Lvl 4\": \"Project Lvl 4\",\n    \"Project Lvl 5\": \"Project Lvl 5\",\n    \"Project Lvl 6\": \"Project Lvl 6\",\n    \"Project Lvl 7\": \"Project Lvl 7\",\n    \"Project Number\": \"Project Number\",\n    \"Project Payroll Report\": \"Project Payroll Report\",\n    \"Project Summary\": \"Project Summary\",\n    \"Project Time Sheet\": \"Project Time Sheet\",\n    \"Project Title\": \"Project Title\",\n    \"Project title\": \"Project title\",\n    \"Project: \": \"Project: \",\n    \"Project:  \": \"Project:  \",\n    \"Projects\": \"Projects\",\n    \"Projects Export\": \"Projects Export\",\n    \"Projects Import\": \"Projects Import\",\n    \"Projects Imported\": \"Projects Imported\",\n    \"Projects Updated\": \"Projects Updated\",\n    \"Projects use a hierarchical data structure.\": \"Projects use a hierarchical data structure.\",\n    \"Proprietary Rights\": \"Proprietary Rights\",\n    \"Protection of Confidential Information.\": \"Protection of Confidential Information.\",\n    \"Provided by\": \"Provided by\",\n    \"Provided by:  \": \"Provided by:  \",\n    \"Provision of Services\": \"Provision of Services\",\n    \"Questions?\": \"Questions?\",\n    \"QuickBooks\": \"QuickBooks\",\n    \"QuickBooks Payroll\": \"QuickBooks Payroll\",\n    \"QuickBooks Web Connector\": \"QuickBooks Web Connector\",\n    \"REG = %@\": \"REG = %@\",\n    \"Re-type Password\": \"Re-type Password\",\n    \"Recorded:  %@\": \"Recorded:  %@\",\n    \"Reg Hours\": \"Reg Hours\",\n    \"Reg Time\": \"Reg Time\",\n    \"Regional Settings\": \"Regional Settings\",\n    \"Regular\": \"Regular\",\n    \"Regular Cost\": \"Regular Cost\",\n    \"Regular Hours\": \"Regular Hours\",\n    \"Regular Time\": \"Regular Time\",\n    \"Regular Time (REG)\": \"Regular Time (REG)\",\n    \"Regular Wages\": \"Regular Wages\",\n    \"Remaining\": \"Remaining\",\n    \"Remember your password! You'll need it to log into busybusy.\": \"Remember your password! You'll need it to log into busybusy.\",\n    \"Reminders Enabled\": \"Reminders Enabled\",\n    \"Reminders to clock-in\\/out\": \"Reminders to clock-in\\/out\",\n    \"Remove\": \"Remove\",\n    \"Report Setup\": \"Report Setup\",\n    \"Reports\": \"Reports\",\n    \"Request\": \"Request\",\n    \"Require Cost Codes\": \"Require Cost Codes\",\n    \"Require Cost Codes: \": \"Require Cost Codes: \",\n    \"Require Project\": \"Require Project\",\n    \"Require Project: \": \"Require Project: \",\n    \"Reservation of Rights in Services.\": \"Reservation of Rights in Services.\",\n    \"Reset Your Password\": \"Reset Your Password\",\n    \"Resolve\": \"Resolve\",\n    \"Resolved\": \"Resolved\",\n    \"Restrictions.\": \"Restrictions.\",\n    \"Return of Your Data.\": \"Return of Your Data.\",\n    \"Review the 10 most recent imports from Procore to busybusy.\": \"Review the 10 most recent imports from Procore to busybusy.\",\n    \"Review the 10 most recent sync logs on imported and updated data between QuickBooks and busybusy.\": \"Review the 10 most recent sync logs on imported and updated data between QuickBooks and busybusy.\",\n    \"Run Report\": \"Run Report\",\n    \"SAL = %@\": \"SAL = %@\",\n    \"SIC\": \"SIC\",\n    \"Salary (SAL)\": \"Salary (SAL)\",\n    \"Sample File\": \"Sample File\",\n    \"Saturday\": \"Saturday\",\n    \"Saturday Pay Rate\": \"Saturday Pay Rate\",\n    \"Save\": \"Save\",\n    \"Save & Close\": \"Save & Close\",\n    \"Save and Close\": \"Save and Close\",\n    \"Save and Import\": \"Save and Import\",\n    \"Saved \": \"Saved \",\n    \"Saved %@ cost codes successfully!\": \"Saved %@ cost codes successfully!\",\n    \"Saved employees successfully!\": \"Saved employees successfully!\",\n    \"Saving\": \"Saving\",\n    \"Saving...\": \"Saving...\",\n    \"Scheduled Overtime Change\": \"Scheduled Overtime Change\",\n    \"Scheduled Pay Period Change\": \"Scheduled Pay Period Change\",\n    \"Search\": \"Search\",\n    \"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\": \"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\",\n    \"Security Code\": \"Security Code\",\n    \"Select\": \"Select\",\n    \"Select Pay Period\": \"Select Pay Period\",\n    \"Select Period\": \"Select Period\",\n    \"Select a day\": \"Select a day\",\n    \"Select a group\": \"Select a group\",\n    \"Select a pay period\": \"Select a pay period\",\n    \"Select a start time\": \"Select a start time\",\n    \"Select a weekday\": \"Select a weekday\",\n    \"Select an end time\": \"Select an end time\",\n    \"Select breaks\": \"Select breaks\",\n    \"Select cost code\": \"Select cost code\",\n    \"Select description\": \"Select description\",\n    \"Select project\": \"Select project\",\n    \"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\": \"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\",\n    \"Select which day of the week you want your workweek to begin: \": \"Select which day of the week you want your workweek to begin: \",\n    \"Self\": \"Self\",\n    \"Semimonthly\": \"Semimonthly\",\n    \"Semi-monthly\": \"Semi-monthly\",\n    \"Sending data from busybusy to procore requires nothing more than a one-time setup.\": \"Sending data from busybusy to procore requires nothing more than a one-time setup.\",\n    \"Server clock out\": \"Server clock out\",\n    \"Services may be subject to other limitations, such as, for example, limits on disk storage space.\": \"Services may be subject to other limitations, such as, for example, limits on disk storage space.\",\n    \"Set Password\": \"Set Password\",\n    \"Seventh Day Doubletime must be less than daily doubletime!\": \"Seventh Day Doubletime must be less than daily doubletime!\",\n    \"Show Details\": \"Show Details\",\n    \"Show More\": \"Show More\",\n    \"Show less\": \"Show less\",\n    \"Show more\": \"Show more\",\n    \"Sick\": \"Sick\",\n    \"Sign In\": \"Sign In\",\n    \"Sign in\": \"Sign in\",\n    \"Sign in to another account or \": \"Sign in to another account or \",\n    \"Signature\": \"Signature\",\n    \"Since Procore does not support subprojects, busybusy converts subprojects into normal projects inside of Procore, using the using the \\u201C>\\u201D sign to show the busybusy project layers.\": \"Since Procore does not support subprojects, busybusy converts subprojects into normal projects inside of Procore, using the using the \\u201C>\\u201D sign to show the busybusy project layers.\",\n    \"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\": \"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\",\n    \"SkyView Subdivision\": \"SkyView Subdivision\",\n    \"SkyView subdiv\": \"SkyView subdiv\",\n    \"Something went wrong creating your account. Please try again.\": \"Something went wrong creating your account. Please try again.\",\n    \"Something went wrong, Please try again later.\": \"Something went wrong, Please try again later.\",\n    \"Something went wrong, please try again later.\": \"Something went wrong, please try again later.\",\n    \"Something went wrong. Please try again.\": \"Something went wrong. Please try again.\",\n    \"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\": \"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\",\n    \"Sorry, your subscription limit has been reached. If you would like to add additional employees, please go to your\": \"Sorry, your subscription limit has been reached. If you would like to add additional employees, please go to your\",\n    \"Sort asc\": \"Sort asc\",\n    \"Sort desc\": \"Sort desc\",\n    \"Spent\": \"Spent\",\n    \"Standard\": \"Standard\",\n    \"Standard Settings\": \"Standard Settings\",\n    \"Start\": \"Start\",\n    \"Start My 30 Day Free Trial\": \"Start My 30 Day Free Trial\",\n    \"Start My Free 30 Day Trial\": \"Start My Free 30 Day Trial\",\n    \"Start Time\": \"Start Time\",\n    \"Start time\": \"Start time\",\n    \"Start time:  \": \"Start time:  \",\n    \"Starts Over\": \"Starts Over\",\n    \"Starts Over:  %@\": \"Starts Over:  %@\",\n    \"State\": \"State\",\n    \"Status\": \"Status\",\n    \"Status: \": \"Status: \",\n    \"Step 1. Account Information\": \"Step 1. Account Information\",\n    \"Step 1: \": \"Step 1: \",\n    \"Step 2. Company Information\": \"Step 2. Company Information\",\n    \"Step 2: \": \"Step 2: \",\n    \"Step 3. Pay Period Settings\": \"Step 3. Pay Period Settings\",\n    \"Step 3: \": \"Step 3: \",\n    \"Step 4. Overtime Settings\": \"Step 4. Overtime Settings\",\n    \"Step 4: \": \"Step 4: \",\n    \"Step 5: \": \"Step 5: \",\n    \"Step 6: \": \"Step 6: \",\n    \"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\": \"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\",\n    \"Stop\": \"Stop\",\n    \"Stop Time\": \"Stop Time\",\n    \"Storage Capacity\": \"Storage Capacity\",\n    \"Subject\": \"Subject\",\n    \"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\": \"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\",\n    \"Submit\": \"Submit\",\n    \"Submitted by\": \"Submitted by\",\n    \"Submitted on\": \"Submitted on\",\n    \"Subproject Budgets\": \"Subproject Budgets\",\n    \"Subproject Report\": \"Subproject Report\",\n    \"Subproject title\": \"Subproject title\",\n    \"Subprojects\": \"Subprojects\",\n    \"Subscription\": \"Subscription\",\n    \"Subscription Required\": \"Subscription Required\",\n    \"Subtotal\": \"Subtotal\",\n    \"Successfully Saved\": \"Successfully Saved\",\n    \"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\": \"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\",\n    \"Summary\": \"Summary\",\n    \"Sunday\": \"Sunday\",\n    \"Sunday Pay Rate\": \"Sunday Pay Rate\",\n    \"Supervisor \\/ Superintendent\": \"Supervisor \\/ Superintendent\",\n    \"Supervisor\\/Superintendent\": \"Supervisor\\/Superintendent\",\n    \"Surviving Provisions.\": \"Surviving Provisions.\",\n    \"Switch\": \"Switch\",\n    \"Switch Projects\": \"Switch Projects\",\n    \"Sync Log\": \"Sync Log\",\n    \"TERM AND TERMINATION\": \"TERM AND TERMINATION\",\n    \"TEST - Connect\": \"TEST - Connect\",\n    \"TEST - Disconnect\": \"TEST - Disconnect\",\n    \"TEST - Learn More\": \"TEST - Learn More\",\n    \"TEST - Subscribe\": \"TEST - Subscribe\",\n    \"TEST - Upgrade\": \"TEST - Upgrade\",\n    \"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\": \"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\",\n    \"TO\": \"TO\",\n    \"Table of Contents\": \"Table of Contents\",\n    \"Take me to my account\": \"Take me to my account\",\n    \"Take the one minute tour\": \"Take the one minute tour\",\n    \"Term and Termination\": \"Term and Termination\",\n    \"Term of Agreement.\": \"Term of Agreement.\",\n    \"Termination (i) upon 30 days written notice, either party may terminate this agreement.\": \"Termination (i) upon 30 days written notice, either party may terminate this agreement.\",\n    \"Thank You\": \"Thank You\",\n    \"The %@ and %@ of each month\": \"The %@ and %@ of each month\",\n    \"The %@ of each month\": \"The %@ of each month\",\n    \"The Admin Position cannot be deleted.\": \"The Admin Position cannot be deleted.\",\n    \"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\": \"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\",\n    \"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates\\u2019 employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party\\u2019s prior written consent.\": \"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates\\u2019 employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party\\u2019s prior written consent.\",\n    \"The actual costs have exceeded the budgeted amount.\": \"The actual costs have exceeded the budgeted amount.\",\n    \"The actual hours have exceeded the budgeted amount.\": \"The actual hours have exceeded the budgeted amount.\",\n    \"The default card cannot be deleted\": \"The default card cannot be deleted\",\n    \"The email you provided was not associated with any accounts on busybusy.\": \"The email you provided was not associated with any accounts on busybusy.\",\n    \"The following fields can be imported for cost codes: \": \"The following fields can be imported for cost codes: \",\n    \"The following fields can be imported for employees: \": \"The following fields can be imported for employees: \",\n    \"The passwords don't match!\": \"The passwords don't match!\",\n    \"The system has hit an error. Please try again later.\": \"The system has hit an error. Please try again later.\",\n    \"The ticket hash has already been used. Contact your account admin to get a new invatation.\": \"The ticket hash has already been used. Contact your account admin to get a new invatation.\",\n    \"The ticket hash has already been used. You must submit a new password reset request.\": \"The ticket hash has already been used. You must submit a new password reset request.\",\n    \"The total budget for all subprojects is more than the budgeted amount.\": \"The total budget for all subprojects is more than the budgeted amount.\",\n    \"The total hours for all subprojects is more than the budgeted amount.\": \"The total hours for all subprojects is more than the budgeted amount.\",\n    \"The username can be updated in the details tab of the employee\\u2019s profile.\": \"The username can be updated in the details tab of the employee\\u2019s profile.\",\n    \"The username for this employee is not unique, which will prevent the employee from being able to log in.\": \"The username for this employee is not unique, which will prevent the employee from being able to log in.\",\n    \"The username or password is incorrect!\": \"The username or password is incorrect!\",\n    \"The username was not found in the system.\": \"The username was not found in the system.\",\n    \"The wage change failed to delete. Please try again later.\": \"The wage change failed to delete. Please try again later.\",\n    \"Then \": \"Then \",\n    \"There are no entries for this day!\": \"There are no entries for this day!\",\n    \"There was a problem deleting this note card.\": \"There was a problem deleting this note card.\",\n    \"There was a problem processing your payment. Please check your card info and try again.\": \"There was a problem processing your payment. Please check your card info and try again.\",\n    \"There was an error duplicating the project\": \"There was an error duplicating the project\",\n    \"There was an error in your csv file or the system failed to get some required information from the csv file.\": \"There was an error in your csv file or the system failed to get some required information from the csv file.\",\n    \"There was an error starting your subscription!\": \"There was an error starting your subscription!\",\n    \"There was an error submitting your changes! Please try again.\": \"There was an error submitting your changes! Please try again.\",\n    \"There was an error while verifying your account. Please call customer service at 1-855-287-9287.\": \"There was an error while verifying your account. Please call customer service at 1-855-287-9287.\",\n    \"There was an error. Please try again at a later tine.\": \"There was an error. Please try again at a later tine.\",\n    \"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\": \"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\",\n    \"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys\\u2019 fees\": \"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys\\u2019 fees\",\n    \"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\": \"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\",\n    \"This Section 10 (Mutual Indemnification) states the indemnifying party\\u2019s sole liability to, and the indemnified party\\u2019s exclusive remedy against, the other party for any type of claim described in this Section.\": \"This Section 10 (Mutual Indemnification) states the indemnifying party\\u2019s sole liability to, and the indemnified party\\u2019s exclusive remedy against, the other party for any type of claim described in this Section.\",\n    \"This break overlaps another break\": \"This break overlaps another break\",\n    \"This file has more employees than your subscription allows.\": \"This file has more employees than your subscription allows.\",\n    \"This is a premium feature. To integrate with \": \"This is a premium feature. To integrate with \",\n    \"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\",\n    \"This is the address that you must use for any notices to Us.\": \"This is the address that you must use for any notices to Us.\",\n    \"This time entry is too old to edit.\": \"This time entry is too old to edit.\",\n    \"This url has expired or the ticket has already been used to verify this email!\": \"This url has expired or the ticket has already been used to verify this email!\",\n    \"This username is taken. Please choose another.\": \"This username is taken. Please choose another.\",\n    \"Thursday\": \"Thursday\",\n    \"Time\": \"Time\",\n    \"Time & a Half\": \"Time & a Half\",\n    \"Time Card Approval\": \"Time Card Approval\",\n    \"Time Card Conflicts\": \"Time Card Conflicts\",\n    \"Time Card Disclaimer\": \"Time Card Disclaimer\",\n    \"Time Card Disclaimer: \": \"Time Card Disclaimer: \",\n    \"Time Cards\": \"Time Cards\",\n    \"Time Entries\": \"Time Entries\",\n    \"Time Entry\": \"Time Entry\",\n    \"Time Entry Details\": \"Time Entry Details\",\n    \"Time Format\": \"Time Format\",\n    \"Time Keeping\": \"Time Keeping\",\n    \"Time Off\": \"Time Off\",\n    \"Time Off Details\": \"Time Off Details\",\n    \"Time Off Report\": \"Time Off Report\",\n    \"Time Spent\": \"Time Spent\",\n    \"Time and a Half\": \"Time and a Half\",\n    \"Time entry 1\": \"Time entry 1\",\n    \"Time entry 2\": \"Time entry 2\",\n    \"Time entry was started in the future: \": \"Time entry was started in the future: \",\n    \"Title\": \"Title\",\n    \"Today\": \"Today\",\n    \"Today's Breaks\": \"Today's Breaks\",\n    \"Today's Overtime\": \"Today's Overtime\",\n    \"Today's Total\": \"Today's Total\",\n    \"Total\": \"Total\",\n    \"Total Cost\": \"Total Cost\",\n    \"Total Doubletime\": \"Total Doubletime\",\n    \"Total Hours\": \"Total Hours\",\n    \"Total Overtime\": \"Total Overtime\",\n    \"Total Regular Time\": \"Total Regular Time\",\n    \"Total Time\": \"Total Time\",\n    \"Total Time Summary\": \"Total Time Summary\",\n    \"Total Wages\": \"Total Wages\",\n    \"Total budget for all subprojects\": \"Total budget for all subprojects\",\n    \"Total:  \": \"Total:  \",\n    \"Total:  %@\": \"Total:  %@\",\n    \"Totals\": \"Totals\",\n    \"Track Paid Breaks: \": \"Track Paid Breaks: \",\n    \"Track Time for: \": \"Track Time for: \",\n    \"Track time on the job for all your employees\": \"Track time on the job for all your employees\",\n    \"Trade\": \"Trade\",\n    \"True\": \"True\",\n    \"Tuesday\": \"Tuesday\",\n    \"Type\": \"Type\",\n    \"Type*\": \"Type*\",\n    \"Type:  %@\": \"Type:  %@\",\n    \"USD - United States Dollars\": \"USD - United States Dollars\",\n    \"USE OF THE SERVICES\": \"USE OF THE SERVICES\",\n    \"USER AGREEMENT\": \"USER AGREEMENT\",\n    \"Unarchive\": \"Unarchive\",\n    \"Unassigned\": \"Unassigned\",\n    \"Ungroup\": \"Ungroup\",\n    \"Ungrouped\": \"Ungrouped\",\n    \"Unit of Measure\": \"Unit of Measure\",\n    \"Units of Measure\": \"Units of Measure\",\n    \"Unpaid\": \"Unpaid\",\n    \"Unpaid Time Off\": \"Unpaid Time Off\",\n    \"Update\": \"Update\",\n    \"Update Email\": \"Update Email\",\n    \"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\": \"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\",\n    \"Upgrade\": \"Upgrade\",\n    \"Upgrade Account\": \"Upgrade Account\",\n    \"Upgrade Now\": \"Upgrade Now\",\n    \"Upgrade your account to start tracking time for your employees.\": \"Upgrade your account to start tracking time for your employees.\",\n    \"Upload\": \"Upload\",\n    \"Upload Company Photo\": \"Upload Company Photo\",\n    \"Upload File\": \"Upload File\",\n    \"Upload Image to New Collection\": \"Upload Image to New Collection\",\n    \"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\": \"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\",\n    \"Usage Limitations.\": \"Usage Limitations.\",\n    \"Use Pay Period Dates\": \"Use Pay Period Dates\",\n    \"Use of the Services\": \"Use of the Services\",\n    \"Used\": \"Used\",\n    \"Username\": \"Username\",\n    \"Username is required\": \"Username is required\",\n    \"Username must be at least 6 characters with no spaces\": \"Username must be at least 6 characters with no spaces\",\n    \"Username must be at least 6 characters with no spaces.\": \"Username must be at least 6 characters with no spaces.\",\n    \"VAC\": \"VAC\",\n    \"Vacation\": \"Vacation\",\n    \"Validating Please Wait...\": \"Validating Please Wait...\",\n    \"Verification Email Resent\": \"Verification Email Resent\",\n    \"View\": \"View\",\n    \"View Entry History\": \"View Entry History\",\n    \"View GPS\": \"View GPS\",\n    \"View Location\": \"View Location\",\n    \"View Wage history\": \"View Wage history\",\n    \"WARRANTIES AND DISCLAIMERS\": \"WARRANTIES AND DISCLAIMERS\",\n    \"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\": \"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\",\n    \"Wage\": \"Wage\",\n    \"Wage History\": \"Wage History\",\n    \"Wage Rate\": \"Wage Rate\",\n    \"Wage Type\": \"Wage Type\",\n    \"Wage Type: \": \"Wage Type: \",\n    \"Warning\": \"Warning\",\n    \"Warning:  Are you sure you want to Continue?\": \"Warning:  Are you sure you want to Continue?\",\n    \"Warranties and Disclaimers\": \"Warranties and Disclaimers\",\n    \"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\": \"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\",\n    \"We have sent a confirmation email to\": \"We have sent a confirmation email to\",\n    \"We have sent a new confirmation email to\": \"We have sent a new confirmation email to\",\n    \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following:  Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\": \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following:  Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\",\n    \"We sent you an email with a link to reset your password.\": \"We sent you an email with a link to reset your password.\",\n    \"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\"Claim Against You\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\": \"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\"Claim Against You\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\",\n    \"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\": \"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\",\n    \"Wednesday\": \"Wednesday\",\n    \"Weekly\": \"Weekly\",\n    \"Weekly Overtime (wage x 1.5)\": \"Weekly Overtime (wage x 1.5)\",\n    \"Welcome to busybusy\": \"Welcome to busybusy\",\n    \"What day does your monthly pay period begin?\": \"What day does your monthly pay period begin?\",\n    \"What day does your pay period begin?\": \"What day does your pay period begin?\",\n    \"What days do your pay periods begin?\": \"What days do your pay periods begin?\",\n    \"What overtime rules would you like to use?\": \"What overtime rules would you like to use?\",\n    \"What two days does your Semimonthly pay period begin?\": \"What two days does your Semimonthly pay period begin?\",\n    \"What type of break?\": \"What type of break?\",\n    \"What weekday does your biweekly pay period begin?\": \"What weekday does your biweekly pay period begin?\",\n    \"What weekday does your weekly pay period begin?\": \"What weekday does your weekly pay period begin?\",\n    \"When does your work week begin? (e.g. overtime week)\": \"When does your work week begin? (e.g. overtime week)\",\n    \"When would you like this change to take effect?\": \"When would you like this change to take effect?\",\n    \"When you're ready to process payroll, this is where you'll find reports.\": \"When you're ready to process payroll, this is where you'll find reports.\",\n    \"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\": \"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\",\n    \"Which day was or will be your next pay period?\": \"Which day was or will be your next pay period?\",\n    \"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\": \"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\",\n    \"Worked\": \"Worked\",\n    \"Workers' Compensation\": \"Workers' Compensation\",\n    \"Would you like to run an auto-import each day to retrieve any new Procore data?\": \"Would you like to run an auto-import each day to retrieve any new Procore data?\",\n    \"Yearly\": \"Yearly\",\n    \"Yearly (Get 2 months free)\": \"Yearly (Get 2 months free)\",\n    \"Yes\": \"Yes\",\n    \"You are about to downgrade your subscription\": \"You are about to downgrade your subscription\",\n    \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is: \": \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is: \",\n    \"You can also import Procore data to busybusy anytime with our easy to use import feature.\": \"You can also import Procore data to busybusy anytime with our easy to use import feature.\",\n    \"You can only view the Admin Position. Changes will not be saved.\": \"You can only view the Admin Position. Changes will not be saved.\",\n    \"You can't save an overtime period for more than 90 days ago.\": \"You can't save an overtime period for more than 90 days ago.\",\n    \"You cannot delete the default card\": \"You cannot delete the default card\",\n    \"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\": \"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\",\n    \"You must accept the terms and conditions!\": \"You must accept the terms and conditions!\",\n    \"You must fill in the required fields\": \"You must fill in the required fields\",\n    \"You must pick the day of the month your pay period starts on\": \"You must pick the day of the month your pay period starts on\",\n    \"You must pick the day of the week your pay period starts on\": \"You must pick the day of the week your pay period starts on\",\n    \"You must pick the day of your next pay period.\": \"You must pick the day of your next pay period.\",\n    \"You must pick the first day of the month your pay period starts on\": \"You must pick the first day of the month your pay period starts on\",\n    \"You must pick the second day of the month your pay period starts on\": \"You must pick the second day of the month your pay period starts on\",\n    \"You must provide a company name!\": \"You must provide a company name!\",\n    \"You must provide a first name!\": \"You must provide a first name!\",\n    \"You must provide a last name!\": \"You must provide a last name!\",\n    \"You must provide a postal code!\": \"You must provide a postal code!\",\n    \"You must provide a project title.\": \"You must provide a project title.\",\n    \"You must provide a title for this insurance class\": \"You must provide a title for this insurance class\",\n    \"You must provide a username and password!\": \"You must provide a username and password!\",\n    \"You must provide a valid email\": \"You must provide a valid email\",\n    \"You must provide a valid phone number with area code!\": \"You must provide a valid phone number with area code!\",\n    \"You must provide an email to reset your password.\": \"You must provide an email to reset your password.\",\n    \"You must select a later date\": \"You must select a later date\",\n    \"You must select a later date!\": \"You must select a later date!\",\n    \"You must select an insurance type\": \"You must select an insurance type\",\n    \"You must select how often you process payroll\": \"You must select how often you process payroll\",\n    \"You must select when you workweek begins\": \"You must select when you workweek begins\",\n    \"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\"Claim Against Us\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\": \"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\"Claim Against Us\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\",\n    \"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\": \"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\",\n    \"You warrant that You have validly entered into this Agreement and have the legal power to do so.\": \"You warrant that You have validly entered into this Agreement and have the legal power to do so.\",\n    \"You will have control over what items you would like to import, as well as the option of setting up scheduled daily imports that tell busybusy to check Procore for new items and import them without you having to ever lift a finger!\": \"You will have control over what items you would like to import, as well as the option of setting up scheduled daily imports that tell busybusy to check Procore for new items and import them without you having to ever lift a finger!\",\n    \"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\": \"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\",\n    \"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\": \"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\",\n    \"Your File Headers\": \"Your File Headers\",\n    \"Your Responsibilities.\": \"Your Responsibilities.\",\n    \"Your Warranties.\": \"Your Warranties.\",\n    \"Your company account has been created.\": \"Your company account has been created.\",\n    \"Your current employee count is above the limit for this subscription.\": \"Your current employee count is above the limit for this subscription.\",\n    \"Your data should follow the same format.\": \"Your data should follow the same format.\",\n    \"Your email has been verified!\": \"Your email has been verified!\",\n    \"Your password has been reset!\": \"Your password has been reset!\",\n    \"Your passwords do not match!\": \"Your passwords do not match!\",\n    \"Zip or postal Code\": \"Zip or postal Code\",\n    \"after\": \"after\",\n    \"and\": \"and\",\n    \"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under \\u201COur Warranties\\u201D above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\": \"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under \\u201COur Warranties\\u201D above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\",\n    \"and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\",\n    \"and try again.\": \"and try again.\",\n    \"and within that division has a cost code of\": \"and within that division has a cost code of\",\n    \"busybusy Headers\": \"busybusy Headers\",\n    \"busybusy Payroll\": \"busybusy Payroll\",\n    \"click here\": \"click here\",\n    \"clocked-in\": \"clocked-in\",\n    \"exporting will create the following projects inside Procore\": \"exporting will create the following projects inside Procore\",\n    \"file for QuickBooks Web Connector.\": \"file for QuickBooks Web Connector.\",\n    \"go back\": \"go back\",\n    \"hours\": \"hours\",\n    \"hrs \": \"hrs \",\n    \"less than $1\": \"less than $1\",\n    \"less than 1 hour\": \"less than 1 hour\",\n    \"means all electronic data or information submitted by You to the Services.\": \"means all electronic data or information submitted by You to the Services.\",\n    \"means the busybusy.com company described in Section 12.\": \"means the busybusy.com company described in Section 12.\",\n    \"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\": \"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\",\n    \"message\": \"message\",\n    \"mins\": \"mins\",\n    \"next\": \"next\",\n    \"no mapping found\": \"no mapping found\",\n    \"none\": \"none\",\n    \"not set\": \"not set\",\n    \"or call our customer service\": \"or call our customer service\",\n    \"please contact us at legal@busybusy.com\": \"please contact us at legal@busybusy.com\",\n    \"previous\": \"previous\",\n    \"projects successfully!\": \"projects successfully!\",\n    \"select a sync log from the drop down\": \"select a sync log from the drop down\",\n    \"subscription\": \"subscription\",\n    \"terms & conditions\": \"terms & conditions\",\n    \"the following two cost codes will appear in busybusy after importing\": \"the following two cost codes will appear in busybusy after importing\",\n    \"these cost codes\": \"these cost codes\",\n    \"these employees\": \"these employees\",\n    \"to busybusy\": \"to busybusy\",\n    \"to see the required headers.\": \"to see the required headers.\",\n    \"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"to upgrade your subscription. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your subscription. If you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"wage x\": \"wage x\",\n    \"which has a subproject named\": \"which has a subproject named\",\n    \"with the description\": \"with the description\",\n    \"with the title\": \"with the title\",\n    \"with title of\": \"with title of\",\n    \"%@ hrs\": \"%@ hrs\",\n    \"'Clock out at' must be after the start of the time entry\": \"'Clock out at' must be after the start of the time entry\",\n    \"'Clock out' must be set to a time in the past.\": \"'Clock out' must be set to a time in the past.\",\n    \"ANY DATA YOU ENTER INTO THE SERVICES, AND ANY CUSTOMIZATIONS MADE TO THE SERVICES BY OR FOR YOU, WILL BE PERMANENTLY LOST\\n\\t\\t\\t\\t\\tIF YOU DISCONTINUE OUR SERVICES AND DO NOT PERFORM FUNCTIONS TO RETIAN YOUR DATA. IF YOU PURCHASE A SERVICE THAT WOULD BE A\\n\\t\\t\\t\\t\\tDOWNGRADE FROM THAT COVERED BY YOUR CURRENT SERVICE, YOU MUST EXPORT YOUR DATA BEFORE THE DOWNGRADE SERVICE GOES INTO EFFECT OR YOUR\\n\\t\\t\\t\\t\\tDATA WILL BE PERMANENTLY LOST. NOTWITHSTANDING SECTION 8 (WARRANTIES AND DISCLAIMERS), BUSYBUSY IS NOT RESPOSIBLE FOR ANY\\n\\t\\t\\t\\t\\tUSER ERROR IN THE EVENT THAT DATA CREATED OR LOST RESULTS IN ANY LEGAL ISSUES OR LAWSUITS.\": \"ANY DATA YOU ENTER INTO THE SERVICES, AND ANY CUSTOMIZATIONS MADE TO THE SERVICES BY OR FOR YOU, WILL BE PERMANENTLY LOST\\n\\t\\t\\t\\t\\tIF YOU DISCONTINUE OUR SERVICES AND DO NOT PERFORM FUNCTIONS TO RETIAN YOUR DATA. IF YOU PURCHASE A SERVICE THAT WOULD BE A\\n\\t\\t\\t\\t\\tDOWNGRADE FROM THAT COVERED BY YOUR CURRENT SERVICE, YOU MUST EXPORT YOUR DATA BEFORE THE DOWNGRADE SERVICE GOES INTO EFFECT OR YOUR\\n\\t\\t\\t\\t\\tDATA WILL BE PERMANENTLY LOST. NOTWITHSTANDING SECTION 8 (WARRANTIES AND DISCLAIMERS), BUSYBUSY IS NOT RESPOSIBLE FOR ANY\\n\\t\\t\\t\\t\\tUSER ERROR IN THE EVENT THAT DATA CREATED OR LOST RESULTS IN ANY LEGAL ISSUES OR LAWSUITS.\",\n    \"Account\": \"Account\",\n    \"Add New Wage Change\": \"Add New Wage Change\",\n    \"Added Breaks\": \"Added Breaks\",\n    \"All the password fields must be filled out to change a password!\": \"All the password fields must be filled out to change a password!\",\n    \"Allow employees to add or link tasks to this project.\": \"Allow employees to add or link tasks to this project.\",\n    \"Allow team members to clock in to this project\": \"Allow team members to clock in to this project\",\n    \"An error has occurred\": \"An error has occurred\",\n    \"An unknown error has occurred, please try again later!\": \"An unknown error has occurred, please try again later!\",\n    \"Break Added\": \"Break Added\",\n    \"Break Edit\": \"Break Edit\",\n    \"Breaks:   \": \"Breaks:   \",\n    \"By:   %@\": \"By:   %@\",\n    \"By: %@\": \"By: %@\",\n    \"CSV\": \"CSV\",\n    \"CSV Format Guide\": \"CSV Format Guide\",\n    \"CSV Import\": \"CSV Import\",\n    \"CSV Import Preview\": \"CSV Import Preview\",\n    \"Cancel Signature Request\": \"Cancel Signature Request\",\n    \"City:\": \"City:\",\n    \"Copy project structure from:\": \"Copy project structure from:\",\n    \"Copy project structure from:  \": \"Copy project structure from:  \",\n    \"Cost Code:\": \"Cost Code:\",\n    \"Cost Code:   \": \"Cost Code:   \",\n    \"Cost code: \": \"Cost code: \",\n    \"Create PDF to be Signed\": \"Create PDF to be Signed\",\n    \"Created by:\": \"Created by:\",\n    \"Created by:  \": \"Created by:  \",\n    \"Created by: %@\": \"Created by: %@\",\n    \"Created on:  \": \"Created on:  \",\n    \"Created on: %@\": \"Created on: %@\",\n    \"Current\": \"Current\",\n    \"Current Password\": \"Current Password\",\n    \"Daily Time Flag (hours worked until flagged):\": \"Daily Time Flag (hours worked until flagged):\",\n    \"Daily Time Flag (hours worked until flagged):  \": \"Daily Time Flag (hours worked until flagged):  \",\n    \"Daily and\\/or Weekly Overtime\": \"Daily and\\/or Weekly Overtime\",\n    \"Delete this comment:\": \"Delete this comment:\",\n    \"Delete this comment:  \": \"Delete this comment:  \",\n    \"Description:\": \"Description:\",\n    \"Device: %@\": \"Device: %@\",\n    \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to see how to format your data.\": \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to see how to format your data.\",\n    \"Edit Project Budget\": \"Edit Project Budget\",\n    \"Edit Project Budgets\": \"Edit Project Budgets\",\n    \"Edit Time Entries for:\": \"Edit Time Entries for:\",\n    \"Edit Time Entries for:  \": \"Edit Time Entries for:  \",\n    \"Edit breaks\": \"Edit breaks\",\n    \"Edited breaks\": \"Edited breaks\",\n    \"Effective As Of:  \": \"Effective As Of:  \",\n    \"Effective Date:\": \"Effective Date:\",\n    \"Effective Date:  \": \"Effective Date:  \",\n    \"Effective Date: %@\": \"Effective Date: %@\",\n    \"Effective Hourly Rate:\": \"Effective Hourly Rate:\",\n    \"Effective as Of:\": \"Effective as Of:\",\n    \"Effective as Of: \": \"Effective as Of: \",\n    \"Email:\": \"Email:\",\n    \"Employee Location\": \"Employee Location\",\n    \"Enable Cost Codes:\": \"Enable Cost Codes:\",\n    \"Enable Cost Codes:  \": \"Enable Cost Codes:  \",\n    \"End time must be after the Start Time\": \"End time must be after the Start Time\",\n    \"Est. Salary\": \"Est. Salary\",\n    \"Estimated Cost\": \"Estimated Cost\",\n    \"Estimated Hourly Cost:\": \"Estimated Hourly Cost:\",\n    \"Estimated Hourly Cost:  \": \"Estimated Hourly Cost:  \",\n    \"Exp: %@\\/%@\": \"Exp: %@\\/%@\",\n    \"Expected Hours Per Week:\": \"Expected Hours Per Week:\",\n    \"Expected Hours Per Week:  \": \"Expected Hours Per Week:  \",\n    \"File not found, please try again!\": \"File not found, please try again!\",\n    \"First Name:\": \"First Name:\",\n    \"Format\": \"Format\",\n    \"Hide History\": \"Hide History\",\n    \"Hour\": \"Hour\",\n    \"Hours Weekly\": \"Hours Weekly\",\n    \"If You install or enable Non-busybusy.com Applications for use\\n\\t\\t\\t\\twith Services, You acknowledge that We may allow providers of those Non-busybusy.com Applications to access Your Data as required for\\n\\t\\t\\t\\tthe interoperation of such Services. We shall not be responsible for any disclosure, modification or deletion of\\n\\t\\t\\t\\tYour Data resulting from any such access.\": \"If You install or enable Non-busybusy.com Applications for use\\n\\t\\t\\t\\twith Services, You acknowledge that We may allow providers of those Non-busybusy.com Applications to access Your Data as required for\\n\\t\\t\\t\\tthe interoperation of such Services. We shall not be responsible for any disclosure, modification or deletion of\\n\\t\\t\\t\\tYour Data resulting from any such access.\",\n    \"Importing cost codes\": \"Importing cost codes\",\n    \"Items that show red have been altered because of invalid input. The data must be fixed in the csv file and uploaded again or it will be submitted as seen below.\": \"Items that show red have been altered because of invalid input. The data must be fixed in the csv file and uploaded again or it will be submitted as seen below.\",\n    \"Labor Burden:\": \"Labor Burden:\",\n    \"Labor Burden:  \": \"Labor Burden:  \",\n    \"Last Name:\": \"Last Name:\",\n    \"Load More\": \"Load More\",\n    \"Lost connection to the server, please try again!\": \"Lost connection to the server, please try again!\",\n    \"Man Hours\": \"Man Hours\",\n    \"Manage Employees for:\": \"Manage Employees for:\",\n    \"Manage Employees for:  \": \"Manage Employees for:  \",\n    \"Manage Photos posted by:\": \"Manage Photos posted by:\",\n    \"Manage Photos posted by:  \": \"Manage Photos posted by:  \",\n    \"Mapping\": \"Mapping\",\n    \"Move employees, customers, jobs and service items from QuickBooks\\n\\t\\t\\t\\tto busybusy. Send time entries from busybusy to QuickBooks.\": \"Move employees, customers, jobs and service items from QuickBooks\\n\\t\\t\\t\\tto busybusy. Send time entries from busybusy to QuickBooks.\",\n    \"Must be a whole number\": \"Must be a whole number\",\n    \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement:\": \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement:\",\n    \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement:  \": \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement:  \",\n    \"Name & Email\": \"Name & Email\",\n    \"New Note Card\": \"New Note Card\",\n    \"New Password:\": \"New Password:\",\n    \"New project name:\": \"New project name:\",\n    \"No changes were made to the project budget\": \"No changes were made to the project budget\",\n    \"Notes:\": \"Notes:\",\n    \"Notifications\": \"Notifications\",\n    \"Notify me to clock in\": \"Notify me to clock in\",\n    \"O.T. Hours\": \"O.T. Hours\",\n    \"OT Cost\": \"OT Cost\",\n    \"Old Password:\": \"Old Password:\",\n    \"On - all Team Members have access. Off - only the Team Members specified below have access. (Admins always have access)\": \"On - all Team Members have access. Off - only the Team Members specified below have access. (Admins always have access)\",\n    \"On your first sync, active employees, customers, projects,\\n\\t\\t\\t\\tand cost codes will be replaced with data imported from QuickBooks.\\n\\t\\t\\t\\tIf you have any questions, please feel free to contact customer service at (855) 287-9287\": \"On your first sync, active employees, customers, projects,\\n\\t\\t\\t\\tand cost codes will be replaced with data imported from QuickBooks.\\n\\t\\t\\t\\tIf you have any questions, please feel free to contact customer service at (855) 287-9287\",\n    \"Open\": \"Open\",\n    \"Overburden\": \"Overburden\",\n    \"Overtime Rules:\": \"Overtime Rules:\",\n    \"Overtime Rules:  \": \"Overtime Rules:  \",\n    \"Pay Period:\": \"Pay Period:\",\n    \"Pay Period:  \": \"Pay Period:  \",\n    \"Pay Periods\": \"Pay Periods\",\n    \"Pay Rate:\": \"Pay Rate:\",\n    \"Pay Rate:  \": \"Pay Rate:  \",\n    \"Period: %@\": \"Period: %@\",\n    \"Postal Code:\": \"Postal Code:\",\n    \"Preview Employees\": \"Preview Employees\",\n    \"Printable View\": \"Printable View\",\n    \"Project Report\": \"Project Report\",\n    \"Project:\": \"Project:\",\n    \"Provided by: \": \"Provided by: \",\n    \"Recorded: %@\": \"Recorded: %@\",\n    \"Reg. Cost\": \"Reg. Cost\",\n    \"Reg. Hours\": \"Reg. Hours\",\n    \"Remaining Budget\": \"Remaining Budget\",\n    \"Reminders\": \"Reminders\",\n    \"Remove Photo\": \"Remove Photo\",\n    \"Repeat:\": \"Repeat:\",\n    \"Require Cost Codes:\": \"Require Cost Codes:\",\n    \"Require Cost Codes:  \": \"Require Cost Codes:  \",\n    \"Require Project:\": \"Require Project:\",\n    \"Require Project:  \": \"Require Project:  \",\n    \"Reset Password\": \"Reset Password\",\n    \"Retype New Password\": \"Retype New Password\",\n    \"Save Password\": \"Save Password\",\n    \"Select a Photo\": \"Select a Photo\",\n    \"Select which day of the week you want your workweek to begin:\": \"Select which day of the week you want your workweek to begin:\",\n    \"Select which day of the week you want your workweek to begin:  \": \"Select which day of the week you want your workweek to begin:  \",\n    \"Show History\": \"Show History\",\n    \"Signed Timecards\": \"Signed Timecards\",\n    \"Sorry, this is a premium feature.\\n\\t\\t\\tIf you would like to add additional employees, please go to your\": \"Sorry, this is a premium feature.\\n\\t\\t\\tIf you would like to add additional employees, please go to your\",\n    \"Sorry, your subscription limit has been reached.\\n\\t\\t\\tIf you would like to add additional employees, please go to your\": \"Sorry, your subscription limit has been reached.\\n\\t\\t\\tIf you would like to add additional employees, please go to your\",\n    \"Starts Over: %@\": \"Starts Over: %@\",\n    \"State\\/Province:\": \"State\\/Province:\",\n    \"Status:\": \"Status:\",\n    \"Status:  \": \"Status:  \",\n    \"Step 1:\": \"Step 1:\",\n    \"Step 1:  \": \"Step 1:  \",\n    \"Step 2:\": \"Step 2:\",\n    \"Step 2:  \": \"Step 2:  \",\n    \"Step 3:\": \"Step 3:\",\n    \"Step 3:  \": \"Step 3:  \",\n    \"Step 4:\": \"Step 4:\",\n    \"Step 4:  \": \"Step 4:  \",\n    \"Step 5:\": \"Step 5:\",\n    \"Step 5:  \": \"Step 5:  \",\n    \"Step 6:\": \"Step 6:\",\n    \"Step 6:  \": \"Step 6:  \",\n    \"The Services may contain features designed to interoperate with Applications such as\\n\\t\\t\\t\\tGoogle, Facebook or Twitter. To use such features, You may be required to obtain access to such Applications from their providers.\": \"The Services may contain features designed to interoperate with Applications such as\\n\\t\\t\\t\\tGoogle, Facebook or Twitter. To use such features, You may be required to obtain access to such Applications from their providers.\",\n    \"The file contents was empty, and cannot be uploaded!\": \"The file contents was empty, and cannot be uploaded!\",\n    \"The file data size did not match the actual file size!\": \"The file data size did not match the actual file size!\",\n    \"The file is too large to upload!\": \"The file is too large to upload!\",\n    \"The file is too large to upload, please try a smaller file!\": \"The file is too large to upload, please try a smaller file!\",\n    \"The file is too large, please try a smaller file!\": \"The file is too large, please try a smaller file!\",\n    \"The file is too small to upload!\": \"The file is too small to upload!\",\n    \"The file type is unsupported! Supported files are: .jpeg, .bmp .png\": \"The file type is unsupported! Supported files are: .jpeg, .bmp .png\",\n    \"The file upload extension failed!\": \"The file upload extension failed!\",\n    \"The following fields can be imported for cost codes:\": \"The following fields can be imported for cost codes:\",\n    \"The following fields can be imported for cost codes:  \": \"The following fields can be imported for cost codes:  \",\n    \"The following fields can be imported for employees:\": \"The following fields can be imported for employees:\",\n    \"The following fields can be imported for employees:  \": \"The following fields can be imported for employees:  \",\n    \"The new password must be different from the old password!\": \"The new password must be different from the old password!\",\n    \"The new passwords do not match!\": \"The new passwords do not match!\",\n    \"The server encountered an error (failed write to disk), please try again!\": \"The server encountered an error (failed write to disk), please try again!\",\n    \"The server encountered an error (tmp folder missing), please try again!\": \"The server encountered an error (tmp folder missing), please try again!\",\n    \"The username is already in use. Please try again.\": \"The username is already in use. Please try again.\",\n    \"There are no Time Entries for this day!\": \"There are no Time Entries for this day!\",\n    \"There are no changes to save!\": \"There are no changes to save!\",\n    \"There are no time entries in this project during this date range!\": \"There are no time entries in this project during this date range!\",\n    \"There are too many files too upload!\": \"There are too many files too upload!\",\n    \"There was an error saving the budget! Please try again later.\": \"There was an error saving the budget! Please try again later.\",\n    \"There was an error saving the time entry. Please try again.\": \"There was an error saving the time entry. Please try again.\",\n    \"There was an unknown error, please try again later!\": \"There was an unknown error, please try again later!\",\n    \"This Process may take up to eight hours.\\n\\t\\t\\t\\tYou will receive an email when further setup is required.\": \"This Process may take up to eight hours.\\n\\t\\t\\t\\tYou will receive an email when further setup is required.\",\n    \"This is a premium feature. To integrate with QuickBooks,\\n\\t\\t\\tgo to the subsciption tab and select a package with the\\n\\t\\t\\tappropriate number of employees. Your first 30 days are free.\": \"This is a premium feature. To integrate with QuickBooks,\\n\\t\\t\\tgo to the subsciption tab and select a package with the\\n\\t\\t\\tappropriate number of employees. Your first 30 days are free.\",\n    \"Time Card Disclaimer:\": \"Time Card Disclaimer:\",\n    \"Time Card Disclaimer:  \": \"Time Card Disclaimer:  \",\n    \"Time entry was started in the future:\": \"Time entry was started in the future:\",\n    \"Time entry was started in the future:  \": \"Time entry was started in the future:  \",\n    \"Total Budget\": \"Total Budget\",\n    \"Total Overtime (x1.5)\": \"Total Overtime (x1.5)\",\n    \"Total Overtime (x2)\": \"Total Overtime (x2)\",\n    \"Total: \": \"Total: \",\n    \"Total: %@\": \"Total: %@\",\n    \"Track Time for:\": \"Track Time for:\",\n    \"Track Time for:  \": \"Track Time for:  \",\n    \"Type: %@\": \"Type: %@\",\n    \"Unsigned Timecards\": \"Unsigned Timecards\",\n    \"View PDF\": \"View PDF\",\n    \"Wage Type:\": \"Wage Type:\",\n    \"Wage Type:  \": \"Wage Type:  \",\n    \"Wage\\/Salary\": \"Wage\\/Salary\",\n    \"Warning: Are you sure you want to Continue?\": \"Warning: Are you sure you want to Continue?\",\n    \"We or third parties may from time to time make available to You\\n\\t\\t\\t\\tthird-party products or services. Any acquisition by You of such products or services, and any exchange of data between You and any other\\n\\t\\t\\t\\tentity, is solely between You and the applicable provider. We do not warrant or support non-busybusy.com products or services.\": \"We or third parties may from time to time make available to You\\n\\t\\t\\t\\tthird-party products or services. Any acquisition by You of such products or services, and any exchange of data between You and any other\\n\\t\\t\\t\\tentity, is solely between You and the applicable provider. We do not warrant or support non-busybusy.com products or services.\",\n    \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following: Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\": \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following: Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\",\n    \"We will (i) provide basic support for the Services to You at no charge (ii) make available to\\n\\t\\t\\t\\tyou paid services as provided on the website from time to time, for which the charges are explained on the website (iii) use commercially\\n\\t\\t\\t\\treasonable efforts to make the Services available 24 hours a day, 7 days a week, except for: (a) planned downtime (of which We shall give\\n\\t\\t\\t\\tat least 8 hours notice, or (b) any unavailability caused by circumstances beyond Our reasonable control, including without limitation,\\n\\t\\t\\t\\tacts of God, acts of government, floods, fires, earthquakes, civil unrest, acts of terror, strikes or other labor problems (other than\\n\\t\\t\\t\\tthose involving Our employees), Internet service provider failures or delays, or denial of service attacks, and (iv) provide the\\n\\t\\t\\t\\tServices only in accordance with applicable laws and government regulations.\": \"We will (i) provide basic support for the Services to You at no charge (ii) make available to\\n\\t\\t\\t\\tyou paid services as provided on the website from time to time, for which the charges are explained on the website (iii) use commercially\\n\\t\\t\\t\\treasonable efforts to make the Services available 24 hours a day, 7 days a week, except for: (a) planned downtime (of which We shall give\\n\\t\\t\\t\\tat least 8 hours notice, or (b) any unavailability caused by circumstances beyond Our reasonable control, including without limitation,\\n\\t\\t\\t\\tacts of God, acts of government, floods, fires, earthquakes, civil unrest, acts of terror, strikes or other labor problems (other than\\n\\t\\t\\t\\tthose involving Our employees), Internet service provider failures or delays, or denial of service attacks, and (iv) provide the\\n\\t\\t\\t\\tServices only in accordance with applicable laws and government regulations.\",\n    \"We will maintain appropriate administrative, physical, and technical safeguards for\\n\\t\\t\\t\\tprotection of the security, confidentiality and integrity of Your Data. We shall not (a) modify Your Data, (b) disclose Your Data except\\n\\t\\t\\t\\tas compelled by law in accordance with Section 8.3 (Compelled Disclosure) or as expressly permitted in writing by You, or (c) access Your\\n\\t\\t\\t\\tData except to provide the Services and prevent or address service or technical problems, or at Your request in connection with\\n\\t\\t\\t\\tcustomer support matters.\": \"We will maintain appropriate administrative, physical, and technical safeguards for\\n\\t\\t\\t\\tprotection of the security, confidentiality and integrity of Your Data. We shall not (a) modify Your Data, (b) disclose Your Data except\\n\\t\\t\\t\\tas compelled by law in accordance with Section 8.3 (Compelled Disclosure) or as expressly permitted in writing by You, or (c) access Your\\n\\t\\t\\t\\tData except to provide the Services and prevent or address service or technical problems, or at Your request in connection with\\n\\t\\t\\t\\tcustomer support matters.\",\n    \"We will make the Services available to You as they become available as for which You have subscribed. This includes access to the Free Services.\\n\\t\\t\\tOnce You have opened an account, you can open a business or personal workspaces and give access to others to operate within it.\\n\\t\\t\\tAs additional features are developed within the subscription area that You have purchased, You will be given access for your business\\n\\t\\t\\tpurposes. As additional subscription services are developed, You will be advised that the same are available, and You may expand your\\n\\t\\t\\tsubscription to include such services. In the event that you discontinue any services with Us, you will be given notice of a timeframe during\\n\\t\\t\\twhich You may capture any data that You have placed in the system if you do not desire to continue with the paid services. Your use hereunder are\\n\\t\\t\\tneither contingent on the delivery of any future functionality or features nor dependent on any oral or written public comments made by Us regarding future functionality or features.\": \"We will make the Services available to You as they become available as for which You have subscribed. This includes access to the Free Services.\\n\\t\\t\\tOnce You have opened an account, you can open a business or personal workspaces and give access to others to operate within it.\\n\\t\\t\\tAs additional features are developed within the subscription area that You have purchased, You will be given access for your business\\n\\t\\t\\tpurposes. As additional subscription services are developed, You will be advised that the same are available, and You may expand your\\n\\t\\t\\tsubscription to include such services. In the event that you discontinue any services with Us, you will be given notice of a timeframe during\\n\\t\\t\\twhich You may capture any data that You have placed in the system if you do not desire to continue with the paid services. Your use hereunder are\\n\\t\\t\\tneither contingent on the delivery of any future functionality or features nor dependent on any oral or written public comments made by Us regarding future functionality or features.\",\n    \"We will try to match employee data between busybusy and QuickBooks.\\n\\t\\t\\t\\t\\tBefore syncing make sure first and last names are spelled the same in both programs.\": \"We will try to match employee data between busybusy and QuickBooks.\\n\\t\\t\\t\\t\\tBefore syncing make sure first and last names are spelled the same in both programs.\",\n    \"What is your projected man hours for this project?\": \"What is your projected man hours for this project?\",\n    \"What is your projected total budget for this project?\": \"What is your projected total budget for this project?\",\n    \"Worker's Compensation\": \"Worker's Compensation\",\n    \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is:\": \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is:\",\n    \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is:  \": \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is:  \",\n    \"You must choose different options for \\\"Regular Time\\\" and \\\"Double Time\\\"\": \"You must choose different options for \\\"Regular Time\\\" and \\\"Double Time\\\"\",\n    \"You must choose different options for \\\"Regular Time\\\" and \\\"Time & a Half\\\"\": \"You must choose different options for \\\"Regular Time\\\" and \\\"Time & a Half\\\"\",\n    \"You must choose different options for \\\"Time & a Half\\\" and \\\"Double Time\\\"\": \"You must choose different options for \\\"Time & a Half\\\" and \\\"Double Time\\\"\",\n    \"You must provide a username!\": \"You must provide a username!\",\n    \"You must provide an email!\": \"You must provide an email!\",\n    \"You must set all payroll categories before continuing.\": \"You must set all payroll categories before continuing.\",\n    \"You shall (i) be responsible for Users\\u2019 compliance with this Agreement. This means that\\n\\t\\t\\t\\tif You create a business or personal workspace for others to interact on, each of them must open an account, and be\\n\\t\\t\\t\\tresponsible for compliance with these Terms and Conditions, (ii) be responsible for the accuracy, quality and legality of Your Data and\\n\\t\\t\\t\\tof the means by which You acquired Your Data, (iii) use commercially reasonable efforts to prevent unauthorized access to or use of the\\n\\t\\t\\t\\tServices, and notify Us promptly of any such unauthorized access or use, and (iv) use the Services only in accordance with the\\n\\t\\t\\t\\tinformation presented on the website, any User Guide and applicable laws and government regulations. You shall not (a) make the Services\\n\\t\\t\\t\\tavailable to anyone other than Users, (b) sell, resell, rent or lease the Services, (c) use the Services to store or transmit infringing,\\n\\t\\t\\t\\tlibelous, or otherwise unlawful or tortious material, or to store or transmit material in violation of third-party privacy rights, (d) use\\n\\t\\t\\t\\tthe Services to store or transmit Malicious Code, (e) interfere with or disrupt the integrity or performance of the Services or third-party\\n\\t\\t\\t\\tdata contained therein, or (f) attempt to gain unauthorized access to the Services or their related systems or networks. You must advise\\n\\t\\t\\t\\tUsers on any business workspace which you create, that when Users interface in that business workspace, enter time, upload pictures,\\n\\t\\t\\t\\tor post any other data, that You will be collecting that data and using it for analysis, trending, other business purposes, and\\n\\t\\t\\t\\tincluding GPS (global positioning system) stamping.\": \"You shall (i) be responsible for Users\\u2019 compliance with this Agreement. This means that\\n\\t\\t\\t\\tif You create a business or personal workspace for others to interact on, each of them must open an account, and be\\n\\t\\t\\t\\tresponsible for compliance with these Terms and Conditions, (ii) be responsible for the accuracy, quality and legality of Your Data and\\n\\t\\t\\t\\tof the means by which You acquired Your Data, (iii) use commercially reasonable efforts to prevent unauthorized access to or use of the\\n\\t\\t\\t\\tServices, and notify Us promptly of any such unauthorized access or use, and (iv) use the Services only in accordance with the\\n\\t\\t\\t\\tinformation presented on the website, any User Guide and applicable laws and government regulations. You shall not (a) make the Services\\n\\t\\t\\t\\tavailable to anyone other than Users, (b) sell, resell, rent or lease the Services, (c) use the Services to store or transmit infringing,\\n\\t\\t\\t\\tlibelous, or otherwise unlawful or tortious material, or to store or transmit material in violation of third-party privacy rights, (d) use\\n\\t\\t\\t\\tthe Services to store or transmit Malicious Code, (e) interfere with or disrupt the integrity or performance of the Services or third-party\\n\\t\\t\\t\\tdata contained therein, or (f) attempt to gain unauthorized access to the Services or their related systems or networks. You must advise\\n\\t\\t\\t\\tUsers on any business workspace which you create, that when Users interface in that business workspace, enter time, upload pictures,\\n\\t\\t\\t\\tor post any other data, that You will be collecting that data and using it for analysis, trending, other business purposes, and\\n\\t\\t\\t\\tincluding GPS (global positioning system) stamping.\",\n    \"break\": \"break\",\n    \"busybusy has three payroll categories: Regular Time, Time &amp; a Half and Double Time.\\n\\t\\t\\t\\t\\tPlease match the appropriate QuickBooks payroll categroies with the corresponding busybusy payroll\\n\\t\\t\\t\\t\\tcategories.\": \"busybusy has three payroll categories: Regular Time, Time &amp; a Half and Double Time.\\n\\t\\t\\t\\t\\tPlease match the appropriate QuickBooks payroll categroies with the corresponding busybusy payroll\\n\\t\\t\\t\\t\\tcategories.\",\n    \"clock outs failed because the end time is in the future.\": \"clock outs failed because the end time is in the future.\",\n    \"clock outs failed because the end time was before the start time.\": \"clock outs failed because the end time was before the start time.\",\n    \"cost codes successfully!\": \"cost codes successfully!\",\n    \"errorMessage\": \"errorMessage\",\n    \"hour\": \"hour\",\n    \"hrs\": \"hrs\",\n    \"hrs \\/week\": \"hrs \\/week\",\n    \"means Services that You or Your affiliates, agents, employers,\\n\\t\\t\\t\\tconsultants, contractors, or other 3rd parties which will give You access, purchase from busybusy.com.\": \"means Services that You or Your affiliates, agents, employers,\\n\\t\\t\\t\\tconsultants, contractors, or other 3rd parties which will give You access, purchase from busybusy.com.\",\n    \"means You, the company or other legal entity for which you are accepting this\\n\\t\\t\\t\\tAgreement, and Affiliates, employees, agents, consultants, contractors or other third parties who You give access to, for that company or entity.\": \"means You, the company or other legal entity for which you are accepting this\\n\\t\\t\\t\\tAgreement, and Affiliates, employees, agents, consultants, contractors or other third parties who You give access to, for that company or entity.\",\n    \"means any entity which directly or indirectly controls,\\n\\t\\t\\t\\tis controlled by, or is under common control with the subject entity. Control, for purposes of this definition,\\n\\t\\t\\t\\tmeans direct or indirect ownership or control of more than 50% of the voting interests of the subject entity.\": \"means any entity which directly or indirectly controls,\\n\\t\\t\\t\\tis controlled by, or is under common control with the subject entity. Control, for purposes of this definition,\\n\\t\\t\\t\\tmeans direct or indirect ownership or control of more than 50% of the voting interests of the subject entity.\",\n    \"means individuals who are authorized by You to use the Services, for whom subscriptions to a\\n\\t\\t\\t\\tService have been ordered, and who have been supplied user identifications and passwords by You (or by Us at Your request).\\n\\t\\t\\t\\tUsers may include but are not limited to Your employees, consultants, contractors and agents, and third parties with which You transact business.\": \"means individuals who are authorized by You to use the Services, for whom subscriptions to a\\n\\t\\t\\t\\tService have been ordered, and who have been supplied user identifications and passwords by You (or by Us at Your request).\\n\\t\\t\\t\\tUsers may include but are not limited to Your employees, consultants, contractors and agents, and third parties with which You transact business.\",\n    \"means online applications and offline software products\\n\\t\\t\\t\\tthat are provided by entities or individuals other than Us and are clearly identified as such, and that interoperate with the busybusy.com site.\": \"means online applications and offline software products\\n\\t\\t\\t\\tthat are provided by entities or individuals other than Us and are clearly identified as such, and that interoperate with the busybusy.com site.\",\n    \"means the online directory of applications that interoperate with the\\n\\t\\t\\t\\tbusybusy.com site, busy-located within the busybusy.com site or at any successor websites.\": \"means the online directory of applications that interoperate with the\\n\\t\\t\\t\\tbusybusy.com site, busy-located within the busybusy.com site or at any successor websites.\",\n    \"means the products and services that are available on the busybusy.com site\\n\\t\\t\\t\\tand made available by Us online. \\u201CServices\\u201D exclude Non-busybusy.com Applications.\": \"means the products and services that are available on the busybusy.com site\\n\\t\\t\\t\\tand made available by Us online. \\u201CServices\\u201D exclude Non-busybusy.com Applications.\",\n    \"month\": \"month\",\n    \"save\": \"save\",\n    \"to upgrade your account.\\n\\t\\t\\tIf you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your account.\\n\\t\\t\\tIf you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"to upgrade your subscription.\\n\\t\\t\\tIf you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your subscription.\\n\\t\\t\\tIf you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"week\": \"week\",\n    \"year\": \"year\",\n    \"yr\": \"yr\",\n    \"AED -  United Arab Emirates dirham\": \"AED -  United Arab Emirates dirham\",\n    \"AFN -  Afghan afghani\": \"AFN -  Afghan afghani\",\n    \"ALL -  Albanian lek\": \"ALL -  Albanian lek\",\n    \"AMD -  Armenian dram\": \"AMD -  Armenian dram\",\n    \"ANG -  Netherlands Antillean guilder\": \"ANG -  Netherlands Antillean guilder\",\n    \"AOA -  Angolan kwanza\": \"AOA -  Angolan kwanza\",\n    \"ARS -  Argentine peso\": \"ARS -  Argentine peso\",\n    \"AUD -  Australian dollar\": \"AUD -  Australian dollar\",\n    \"AWG -  Aruban florin\": \"AWG -  Aruban florin\",\n    \"AZN -  Azerbaijani manat\": \"AZN -  Azerbaijani manat\",\n    \"BAM -  Bosnia and Herzegovina convertible mark\": \"BAM -  Bosnia and Herzegovina convertible mark\",\n    \"BBD -  Barbados dollar\": \"BBD -  Barbados dollar\",\n    \"BDT -  Bangladeshi taka\": \"BDT -  Bangladeshi taka\",\n    \"BGN -  Bulgarian lev\": \"BGN -  Bulgarian lev\",\n    \"BHD -  Bahraini dinar\": \"BHD -  Bahraini dinar\",\n    \"BIF -  Burundian franc\": \"BIF -  Burundian franc\",\n    \"BMD -  Bermudian dollar\": \"BMD -  Bermudian dollar\",\n    \"BND -  Brunei dollar\": \"BND -  Brunei dollar\",\n    \"BOB -  Boliviano\": \"BOB -  Boliviano\",\n    \"BRL -  Brazilian real\": \"BRL -  Brazilian real\",\n    \"BSD -  Bahamian dollar\": \"BSD -  Bahamian dollar\",\n    \"BTN -  Bhutanese ngultrum\": \"BTN -  Bhutanese ngultrum\",\n    \"BWP -  Botswana pula\": \"BWP -  Botswana pula\",\n    \"BYR -  Belarusian ruble\": \"BYR -  Belarusian ruble\",\n    \"BZD -  Belize dollar\": \"BZD -  Belize dollar\",\n    \"CAD -  Canadian dollar\": \"CAD -  Canadian dollar\",\n    \"CDF -  Congolese franc\": \"CDF -  Congolese franc\",\n    \"CHF -  Swiss franc\": \"CHF -  Swiss franc\",\n    \"CLP -  Chilean peso\": \"CLP -  Chilean peso\",\n    \"CNY -  Chinese yuan\": \"CNY -  Chinese yuan\",\n    \"COP -  Colombian peso\": \"COP -  Colombian peso\",\n    \"COU -  Unidad de Valor Real\": \"COU -  Unidad de Valor Real\",\n    \"CRC -  Costa Rican colon\": \"CRC -  Costa Rican colon\",\n    \"CUC -  Cuban convertible peso\": \"CUC -  Cuban convertible peso\",\n    \"CUP -  Cuban peso\": \"CUP -  Cuban peso\",\n    \"CVE -  Cape Verde escudo\": \"CVE -  Cape Verde escudo\",\n    \"CZK -  Czech koruna\": \"CZK -  Czech koruna\",\n    \"DJF -  Djiboutian franc\": \"DJF -  Djiboutian franc\",\n    \"DKK -  Danish krone\": \"DKK -  Danish krone\",\n    \"DOP -  Dominican peso\": \"DOP -  Dominican peso\",\n    \"DZD -  Algerian dinar\": \"DZD -  Algerian dinar\",\n    \"EGP -  Egyptian pound\": \"EGP -  Egyptian pound\",\n    \"ERN -  Eritrean nakfa\": \"ERN -  Eritrean nakfa\",\n    \"ETB -  Ethiopian birr\": \"ETB -  Ethiopian birr\",\n    \"EUR -  Euro\": \"EUR -  Euro\",\n    \"FJD -  Fiji dollar\": \"FJD -  Fiji dollar\",\n    \"FKP -  Falkland Islands pound\": \"FKP -  Falkland Islands pound\",\n    \"GBP -  Pound sterling\": \"GBP -  Pound sterling\",\n    \"GEL -  Georgian lari\": \"GEL -  Georgian lari\",\n    \"GHS -  Ghanaian cedi\": \"GHS -  Ghanaian cedi\",\n    \"GIP -  Gibraltar pound\": \"GIP -  Gibraltar pound\",\n    \"GMD -  Gambian dalasi\": \"GMD -  Gambian dalasi\",\n    \"GNF -  Guinean franc\": \"GNF -  Guinean franc\",\n    \"GTQ -  Guatemalan quetzal\": \"GTQ -  Guatemalan quetzal\",\n    \"GYD -  Guyanese dollar\": \"GYD -  Guyanese dollar\",\n    \"HKD -  Hong Kong dollar\": \"HKD -  Hong Kong dollar\",\n    \"HNL -  Honduran lempira\": \"HNL -  Honduran lempira\",\n    \"HRK -  Croatian kuna\": \"HRK -  Croatian kuna\",\n    \"HTG -  Haitian gourde\": \"HTG -  Haitian gourde\",\n    \"HUF -  Hungarian forint\": \"HUF -  Hungarian forint\",\n    \"IDR -  Indonesian rupiah\": \"IDR -  Indonesian rupiah\",\n    \"ILS -  Israeli new shekel\": \"ILS -  Israeli new shekel\",\n    \"INR -  Indian rupee\": \"INR -  Indian rupee\",\n    \"IQD -  Iraqi dinar\": \"IQD -  Iraqi dinar\",\n    \"IRR -  Iranian rial\": \"IRR -  Iranian rial\",\n    \"ISK -  Icelandic kr\\xF3na\": \"ISK -  Icelandic kr\\xF3na\",\n    \"JMD -  Jamaican dollar\": \"JMD -  Jamaican dollar\",\n    \"JOD -  Jordanian dinar\": \"JOD -  Jordanian dinar\",\n    \"JPY -  Japanese yen\": \"JPY -  Japanese yen\",\n    \"KES -  Kenyan shilling\": \"KES -  Kenyan shilling\",\n    \"KGS -  Kyrgyzstani som\": \"KGS -  Kyrgyzstani som\",\n    \"KHR -  Cambodian riel\": \"KHR -  Cambodian riel\",\n    \"KMF -  Comoro franc\": \"KMF -  Comoro franc\",\n    \"KPW -  North Korean won\": \"KPW -  North Korean won\",\n    \"KRW -  South Korean won\": \"KRW -  South Korean won\",\n    \"KWD -  Kuwaiti dinar\": \"KWD -  Kuwaiti dinar\",\n    \"KYD -  Cayman Islands dollar\": \"KYD -  Cayman Islands dollar\",\n    \"KZT -  Kazakhstani tenge\": \"KZT -  Kazakhstani tenge\",\n    \"LAK -  Lao kip\": \"LAK -  Lao kip\",\n    \"LBP -  Lebanese pound\": \"LBP -  Lebanese pound\",\n    \"LKR -  Sri Lankan rupee\": \"LKR -  Sri Lankan rupee\",\n    \"LRD -  Liberian dollar\": \"LRD -  Liberian dollar\",\n    \"LSL -  Lesotho loti\": \"LSL -  Lesotho loti\",\n    \"LTL -  Lithuanian litas\": \"LTL -  Lithuanian litas\",\n    \"LVL -  Latvian lats\": \"LVL -  Latvian lats\",\n    \"LYD -  Libyan dinar\": \"LYD -  Libyan dinar\",\n    \"MAD -  Moroccan dirham\": \"MAD -  Moroccan dirham\",\n    \"MDL -  Moldovan leu\": \"MDL -  Moldovan leu\",\n    \"MKD -  Macedonian denar\": \"MKD -  Macedonian denar\",\n    \"MMK -  Myanma kyat\": \"MMK -  Myanma kyat\",\n    \"MNT -  Mongolian tugrik\": \"MNT -  Mongolian tugrik\",\n    \"MOP -  Macanese pataca\": \"MOP -  Macanese pataca\",\n    \"MUR -  Mauritian rupee\": \"MUR -  Mauritian rupee\",\n    \"MVR -  Maldivian rufiyaa\": \"MVR -  Maldivian rufiyaa\",\n    \"MWK -  Malawian kwacha\": \"MWK -  Malawian kwacha\",\n    \"MXN -  Mexican peso\": \"MXN -  Mexican peso\",\n    \"MYR -  Malaysian ringgit\": \"MYR -  Malaysian ringgit\",\n    \"MZN -  Mozambican metical\": \"MZN -  Mozambican metical\",\n    \"NAD -  Namibian dollar\": \"NAD -  Namibian dollar\",\n    \"NGN -  Nigerian naira\": \"NGN -  Nigerian naira\",\n    \"NIO -  Nicaraguan c\\xF3rdoba\": \"NIO -  Nicaraguan c\\xF3rdoba\",\n    \"NOK -  Norwegian krone\": \"NOK -  Norwegian krone\",\n    \"NPR -  Nepalese rupee\": \"NPR -  Nepalese rupee\",\n    \"NZD -  New Zealand dollar\": \"NZD -  New Zealand dollar\",\n    \"OMR -  Omani rial\": \"OMR -  Omani rial\",\n    \"PAB -  Panamanian balboa\": \"PAB -  Panamanian balboa\",\n    \"PEN -  Peruvian nuevo sol\": \"PEN -  Peruvian nuevo sol\",\n    \"PGK -  Papua New Guinean kina\": \"PGK -  Papua New Guinean kina\",\n    \"PHP -  Philippine peso\": \"PHP -  Philippine peso\",\n    \"PKR -  Pakistani rupee\": \"PKR -  Pakistani rupee\",\n    \"PLN -  Polish z\\u0142oty\": \"PLN -  Polish z\\u0142oty\",\n    \"PYG -  Paraguayan guaran\\xED\": \"PYG -  Paraguayan guaran\\xED\",\n    \"QAR -  Qatari riyal\": \"QAR -  Qatari riyal\",\n    \"RON -  Romanian new leu\": \"RON -  Romanian new leu\",\n    \"RSD -  Serbian dinar\": \"RSD -  Serbian dinar\",\n    \"RUB -  Russian rouble\": \"RUB -  Russian rouble\",\n    \"RWF -  Rwandan franc\": \"RWF -  Rwandan franc\",\n    \"SAR -  Saudi riyal\": \"SAR -  Saudi riyal\",\n    \"SBD -  Solomon Islands dollar\": \"SBD -  Solomon Islands dollar\",\n    \"SCR -  Seychelles rupee\": \"SCR -  Seychelles rupee\",\n    \"SDG -  Sudanese pound\": \"SDG -  Sudanese pound\",\n    \"SEK -  Swedish krona\\/kronor\": \"SEK -  Swedish krona\\/kronor\",\n    \"SGD -  Singapore dollar\": \"SGD -  Singapore dollar\",\n    \"SHP -  Saint Helena pound\": \"SHP -  Saint Helena pound\",\n    \"SLL -  Sierra Leonean leone\": \"SLL -  Sierra Leonean leone\",\n    \"SOS -  Somali shilling\": \"SOS -  Somali shilling\",\n    \"SRD -  Surinamese dollar\": \"SRD -  Surinamese dollar\",\n    \"SSP -  South Sudanese pound\": \"SSP -  South Sudanese pound\",\n    \"STD -  S\\xE3o Tom\\xE9 and Pr\\xEDncipe dobra\": \"STD -  S\\xE3o Tom\\xE9 and Pr\\xEDncipe dobra\",\n    \"SYP -  Syrian pound\": \"SYP -  Syrian pound\",\n    \"SZL -  Swazi lilangeni\": \"SZL -  Swazi lilangeni\",\n    \"THB -  Thai baht\": \"THB -  Thai baht\",\n    \"TJS -  Tajikistani somoni\": \"TJS -  Tajikistani somoni\",\n    \"TMT -  Turkmenistani manat\": \"TMT -  Turkmenistani manat\",\n    \"TND -  Tunisian dinar\": \"TND -  Tunisian dinar\",\n    \"TOP -  Tongan pa\\u02BBanga\": \"TOP -  Tongan pa\\u02BBanga\",\n    \"TRY -  Turkish lira\": \"TRY -  Turkish lira\",\n    \"TTD -  Trinidad and Tobago dollar\": \"TTD -  Trinidad and Tobago dollar\",\n    \"TWD -  New Taiwan dollar\": \"TWD -  New Taiwan dollar\",\n    \"TZS -  Tanzanian shilling\": \"TZS -  Tanzanian shilling\",\n    \"UAH -  Ukrainian hryvnia\": \"UAH -  Ukrainian hryvnia\",\n    \"UGX -  Ugandan shilling\": \"UGX -  Ugandan shilling\",\n    \"USD -  United States dollar\": \"USD -  United States dollar\",\n    \"UYI -  Uruguay Peso en Unidades Indexadas\": \"UYI -  Uruguay Peso en Unidades Indexadas\",\n    \"UYU -  Uruguayan peso\": \"UYU -  Uruguayan peso\",\n    \"UZS -  Uzbekistan som\": \"UZS -  Uzbekistan som\",\n    \"VEF -  Venezuelan bol\\xEDvar\": \"VEF -  Venezuelan bol\\xEDvar\",\n    \"VND -  Vietnamese dong\": \"VND -  Vietnamese dong\",\n    \"VUV -  Vanuatu vatu\": \"VUV -  Vanuatu vatu\",\n    \"WST -  Samoan tala\": \"WST -  Samoan tala\",\n    \"XAF -  CFA franc BEAC\": \"XAF -  CFA franc BEAC\",\n    \"XBT -  Bitcoin\": \"XBT -  Bitcoin\",\n    \"XCD -  East Caribbean dollar\": \"XCD -  East Caribbean dollar\",\n    \"XOF -  CFA franc BCEAO\": \"XOF -  CFA franc BCEAO\",\n    \"XPF -  CFP franc (Franc du Pacifique)\": \"XPF -  CFP franc (Franc du Pacifique)\",\n    \"YER -  Yemeni rial\": \"YER -  Yemeni rial\",\n    \"ZAR -  South African rand\": \"ZAR -  South African rand\",\n    \"ZMW -  Zambian kwacha\": \"ZMW -  Zambian kwacha\"\n  };\n});","define(\"busy-app/langs/en\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    \" to see how to format your data.\": \" to see how to format your data.\",\n    \"\\\"Affiliate\\\"\": \"\\\"Affiliate\\\"\",\n    \"\\\"AppExchange\\\"\": \"\\\"AppExchange\\\"\",\n    \"\\\"Malicious Code\\\"\": \"\\\"Malicious Code\\\"\",\n    \"\\\"Purchased Services\\\"\": \"\\\"Purchased Services\\\"\",\n    \"\\\"Services\\\"\": \"\\\"Services\\\"\",\n    \"\\\"Users\\\"\": \"\\\"Users\\\"\",\n    \"\\\"We,\\\" \\\"Us\\\" or \\\"Our\\\"\": \"\\\"We,\\\" \\\"Us\\\" or \\\"Our\\\"\",\n    \"\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"\": \"\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"\",\n    \"\\\"You\\\" or \\\"Your\\\"\": \"\\\"You\\\" or \\\"Your\\\"\",\n    \"\\\"Your Data\\\"\": \"\\\"Your Data\\\"\",\n    \"$%@\": \"$%@\",\n    \"%\": \"%\",\n    \"%@ Days\": \"%@ Days\",\n    \"%@ Days Unpaid\": \"%@ Days Unpaid\",\n    \"%@ Ending in %@\": \"%@ Ending in %@\",\n    \"%@ Hours\": \"%@ Hours\",\n    \"%@ Hrs\": \"%@ Hrs\",\n    \"%@ Hrs %@ Mins\": \"%@ Hrs %@ Mins\",\n    \"%@ Hrs %@ Mins %@ Secs\": \"%@ Hrs %@ Mins %@ Secs\",\n    \"%@ Hrs Paid\": \"%@ Hrs Paid\",\n    \"%@ Job Costing\": \"%@ Job Costing\",\n    \"%@ employees updated\": \"%@ employees updated\",\n    \"%@ ending in %@\": \"%@ ending in %@\",\n    \"%@ hours\": \"%@ hours\",\n    \"%@ time %@ with conflicts.\": \"%@ time %@ with conflicts.\",\n    \"%@%\": \"%@%\",\n    \"(Upcoming)\": \"(Upcoming)\",\n    \"(can add, edit, and remove employees and can set their wage, position, etc.)\": \"(can add, edit, and remove employees and can set their wage, position, etc.)\",\n    \"(can clock in, clock out, and take breaks)\": \"(can clock in, clock out, and take breaks)\",\n    \"(can create and edit time entries)\": \"(can create and edit time entries)\",\n    \"(can remove photos or edit notes)\": \"(can remove photos or edit notes)\",\n    \"*<b>Project Name<\\/b> is required.\": \"*<b>Project Name<\\/b> is required.\",\n    \"*Cost Code #, Description and Unit of Measure are required.\": \"*Cost Code #, Description and Unit of Measure are required.\",\n    \"*Only the first and last names are required.\": \"*Only the first and last names are required.\",\n    \", go to the\": \", go to the\",\n    \"\\/hour\": \"\\/hour\",\n    \"\\/hr\": \"\\/hr\",\n    \"\\/month\": \"\\/month\",\n    \"\\/week\": \"\\/week\",\n    \"\\/year\": \"\\/year\",\n    \"1 hour\": \"1 hour\",\n    \"10 hours\": \"10 hours\",\n    \"11 hours\": \"11 hours\",\n    \"12 hours\": \"12 hours\",\n    \"2 hours\": \"2 hours\",\n    \"3 Parent Projects\": \"3 Parent Projects\",\n    \"3 hours\": \"3 hours\",\n    \"4 hours\": \"4 hours\",\n    \"5 hours\": \"5 hours\",\n    \"6 hours\": \"6 hours\",\n    \"7 hours\": \"7 hours\",\n    \"7477 W. Lake Mead Blvd\": \"7477 W. Lake Mead Blvd\",\n    \"7th Day Doubletime (wage x 2.0)\": \"7th Day Doubletime (wage x 2.0)\",\n    \"7th Day Overtime (wage x 1.5)\": \"7th Day Overtime (wage x 1.5)\",\n    \"7th Day Overtime (wage x 2.0)\": \"7th Day Overtime (wage x 2.0)\",\n    \"7th Day Overtime needs to be less hours than Daily Doubletime.\": \"7th Day Overtime needs to be less hours than Daily Doubletime.\",\n    \"8 hours\": \"8 hours\",\n    \"9 hours\": \"9 hours\",\n    \"<b>Manage Budgets<\\/b> (can view, add, edit, and remove budgets)\": \"<b>Manage Budgets<\\/b> (can view, add, edit, and remove budgets)\",\n    \"<b>Manage Company Settings<\\/b> (can manage settings for the whole company)\": \"<b>Manage Company Settings<\\/b> (can manage settings for the whole company)\",\n    \"<b>Manage Cost Codes<\\/b> (can add, edit, and remove cost codes, and groups)\": \"<b>Manage Cost Codes<\\/b> (can add, edit, and remove cost codes, and groups)\",\n    \"<b>Manage Employee Groups<\\/b> (can arrange employees into group)\": \"<b>Manage Employee Groups<\\/b> (can arrange employees into group)\",\n    \"<b>Manage Projects<\\/b> (can add, edit, and remove projects, subprojects, and groups)\": \"<b>Manage Projects<\\/b> (can add, edit, and remove projects, subprojects, and groups)\",\n    \"<b>Paid<\\/b>\": \"<b>Paid<\\/b>\",\n    \"<b>View Expenses<\\/b> (can see money spent on projects and paid to employees)\": \"<b>View Expenses<\\/b> (can see money spent on projects and paid to employees)\",\n    \"A Plan Must Be Selected!\": \"A Plan Must Be Selected!\",\n    \"A conflicting time entry was merged into this time entry.\": \"A conflicting time entry was merged into this time entry.\",\n    \"A paid \": \"A paid \",\n    \"A report breakdown of the hours and cost spent per employee.\": \"A report breakdown of the hours and cost spent per employee.\",\n    \"A report breakdown of the hours and cost spent per subproject.\": \"A report breakdown of the hours and cost spent per subproject.\",\n    \"A report for comparing this projects budget to the actual cost of the project.\": \"A report for comparing this projects budget to the actual cost of the project.\",\n    \"A report for cost code costs by pay period.\": \"A report for cost code costs by pay period.\",\n    \"A report for employee costs by pay period.\": \"A report for employee costs by pay period.\",\n    \"A report for employee information.\": \"A report for employee information.\",\n    \"A report for employee payroll by pay period.\": \"A report for employee payroll by pay period.\",\n    \"A report for employee time cards by date range.\": \"A report for employee time cards by date range.\",\n    \"A report for employee time off by date range.\": \"A report for employee time off by date range.\",\n    \"A report for project by employee.\": \"A report for project by employee.\",\n    \"A report for project costs by pay period.\": \"A report for project costs by pay period.\",\n    \"A time card entry was submitted for %@ that overlaps an existing entry.\": \"A time card entry was submitted for %@ that overlaps an existing entry.\",\n    \"A time card entry was submitted for you that overlaps an existing entry.\": \"A time card entry was submitted for you that overlaps an existing entry.\",\n    \"A time off entry exists for %@ on this day.\": \"A time off entry exists for %@ on this day.\",\n    \"A time off entry exists for one or more employees on this day.\": \"A time off entry exists for one or more employees on this day.\",\n    \"AED -  United Arab Emirates dirham\": \"AED -  United Arab Emirates dirham\",\n    \"AFN -  Afghan afghani\": \"AFN -  Afghan afghani\",\n    \"ALL -  Albanian lek\": \"ALL -  Albanian lek\",\n    \"AMD -  Armenian dram\": \"AMD -  Armenian dram\",\n    \"ANG -  Netherlands Antillean guilder\": \"ANG -  Netherlands Antillean guilder\",\n    \"AOA -  Angolan kwanza\": \"AOA -  Angolan kwanza\",\n    \"ARS -  Argentine peso\": \"ARS -  Argentine peso\",\n    \"AUD -  Australian dollar\": \"AUD -  Australian dollar\",\n    \"AWG -  Aruban florin\": \"AWG -  Aruban florin\",\n    \"AZN -  Azerbaijani manat\": \"AZN -  Azerbaijani manat\",\n    \"About\": \"About\",\n    \"Account Error\": \"Account Error\",\n    \"Account Information\": \"Account Information\",\n    \"Account Settings\": \"Account Settings\",\n    \"Acquisition of Non-busybusy.com Products and Services.\": \"Acquisition of Non-busybusy.com Products and Services.\",\n    \"Actions\": \"Actions\",\n    \"Activity Log\": \"Activity Log\",\n    \"Actual\": \"Actual\",\n    \"Add\": \"Add\",\n    \"Add Break\": \"Add Break\",\n    \"Add Card\": \"Add Card\",\n    \"Add Comment\": \"Add Comment\",\n    \"Add Cost Code\": \"Add Cost Code\",\n    \"Add Employee\": \"Add Employee\",\n    \"Add Insurance Class\": \"Add Insurance Class\",\n    \"Add Position\": \"Add Position\",\n    \"Add Project\": \"Add Project\",\n    \"Add Subproject\": \"Add Subproject\",\n    \"Add Time Off\": \"Add Time Off\",\n    \"Add a Company\": \"Add a Company\",\n    \"Add a description for this note...\": \"Add a description for this note...\",\n    \"Add new group\": \"Add new group\",\n    \"Address\": \"Address\",\n    \"Address \": \"Address \",\n    \"Address 1\": \"Address 1\",\n    \"Address 2\": \"Address 2\",\n    \"All \": \"All \",\n    \"All Cost Codes\": \"All Cost Codes\",\n    \"All Employees\": \"All Employees\",\n    \"All Locations\": \"All Locations\",\n    \"All Projects\": \"All Projects\",\n    \"All conflicts have been resolved\": \"All conflicts have been resolved\",\n    \"All errors must be fixed before moving on\": \"All errors must be fixed before moving on\",\n    \"All errors must be fixed before moving on.\": \"All errors must be fixed before moving on.\",\n    \"All time\": \"All time\",\n    \"Always know your labor costs by tracking the time spent on each project.\": \"Always know your labor costs by tracking the time spent on each project.\",\n    \"Amount\": \"Amount\",\n    \"An error occurred! Please try again later.\": \"An error occurred! Please try again later.\",\n    \"An existing Procore account\": \"An existing Procore account\",\n    \"Annual Billing\": \"Annual Billing\",\n    \"Any previously sent emails are no longer valid.\": \"Any previously sent emails are no longer valid.\",\n    \"Archive\": \"Archive\",\n    \"Archive Project\": \"Archive Project\",\n    \"Archive Projects\": \"Archive Projects\",\n    \"Archive Subproject\": \"Archive Subproject\",\n    \"Archive Subprojects\": \"Archive Subprojects\",\n    \"Archived\": \"Archived\",\n    \"Are you a business looking to get started with busybusy?\": \"Are you a business looking to get started with busybusy?\",\n    \"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\": \"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\",\n    \"Are you sure you want to %@ this?\": \"Are you sure you want to %@ this?\",\n    \"Are you sure you want to archive\": \"Are you sure you want to archive\",\n    \"Are you sure you want to delete this entry?\": \"Are you sure you want to delete this entry?\",\n    \"Are you sure you want to delete this time entry?\": \"Are you sure you want to delete this time entry?\",\n    \"Are you sure you want to delete this time off entry?\": \"Are you sure you want to delete this time off entry?\",\n    \"Are you sure you want to delete this wage change?\": \"Are you sure you want to delete this wage change?\",\n    \"Are you sure you want to delete this?\": \"Are you sure you want to delete this?\",\n    \"Are you sure you want to stop syncing with Procore?\": \"Are you sure you want to stop syncing with Procore?\",\n    \"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\": \"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\",\n    \"Are you sure you want to take this action?\": \"Are you sure you want to take this action?\",\n    \"Are you sure?\": \"Are you sure?\",\n    \"As used herein, \\\"Confidential Information\\\" means all confidential information disclosed by a party (\\\"Disclosing Party\\\") to the other party (\\\"Receiving Party\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other\\u2019s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\": \"As used herein, \\\"Confidential Information\\\" means all confidential information disclosed by a party (\\\"Disclosing Party\\\") to the other party (\\\"Receiving Party\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other\\u2019s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\",\n    \"Authentication token not provided\": \"Authentication token not provided\",\n    \"Automatic Import Settings\": \"Automatic Import Settings\",\n    \"BAM -  Bosnia and Herzegovina convertible mark\": \"BAM -  Bosnia and Herzegovina convertible mark\",\n    \"BBD -  Barbados dollar\": \"BBD -  Barbados dollar\",\n    \"BDT -  Bangladeshi taka\": \"BDT -  Bangladeshi taka\",\n    \"BGN -  Bulgarian lev\": \"BGN -  Bulgarian lev\",\n    \"BHD -  Bahraini dinar\": \"BHD -  Bahraini dinar\",\n    \"BIF -  Burundian franc\": \"BIF -  Burundian franc\",\n    \"BMD -  Bermudian dollar\": \"BMD -  Bermudian dollar\",\n    \"BND -  Brunei dollar\": \"BND -  Brunei dollar\",\n    \"BOB -  Boliviano\": \"BOB -  Boliviano\",\n    \"BRL -  Brazilian real\": \"BRL -  Brazilian real\",\n    \"BSD -  Bahamian dollar\": \"BSD -  Bahamian dollar\",\n    \"BTN -  Bhutanese ngultrum\": \"BTN -  Bhutanese ngultrum\",\n    \"BWP -  Botswana pula\": \"BWP -  Botswana pula\",\n    \"BYR -  Belarusian ruble\": \"BYR -  Belarusian ruble\",\n    \"BZD -  Belize dollar\": \"BZD -  Belize dollar\",\n    \"Back\": \"Back\",\n    \"Bar Chart\": \"Bar Chart\",\n    \"Basic\": \"Basic\",\n    \"Before adding your employees, you first need to upgrade your account. It's free for 30 days, so you can see how easy we make payroll processing and job costing.\": \"Before adding your employees, you first need to upgrade your account. It's free for 30 days, so you can see how easy we make payroll processing and job costing.\",\n    \"Beginning\": \"Beginning\",\n    \"Below is an example of some projects.\": \"Below is an example of some projects.\",\n    \"Biweekly\": \"Biweekly\",\n    \"Bi-weekly\": \"Bi-weekly\",\n    \"Both\": \"Both\",\n    \"Break %@\": \"Break %@\",\n    \"Break End overlaps future Break Start Time.\": \"Break End overlaps future Break Start Time.\",\n    \"Break Start must be before Break End.\": \"Break Start must be before Break End.\",\n    \"Break Start overlaps previous Break End Time.\": \"Break Start overlaps previous Break End Time.\",\n    \"Break Time\": \"Break Time\",\n    \"Break conflict resolution\": \"Break conflict resolution\",\n    \"Break deleted\": \"Break deleted\",\n    \"Break deleted by conflict resolution\": \"Break deleted by conflict resolution\",\n    \"Break end\": \"Break end\",\n    \"Break end @ \": \"Break end @ \",\n    \"Break end location\": \"Break end location\",\n    \"Break end time must be before the time entry end time.\": \"Break end time must be before the time entry end time.\",\n    \"Break start\": \"Break start\",\n    \"Break start @ \": \"Break start @ \",\n    \"Break start is outside the entry start time\": \"Break start is outside the entry start time\",\n    \"Break start location\": \"Break start location\",\n    \"Break start or end overlaps another break\": \"Break start or end overlaps another break\",\n    \"Break start time must be after the time entry start time.\": \"Break start time must be after the time entry start time.\",\n    \"Break stop is outside the entry stop time\": \"Break stop is outside the entry stop time\",\n    \"Breaks\": \"Breaks\",\n    \"Breaks:  \": \"Breaks:  \",\n    \"Budget Used\": \"Budget Used\",\n    \"Budget vs Actual\": \"Budget vs Actual\",\n    \"Budget vs. Actual\": \"Budget vs. Actual\",\n    \"Budgeted\": \"Budgeted\",\n    \"Build Deck\": \"Build Deck\",\n    \"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\": \"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\",\n    \"By:  %@\": \"By:  %@\",\n    \"CAD -  Canadian dollar\": \"CAD -  Canadian dollar\",\n    \"CDF -  Congolese franc\": \"CDF -  Congolese franc\",\n    \"CHF -  Swiss franc\": \"CHF -  Swiss franc\",\n    \"CLP -  Chilean peso\": \"CLP -  Chilean peso\",\n    \"CNY -  Chinese yuan\": \"CNY -  Chinese yuan\",\n    \"CONFIDENTIALITY\": \"CONFIDENTIALITY\",\n    \"COP -  Colombian peso\": \"COP -  Colombian peso\",\n    \"COU -  Unidad de Valor Real\": \"COU -  Unidad de Valor Real\",\n    \"CRC -  Costa Rican colon\": \"CRC -  Costa Rican colon\",\n    \"CUC -  Cuban convertible peso\": \"CUC -  Cuban convertible peso\",\n    \"CUP -  Cuban peso\": \"CUP -  Cuban peso\",\n    \"CVE -  Cape Verde escudo\": \"CVE -  Cape Verde escudo\",\n    \"CZK -  Czech koruna\": \"CZK -  Czech koruna\",\n    \"California\": \"California\",\n    \"California Settings\": \"California Settings\",\n    \"Call us at 1-855-287-9287\": \"Call us at 1-855-287-9287\",\n    \"Cancel\": \"Cancel\",\n    \"Card Number\": \"Card Number\",\n    \"Card Number cannot be blank.\": \"Card Number cannot be blank.\",\n    \"Card Number is Invalid\": \"Card Number is Invalid\",\n    \"Card Number is Invalid. Please check your number and try again.\": \"Card Number is Invalid. Please check your number and try again.\",\n    \"Card was declined. Please check your card and try again.\": \"Card was declined. Please check your card and try again.\",\n    \"Cash Allowances\": \"Cash Allowances\",\n    \"Change\": \"Change\",\n    \"Change Collection Project\": \"Change Collection Project\",\n    \"Change Current Overtime\": \"Change Current Overtime\",\n    \"Change Current Wage\": \"Change Current Wage\",\n    \"Change Overtime Period\": \"Change Overtime Period\",\n    \"Change Overtime Rules\": \"Change Overtime Rules\",\n    \"Change Password\": \"Change Password\",\n    \"Change Pay Period\": \"Change Pay Period\",\n    \"Choose File\": \"Choose File\",\n    \"Choose Photos\": \"Choose Photos\",\n    \"Choose a file to upload.\": \"Choose a file to upload.\",\n    \"Choose busybusy.qwc downloaded in Step 2\": \"Choose busybusy.qwc downloaded in Step 2\",\n    \"City\": \"City\",\n    \"Click here\": \"Click here\",\n    \"Click here to set up your company.\": \"Click here to set up your company.\",\n    \"Click here to start tracking your time\": \"Click here to start tracking your time\",\n    \"Click here to view conflicting time entry history\": \"Click here to view conflicting time entry history\",\n    \"Click save and wait for busybusy Integration Status to say \\u201CConnected\\u201D.\": \"Click save and wait for busybusy Integration Status to say \\u201CConnected\\u201D.\",\n    \"Click the verification link in the email to get started with busybusy.\": \"Click the verification link in the email to get started with busybusy.\",\n    \"Clock In\": \"Clock In\",\n    \"Clock In At\": \"Clock In At\",\n    \"Clock Out\": \"Clock Out\",\n    \"Clock Out At\": \"Clock Out At\",\n    \"Clock in\": \"Clock in\",\n    \"Clock in at\": \"Clock in at\",\n    \"Clock in at location\": \"Clock in at location\",\n    \"Clock in location\": \"Clock in location\",\n    \"Clock out\": \"Clock out\",\n    \"Clock out at\": \"Clock out at\",\n    \"Clock out at location\": \"Clock out at location\",\n    \"Clock out location\": \"Clock out location\",\n    \"Clocked In @ \": \"Clocked In @ \",\n    \"Clocked Out @ \": \"Clocked Out @ \",\n    \"Clocking In\": \"Clocking In\",\n    \"Close\": \"Close\",\n    \"Close add group\": \"Close add group\",\n    \"Collapse All\": \"Collapse All\",\n    \"Columns\": \"Columns\",\n    \"Company Information\": \"Company Information\",\n    \"Company Logo\": \"Company Logo\",\n    \"Company Name\": \"Company Name\",\n    \"Company Position\": \"Company Position\",\n    \"Company Settings\": \"Company Settings\",\n    \"Company Setup\": \"Company Setup\",\n    \"Company Size\": \"Company Size\",\n    \"Company name\": \"Company name\",\n    \"Compelled Disclosure.\": \"Compelled Disclosure.\",\n    \"Concrete\": \"Concrete\",\n    \"Confidentiality\": \"Confidentiality\",\n    \"Confirm %@\": \"Confirm %@\",\n    \"Confirm Delete\": \"Confirm Delete\",\n    \"Confirm Password\": \"Confirm Password\",\n    \"Conflict %@\\/%@\": \"Conflict %@\\/%@\",\n    \"Conflict resolution\": \"Conflict resolution\",\n    \"Conflicting History\": \"Conflicting History\",\n    \"Congratulations!\": \"Congratulations!\",\n    \"Connect\": \"Connect\",\n    \"Connect to Procore\": \"Connect to Procore\",\n    \"Connect to QuickBooks\": \"Connect to QuickBooks\",\n    \"Connected\": \"Connected\",\n    \"Connecting with Procore will automatically export busybusy employees, projects, cost codes and time entries to Procore.\": \"Connecting with Procore will automatically export busybusy employees, projects, cost codes and time entries to Procore.\",\n    \"Connection Error\": \"Connection Error\",\n    \"Contact Information\": \"Contact Information\",\n    \"Continue\": \"Continue\",\n    \"Copy project structure from: \": \"Copy project structure from: \",\n    \"Cost\": \"Cost\",\n    \"Cost Code\": \"Cost Code\",\n    \"Cost Code #\": \"Cost Code #\",\n    \"Cost Code Export\": \"Cost Code Export\",\n    \"Cost Code Import\": \"Cost Code Import\",\n    \"Cost Code Import Error\": \"Cost Code Import Error\",\n    \"Cost Code Import Step 1 of 3\": \"Cost Code Import Step 1 of 3\",\n    \"Cost Code Import Step 2 of 3\": \"Cost Code Import Step 2 of 3\",\n    \"Cost Code Import Step 3 of 3\": \"Cost Code Import Step 3 of 3\",\n    \"Cost Code Information\": \"Cost Code Information\",\n    \"Cost Code Job Costing\": \"Cost Code Job Costing\",\n    \"Cost Code: \": \"Cost Code: \",\n    \"Cost Code:  \": \"Cost Code:  \",\n    \"Cost Codes\": \"Cost Codes\",\n    \"Cost Codes Imported\": \"Cost Codes Imported\",\n    \"Cost Codes Updated\": \"Cost Codes Updated\",\n    \"Cost code\": \"Cost code\",\n    \"Cost code is required.\": \"Cost code is required.\",\n    \"Cost code number is required for all imported cost codes. There were %@ missing cost code numbers. Please check your uploaded file and try again.\": \"Cost code number is required for all imported cost codes. There were %@ missing cost code numbers. Please check your uploaded file and try again.\",\n    \"Coupon Code\": \"Coupon Code\",\n    \"Coupon Discount\": \"Coupon Discount\",\n    \"Create a row for each of the colored end projects.\": \"Create a row for each of the colored end projects.\",\n    \"Created By\": \"Created By\",\n    \"Created by: \": \"Created by: \",\n    \"Created by:  %@\": \"Created by:  %@\",\n    \"Created on: \": \"Created on: \",\n    \"Created on:  %@\": \"Created on:  %@\",\n    \"Credit Card\": \"Credit Card\",\n    \"Currency\": \"Currency\",\n    \"Current Activity\": \"Current Activity\",\n    \"Current Overtime\": \"Current Overtime\",\n    \"Current Overtime Period\": \"Current Overtime Period\",\n    \"Current Wage\": \"Current Wage\",\n    \"Currently Importing...\": \"Currently Importing...\",\n    \"Custom\": \"Custom\",\n    \"Custom Settings\": \"Custom Settings\",\n    \"Customer\": \"Customer\",\n    \"DEFINITIONS\": \"DEFINITIONS\",\n    \"DJF -  Djiboutian franc\": \"DJF -  Djiboutian franc\",\n    \"DKK -  Danish krone\": \"DKK -  Danish krone\",\n    \"DOP -  Dominican peso\": \"DOP -  Dominican peso\",\n    \"DZD -  Algerian dinar\": \"DZD -  Algerian dinar\",\n    \"Daily\": \"Daily\",\n    \"Daily By Project\": \"Daily By Project\",\n    \"Daily Doubletime must be greater than daily overtime!\": \"Daily Doubletime must be greater than daily overtime!\",\n    \"Daily Overtime (wage x 1.5)\": \"Daily Overtime (wage x 1.5)\",\n    \"Daily Overtime (wage x 2.0)\": \"Daily Overtime (wage x 2.0)\",\n    \"Daily Overtime needs to be less hours than Daily Doubletime.\": \"Daily Overtime needs to be less hours than Daily Doubletime.\",\n    \"Daily Time Flag (hours worked until flagged)\": \"Daily Time Flag (hours worked until flagged)\",\n    \"Daily Time Flag (hours worked until flagged): \": \"Daily Time Flag (hours worked until flagged): \",\n    \"Daily Total\": \"Daily Total\",\n    \"Dashboard\": \"Dashboard\",\n    \"Data not yet imported.\": \"Data not yet imported.\",\n    \"Date\": \"Date\",\n    \"Date Range\": \"Date Range\",\n    \"Day\": \"Day\",\n    \"Definition of Confidential Information.\": \"Definition of Confidential Information.\",\n    \"Definitions\": \"Definitions\",\n    \"Delete\": \"Delete\",\n    \"Delete Collection\": \"Delete Collection\",\n    \"Delete Comment\": \"Delete Comment\",\n    \"Delete this Collection?\": \"Delete this Collection?\",\n    \"Delete this comment: \": \"Delete this comment: \",\n    \"Deleted\": \"Deleted\",\n    \"Deleted by conflict resolution\": \"Deleted by conflict resolution\",\n    \"Deleted successfuly\": \"Deleted successfuly\",\n    \"Deleting Position\": \"Deleting Position\",\n    \"Deleting note card...\": \"Deleting note card...\",\n    \"Deleting...\": \"Deleting...\",\n    \"Description\": \"Description\",\n    \"Description is required for all imported cost codes. There were %@ missing descriptions. Please check your uploaded file and try again.\": \"Description is required for all imported cost codes. There were %@ missing descriptions. Please check your uploaded file and try again.\",\n    \"Description: \": \"Description: \",\n    \"Description:  \": \"Description:  \",\n    \"Details\": \"Details\",\n    \"Details:  \": \"Details:  \",\n    \"Device:  %@\": \"Device:  %@\",\n    \"Disclaimer.\": \"Disclaimer.\",\n    \"Disconnect\": \"Disconnect\",\n    \"Disconnect from QuickBooks\": \"Disconnect from QuickBooks\",\n    \"Disconnecting\": \"Disconnecting\",\n    \"Doe Residence\": \"Doe Residence\",\n    \"Don't worry, you can cancel at any time.\": \"Don't worry, you can cancel at any time.\",\n    \"Done\": \"Done\",\n    \"Double Time\": \"Double Time\",\n    \"Doubletime\": \"Doubletime\",\n    \"Downgrade\": \"Downgrade\",\n    \"Downgrade to Free\": \"Downgrade to Free\",\n    \"Downgrading will archive your team, but will allow you to maintain access to the company tools and data.\": \"Downgrading will archive your team, but will allow you to maintain access to the company tools and data.\",\n    \"Download\": \"Download\",\n    \"Download and install\": \"Download and install\",\n    \"Download our\": \"Download our\",\n    \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to get started.\": \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to get started.\",\n    \"Drag Positions up or down\": \"Drag Positions up or down\",\n    \"Drag a file or click here to change your photo.\": \"Drag a file or click here to change your photo.\",\n    \"Drag a file or click here to upload a photo.\": \"Drag a file or click here to upload a photo.\",\n    \"Drag files or click here to change your photos.\": \"Drag files or click here to change your photos.\",\n    \"Drag files or click here to upload a photos.\": \"Drag files or click here to upload a photos.\",\n    \"Drag files or click here to upload files\": \"Drag files or click here to upload files\",\n    \"Duplicate\": \"Duplicate\",\n    \"Duplicate Project\": \"Duplicate Project\",\n    \"Duration\": \"Duration\",\n    \"E Street Garage\": \"E Street Garage\",\n    \"EGP -  Egyptian pound\": \"EGP -  Egyptian pound\",\n    \"END of User Agreement\": \"END of User Agreement\",\n    \"ERN -  Eritrean nakfa\": \"ERN -  Eritrean nakfa\",\n    \"ETB -  Ethiopian birr\": \"ETB -  Ethiopian birr\",\n    \"EUR -  Euro\": \"EUR -  Euro\",\n    \"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\": \"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\",\n    \"Edit\": \"Edit\",\n    \"Edit Break\": \"Edit Break\",\n    \"Edit Card\": \"Edit Card\",\n    \"Edit Company Profile\": \"Edit Company Profile\",\n    \"Edit Cost Code\": \"Edit Cost Code\",\n    \"Edit Current Entry\": \"Edit Current Entry\",\n    \"Edit Date\": \"Edit Date\",\n    \"Edit Details\": \"Edit Details\",\n    \"Edit Insurance Class\": \"Edit Insurance Class\",\n    \"Edit Locked\": \"Edit Locked\",\n    \"Edit No Changes Made\": \"Edit No Changes Made\",\n    \"Edit Notecard\": \"Edit Notecard\",\n    \"Edit Photo\": \"Edit Photo\",\n    \"Edit Position\": \"Edit Position\",\n    \"Edit Profile\": \"Edit Profile\",\n    \"Edit Project\": \"Edit Project\",\n    \"Edit Subscription\": \"Edit Subscription\",\n    \"Edit Time Entries for: \": \"Edit Time Entries for: \",\n    \"Edit Time Entry\": \"Edit Time Entry\",\n    \"Edit Time Off\": \"Edit Time Off\",\n    \"Edit Time Off Entry\": \"Edit Time Off Entry\",\n    \"Edited break\": \"Edited break\",\n    \"Effective As Of: \": \"Effective As Of: \",\n    \"Effective Date\": \"Effective Date\",\n    \"Effective Date: \": \"Effective Date: \",\n    \"Effective Date:  %@\": \"Effective Date:  %@\",\n    \"Effective Hourly Rate: \": \"Effective Hourly Rate: \",\n    \"Effective Hourly Rate:  \": \"Effective Hourly Rate:  \",\n    \"Eliminate Paper Time Cards\": \"Eliminate Paper Time Cards\",\n    \"Email\": \"Email\",\n    \"Email must be a vaild email address.\": \"Email must be a vaild email address.\",\n    \"Employee\": \"Employee\",\n    \"Employee Cost\": \"Employee Cost\",\n    \"Employee ID\": \"Employee ID\",\n    \"Employee Id\": \"Employee Id\",\n    \"Employee Import Error\": \"Employee Import Error\",\n    \"Employee Import Step 1 of 4\": \"Employee Import Step 1 of 4\",\n    \"Employee Import Step 2 of 4\": \"Employee Import Step 2 of 4\",\n    \"Employee Import Step 3 of 4\": \"Employee Import Step 3 of 4\",\n    \"Employee Import Step 4 of 4\": \"Employee Import Step 4 of 4\",\n    \"Employee Information\": \"Employee Information\",\n    \"Employee Job Costing\": \"Employee Job Costing\",\n    \"Employee List\": \"Employee List\",\n    \"Employee Locations\": \"Employee Locations\",\n    \"Employee Payroll Report\": \"Employee Payroll Report\",\n    \"Employee Project\": \"Employee Project\",\n    \"Employee Report\": \"Employee Report\",\n    \"Employees\": \"Employees\",\n    \"Employees Export\": \"Employees Export\",\n    \"Employees Import\": \"Employees Import\",\n    \"Employees Imported\": \"Employees Imported\",\n    \"Employees Updated\": \"Employees Updated\",\n    \"Enable Cost Codes\": \"Enable Cost Codes\",\n    \"Enable Cost Codes: \": \"Enable Cost Codes: \",\n    \"Enable Paid Breaks\": \"Enable Paid Breaks\",\n    \"End Break\": \"End Break\",\n    \"End Time\": \"End Time\",\n    \"End Time must not be before a Break End Time.\": \"End Time must not be before a Break End Time.\",\n    \"End time\": \"End time\",\n    \"End time must be within the past 90 days.\": \"End time must be within the past 90 days.\",\n    \"End time:  \": \"End time:  \",\n    \"Enter Project Address\": \"Enter Project Address\",\n    \"Enter notes here.\": \"Enter notes here.\",\n    \"Enter your email\": \"Enter your email\",\n    \"Entries\": \"Entries\",\n    \"Entries older than 90 days can not be changed again.\": \"Entries older than 90 days can not be changed again.\",\n    \"Entry\": \"Entry\",\n    \"Entry History\": \"Entry History\",\n    \"Equipment\": \"Equipment\",\n    \"Equipment: \": \"Equipment: \",\n    \"Error\": \"Error\",\n    \"Est. Cost\": \"Est. Cost\",\n    \"Estimated Cost (hourly)\": \"Estimated Cost (hourly)\",\n    \"Estimated Cost (salary)\": \"Estimated Cost (salary)\",\n    \"Estimated Cost of Employee\": \"Estimated Cost of Employee\",\n    \"Estimated Hourly Cost: \": \"Estimated Hourly Cost: \",\n    \"Estimated Total Cost\": \"Estimated Total Cost\",\n    \"Every %@\": \"Every %@\",\n    \"Every other %@\": \"Every other %@\",\n    \"Exclusion of Consequential and Related Damages.\": \"Exclusion of Consequential and Related Damages.\",\n    \"Exclusive Remedy.\": \"Exclusive Remedy.\",\n    \"Exp. Month\": \"Exp. Month\",\n    \"Exp. Year\": \"Exp. Year\",\n    \"Exp. Year and Exp. Month are required to update a card.\": \"Exp. Year and Exp. Month are required to update a card.\",\n    \"Exp:  %@\\/%@\": \"Exp:  %@\\/%@\",\n    \"Expand All\": \"Expand All\",\n    \"Expected Hours Per Week can't be zero\": \"Expected Hours Per Week can't be zero\",\n    \"Expected Hours Per Week: \": \"Expected Hours Per Week: \",\n    \"Export\": \"Export\",\n    \"FEES AND PAYMENT FOR PURCHASED SERVICES\": \"FEES AND PAYMENT FOR PURCHASED SERVICES\",\n    \"FJD -  Fiji dollar\": \"FJD -  Fiji dollar\",\n    \"FKP -  Falkland Islands pound\": \"FKP -  Falkland Islands pound\",\n    \"FROM\": \"FROM\",\n    \"False\": \"False\",\n    \"Federal Government End Use Provisions.\": \"Federal Government End Use Provisions.\",\n    \"Fees and Payment for Purchased Services\": \"Fees and Payment for Purchased Services\",\n    \"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\": \"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\",\n    \"File Name\": \"File Name\",\n    \"Filter\": \"Filter\",\n    \"Finish\": \"Finish\",\n    \"First Name\": \"First Name\",\n    \"First Name is required\": \"First Name is required\",\n    \"Follow Company Settings\": \"Follow Company Settings\",\n    \"For example, if you have a Procore cost code division of <strong>01<\\/strong> with title of <strong>General Requirements<\\/strong> and within that division has a cost code of <strong>10<\\/strong> with the title <strong>Cash Allowances<\\/strong>, the following two cost codes will appear in busybusy after importing: \": \"For example, if you have a Procore cost code division of <strong>01<\\/strong> with title of <strong>General Requirements<\\/strong> and within that division has a cost code of <strong>10<\\/strong> with the title <strong>Cash Allowances<\\/strong>, the following two cost codes will appear in busybusy after importing: \",\n    \"For example, if you have a busybusy project named <strong>Johnson Home<\\/strong> which has a subproject named Concrete<\\/strong>, exporting will create the following projects inside Procore: \": \"For example, if you have a busybusy project named <strong>Johnson Home<\\/strong> which has a subproject named Concrete<\\/strong>, exporting will create the following projects inside Procore: \",\n    \"For further assistance please send us a\": \"For further assistance please send us a\",\n    \"Forgot Your Password?\": \"Forgot Your Password?\",\n    \"Forgot your username or password? \": \"Forgot your username or password? \",\n    \"Foundation\": \"Foundation\",\n    \"Free\": \"Free\",\n    \"Friday\": \"Friday\",\n    \"Full Map\": \"Full Map\",\n    \"Full Report\": \"Full Report\",\n    \"GBP -  Pound sterling\": \"GBP -  Pound sterling\",\n    \"GEL -  Georgian lari\": \"GEL -  Georgian lari\",\n    \"GHS -  Ghanaian cedi\": \"GHS -  Ghanaian cedi\",\n    \"GIP -  Gibraltar pound\": \"GIP -  Gibraltar pound\",\n    \"GMD -  Gambian dalasi\": \"GMD -  Gambian dalasi\",\n    \"GNF -  Guinean franc\": \"GNF -  Guinean franc\",\n    \"GPS Location\": \"GPS Location\",\n    \"GTQ -  Guatemalan quetzal\": \"GTQ -  Guatemalan quetzal\",\n    \"GYD -  Guyanese dollar\": \"GYD -  Guyanese dollar\",\n    \"General\": \"General\",\n    \"General Liability\": \"General Liability\",\n    \"General Provisions\": \"General Provisions\",\n    \"General Requirements\": \"General Requirements\",\n    \"General Settings\": \"General Settings\",\n    \"Geolocation\": \"Geolocation\",\n    \"Geolocation Set\": \"Geolocation Set\",\n    \"Geolocation required for location reminders.\": \"Geolocation required for location reminders.\",\n    \"Get more from busybusy\": \"Get more from busybusy\",\n    \"Getting Started\": \"Getting Started\",\n    \"Go on Break\": \"Go on Break\",\n    \"Group Name\": \"Group Name\",\n    \"HKD -  Hong Kong dollar\": \"HKD -  Hong Kong dollar\",\n    \"HNL -  Honduran lempira\": \"HNL -  Honduran lempira\",\n    \"HOL\": \"HOL\",\n    \"HRK -  Croatian kuna\": \"HRK -  Croatian kuna\",\n    \"HTG -  Haitian gourde\": \"HTG -  Haitian gourde\",\n    \"HUF -  Hungarian forint\": \"HUF -  Hungarian forint\",\n    \"Headers\": \"Headers\",\n    \"Help\": \"Help\",\n    \"Hide Details\": \"Hide Details\",\n    \"Hide wage History\": \"Hide wage History\",\n    \"Holiday\": \"Holiday\",\n    \"Hourly\": \"Hourly\",\n    \"Hours\": \"Hours\",\n    \"Hours Worked\": \"Hours Worked\",\n    \"How busybusy handles layered cost codes during import\": \"How busybusy handles layered cost codes during import\",\n    \"How busybusy handles layered projects during export\": \"How busybusy handles layered projects during export\",\n    \"How busybusy handles syncing with Procore\": \"How busybusy handles syncing with Procore\",\n    \"How can we help?\": \"How can we help?\",\n    \"How often do you process payroll?\": \"How often do you process payroll?\",\n    \"I agree to the \": \"I agree to the \",\n    \"I did not receive an email.\": \"I did not receive an email.\",\n    \"I entered the wrong email.\": \"I entered the wrong email.\",\n    \"IDR -  Indonesian rupiah\": \"IDR -  Indonesian rupiah\",\n    \"ILS -  Israeli new shekel\": \"ILS -  Israeli new shekel\",\n    \"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\": \"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\",\n    \"INR -  Indian rupee\": \"INR -  Indian rupee\",\n    \"IQD -  Iraqi dinar\": \"IQD -  Iraqi dinar\",\n    \"IRR -  Iranian rial\": \"IRR -  Iranian rial\",\n    \"ISK -  Icelandic kr\\xF3na\": \"ISK -  Icelandic kr\\xF3na\",\n    \"If you have any questions or concerns regarding this agreement,\": \"If you have any questions or concerns regarding this agreement,\",\n    \"If you would like to import your existing procore data into busybusy, simply connect to Procore and click on the Import Data option.\": \"If you would like to import your existing procore data into busybusy, simply connect to Procore and click on the Import Data option.\",\n    \"Import\": \"Import\",\n    \"Import Cost Codes\": \"Import Cost Codes\",\n    \"Import Employees\": \"Import Employees\",\n    \"Import Projects\": \"Import Projects\",\n    \"Import employees, projects and cost codes from Procore.\": \"Import employees, projects and cost codes from Procore.\",\n    \"Import in progress\": \"Import in progress\",\n    \"Importing cost codes %@%\": \"Importing cost codes %@%\",\n    \"Importing employees %@%\": \"Importing employees %@%\",\n    \"Importing projects\": \"Importing projects\",\n    \"Improve Job Costing & Simplify the Payroll Process\": \"Improve Job Costing & Simplify the Payroll Process\",\n    \"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\": \"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\",\n    \"Indemnification by Us.\": \"Indemnification by Us.\",\n    \"Indemnification by You.\": \"Indemnification by You.\",\n    \"Install HVAC\": \"Install HVAC\",\n    \"Insurance Class\": \"Insurance Class\",\n    \"Insurance Classes\": \"Insurance Classes\",\n    \"Insurance General Liability Class\": \"Insurance General Liability Class\",\n    \"Insurance Workers' Compensation Class\": \"Insurance Workers' Compensation Class\",\n    \"Integration with Non-busybusy.com Services.\": \"Integration with Non-busybusy.com Services.\",\n    \"Integrations\": \"Integrations\",\n    \"Intuit QuickBooks\": \"Intuit QuickBooks\",\n    \"Invoice Date\": \"Invoice Date\",\n    \"Invoice History\": \"Invoice History\",\n    \"Invoice Period\": \"Invoice Period\",\n    \"Is Paid:  \": \"Is Paid:  \",\n    \"It\\u2019s that simple!\": \"It\\u2019s that simple!\",\n    \"JMD -  Jamaican dollar\": \"JMD -  Jamaican dollar\",\n    \"JOD -  Jordanian dinar\": \"JOD -  Jordanian dinar\",\n    \"JPY -  Japanese yen\": \"JPY -  Japanese yen\",\n    \"Job Costing\": \"Job Costing\",\n    \"Job Details\": \"Job Details\",\n    \"Johnson Home\": \"Johnson Home\",\n    \"KES -  Kenyan shilling\": \"KES -  Kenyan shilling\",\n    \"KGS -  Kyrgyzstani som\": \"KGS -  Kyrgyzstani som\",\n    \"KHR -  Cambodian riel\": \"KHR -  Cambodian riel\",\n    \"KMF -  Comoro franc\": \"KMF -  Comoro franc\",\n    \"KPW -  North Korean won\": \"KPW -  North Korean won\",\n    \"KRW -  South Korean won\": \"KRW -  South Korean won\",\n    \"KWD -  Kuwaiti dinar\": \"KWD -  Kuwaiti dinar\",\n    \"KYD -  Cayman Islands dollar\": \"KYD -  Cayman Islands dollar\",\n    \"KZT -  Kazakhstani tenge\": \"KZT -  Kazakhstani tenge\",\n    \"Know where your employees are and what they are working on\": \"Know where your employees are and what they are working on\",\n    \"LAK -  Lao kip\": \"LAK -  Lao kip\",\n    \"LBP -  Lebanese pound\": \"LBP -  Lebanese pound\",\n    \"LIMITATION OF LIABILITY\": \"LIMITATION OF LIABILITY\",\n    \"LKR -  Sri Lankan rupee\": \"LKR -  Sri Lankan rupee\",\n    \"LRD -  Liberian dollar\": \"LRD -  Liberian dollar\",\n    \"LSL -  Lesotho loti\": \"LSL -  Lesotho loti\",\n    \"LTL -  Lithuanian litas\": \"LTL -  Lithuanian litas\",\n    \"LVL -  Latvian lats\": \"LVL -  Latvian lats\",\n    \"LYD -  Libyan dinar\": \"LYD -  Libyan dinar\",\n    \"Labor Budget\": \"Labor Budget\",\n    \"Labor Burden\": \"Labor Burden\",\n    \"Labor Burden %\": \"Labor Burden %\",\n    \"Labor Burden: \": \"Labor Burden: \",\n    \"Labor Cost\": \"Labor Cost\",\n    \"Labor Cost Spent\": \"Labor Cost Spent\",\n    \"Labor Hours\": \"Labor Hours\",\n    \"Labor Hours Worked\": \"Labor Hours Worked\",\n    \"Las Vegas, NV 89128-1028\": \"Las Vegas, NV 89128-1028\",\n    \"Last Import\": \"Last Import\",\n    \"Last Name\": \"Last Name\",\n    \"Last Name is required\": \"Last Name is required\",\n    \"Latest Activity\": \"Latest Activity\",\n    \"Learn more\": \"Learn more\",\n    \"Limitation of Liability\": \"Limitation of Liability\",\n    \"Limitation of Liability.\": \"Limitation of Liability.\",\n    \"Loading Log Details...\": \"Loading Log Details...\",\n    \"Loading Log Entries...\": \"Loading Log Entries...\",\n    \"Loading Status...\": \"Loading Status...\",\n    \"Loading...\": \"Loading...\",\n    \"Location\": \"Location\",\n    \"Locations\": \"Locations\",\n    \"Log\": \"Log\",\n    \"Log me out.\": \"Log me out.\",\n    \"Log out\": \"Log out\",\n    \"Login\": \"Login\",\n    \"Lot 1\": \"Lot 1\",\n    \"Lot 2\": \"Lot 2\",\n    \"MAD -  Moroccan dirham\": \"MAD -  Moroccan dirham\",\n    \"MDL -  Moldovan leu\": \"MDL -  Moldovan leu\",\n    \"MKD -  Macedonian denar\": \"MKD -  Macedonian denar\",\n    \"MMK -  Myanma kyat\": \"MMK -  Myanma kyat\",\n    \"MNT -  Mongolian tugrik\": \"MNT -  Mongolian tugrik\",\n    \"MOP -  Macanese pataca\": \"MOP -  Macanese pataca\",\n    \"MUR -  Mauritian rupee\": \"MUR -  Mauritian rupee\",\n    \"MUTUAL INDEMNIFICATION\": \"MUTUAL INDEMNIFICATION\",\n    \"MVR -  Maldivian rufiyaa\": \"MVR -  Maldivian rufiyaa\",\n    \"MWK -  Malawian kwacha\": \"MWK -  Malawian kwacha\",\n    \"MXN -  Mexican peso\": \"MXN -  Mexican peso\",\n    \"MYR -  Malaysian ringgit\": \"MYR -  Malaysian ringgit\",\n    \"MZN -  Mozambican metical\": \"MZN -  Mozambican metical\",\n    \"Make This My Default Card\": \"Make This My Default Card\",\n    \"Manage Employees for: \": \"Manage Employees for: \",\n    \"Manage Insurance Classes\": \"Manage Insurance Classes\",\n    \"Manage Photos posted by: \": \"Manage Photos posted by: \",\n    \"Manage payroll items on all new employees imported from QuickBooks.\": \"Manage payroll items on all new employees imported from QuickBooks.\",\n    \"Manual break\": \"Manual break\",\n    \"Manual entry\": \"Manual entry\",\n    \"Match Payroll Categories\": \"Match Payroll Categories\",\n    \"Member Limit\": \"Member Limit\",\n    \"Merge Entries\": \"Merge Entries\",\n    \"Merge entries\": \"Merge entries\",\n    \"Message\": \"Message\",\n    \"Misc.\": \"Misc.\",\n    \"Monday\": \"Monday\",\n    \"Monthly\": \"Monthly\",\n    \"Monthly Billing\": \"Monthly Billing\",\n    \"Move to Group\": \"Move to Group\",\n    \"Must be a number\": \"Must be a number\",\n    \"Mutual Indemnification\": \"Mutual Indemnification\",\n    \"NAD -  Namibian dollar\": \"NAD -  Namibian dollar\",\n    \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement: \": \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement: \",\n    \"NGN -  Nigerian naira\": \"NGN -  Nigerian naira\",\n    \"NIO -  Nicaraguan c\\xF3rdoba\": \"NIO -  Nicaraguan c\\xF3rdoba\",\n    \"NOK -  Norwegian krone\": \"NOK -  Norwegian krone\",\n    \"NON-BUSYBUSY.COM PROVIDERS\": \"NON-BUSYBUSY.COM PROVIDERS\",\n    \"NOW\": \"NOW\",\n    \"NPR -  Nepalese rupee\": \"NPR -  Nepalese rupee\",\n    \"NZD -  New Zealand dollar\": \"NZD -  New Zealand dollar\",\n    \"Name\": \"Name\",\n    \"Name is required to update a card.\": \"Name is required to update a card.\",\n    \"Name on Card\": \"Name on Card\",\n    \"Nevermind, I remember my password.\": \"Nevermind, I remember my password.\",\n    \"New Notecard\": \"New Notecard\",\n    \"New Password\": \"New Password\",\n    \"New Position\": \"New Position\",\n    \"New Time Entry\": \"New Time Entry\",\n    \"New project name: \": \"New project name: \",\n    \"Next\": \"Next\",\n    \"Next Payment\": \"Next Payment\",\n    \"No\": \"No\",\n    \"No Cost Codes Found\": \"No Cost Codes Found\",\n    \"No Projects Found\": \"No Projects Found\",\n    \"No Results Found\": \"No Results Found\",\n    \"No Thanks\": \"No Thanks\",\n    \"No Thanks, I Don't Have Employees\": \"No Thanks, I Don't Have Employees\",\n    \"No changes were made\": \"No changes were made\",\n    \"No cost codes were found\": \"No cost codes were found\",\n    \"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\": \"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\",\n    \"No locations available\": \"No locations available\",\n    \"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\": \"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\",\n    \"No payroll items set or changed!\": \"No payroll items set or changed!\",\n    \"No projects were found\": \"No projects were found\",\n    \"No results\": \"No results\",\n    \"No subprojects found.\": \"No subprojects found.\",\n    \"No time cards for this date range were found.\": \"No time cards for this date range were found.\",\n    \"No time off entries found for this date range.\": \"No time off entries found for this date range.\",\n    \"Non-busybusy.com Applications\": \"Non-busybusy.com Applications\",\n    \"Non-busybusy.com Applications and Your Data.\": \"Non-busybusy.com Applications and Your Data.\",\n    \"Non-busybusy.com Providers\": \"Non-busybusy.com Providers\",\n    \"None\": \"None\",\n    \"Not Connected\": \"Not Connected\",\n    \"Not Enabled\": \"Not Enabled\",\n    \"Not Paid\": \"Not Paid\",\n    \"Not Set\": \"Not Set\",\n    \"Note\": \"Note\",\n    \"Notecard\": \"Notecard\",\n    \"Notes: \": \"Notes: \",\n    \"Now click one of the store links below to download the app on your phone.\": \"Now click one of the store links below to download the app on your phone.\",\n    \"Now let's add your employees\": \"Now let's add your employees\",\n    \"O.T. (x1.5)\": \"O.T. (x1.5)\",\n    \"O.T. (x2)\": \"O.T. (x2)\",\n    \"O.T. Hours (x1.5)\": \"O.T. Hours (x1.5)\",\n    \"O.T. Hours (x2)\": \"O.T. Hours (x2)\",\n    \"O.T. Wages (x1.5)\": \"O.T. Wages (x1.5)\",\n    \"O.T. Wages (x2)\": \"O.T. Wages (x2)\",\n    \"OAuth Error\": \"OAuth Error\",\n    \"OMR -  Omani rial\": \"OMR -  Omani rial\",\n    \"OT (x1.5)\": \"OT (x1.5)\",\n    \"OT (x2)\": \"OT (x2)\",\n    \"OT Hours\": \"OT Hours\",\n    \"OT Hours (x1.5)\": \"OT Hours (x1.5)\",\n    \"OT Hours (x2)\": \"OT Hours (x2)\",\n    \"OT1 = %@\": \"OT1 = %@\",\n    \"OT2 = %@\": \"OT2 = %@\",\n    \"OTH\": \"OTH\",\n    \"Off\": \"Off\",\n    \"Once connected to Procore, busybusy will send all time entries, projects, employees and cost codes to Procore automatically for you.\": \"Once connected to Procore, busybusy will send all time entries, projects, employees and cost codes to Procore automatically for you.\",\n    \"Open QuickBooks Web Connector and click \\u201CUpload Application File\\u201D\": \"Open QuickBooks Web Connector and click \\u201CUpload Application File\\u201D\",\n    \"Options\": \"Options\",\n    \"Other\": \"Other\",\n    \"Others with higher position\": \"Others with higher position\",\n    \"Others with lower position\": \"Others with lower position\",\n    \"Others with same position\": \"Others with same position\",\n    \"Our Protection of Your Data.\": \"Our Protection of Your Data.\",\n    \"Our Responsibilities.\": \"Our Responsibilities.\",\n    \"Our Warranties.\": \"Our Warranties.\",\n    \"Overburden %\": \"Overburden %\",\n    \"Overlapping Time\": \"Overlapping Time\",\n    \"Overtime\": \"Overtime\",\n    \"Overtime Cost (x1.5)\": \"Overtime Cost (x1.5)\",\n    \"Overtime Cost (x2)\": \"Overtime Cost (x2)\",\n    \"Overtime Hours(x1.5)\": \"Overtime Hours(x1.5)\",\n    \"Overtime Hours(x2)\": \"Overtime Hours(x2)\",\n    \"Overtime Period\": \"Overtime Period\",\n    \"Overtime Rules\": \"Overtime Rules\",\n    \"Overtime Rules: \": \"Overtime Rules: \",\n    \"Overtime Settings\": \"Overtime Settings\",\n    \"Overtime X2.0 (OT2)\": \"Overtime X2.0 (OT2)\",\n    \"Overtime x1.5 (OT1)\": \"Overtime x1.5 (OT1)\",\n    \"PAB -  Panamanian balboa\": \"PAB -  Panamanian balboa\",\n    \"PEN -  Peruvian nuevo sol\": \"PEN -  Peruvian nuevo sol\",\n    \"PGK -  Papua New Guinean kina\": \"PGK -  Papua New Guinean kina\",\n    \"PHP -  Philippine peso\": \"PHP -  Philippine peso\",\n    \"PKR -  Pakistani rupee\": \"PKR -  Pakistani rupee\",\n    \"PLN -  Polish z\\u0142oty\": \"PLN -  Polish z\\u0142oty\",\n    \"PROPRIETARY RIGHTS\": \"PROPRIETARY RIGHTS\",\n    \"PTO\": \"PTO\",\n    \"PYG -  Paraguayan guaran\\xED\": \"PYG -  Paraguayan guaran\\xED\",\n    \"Paid\": \"Paid\",\n    \"Paid Break\": \"Paid Break\",\n    \"Paid Time Off\": \"Paid Time Off\",\n    \"Paid\\/Unpaid\": \"Paid\\/Unpaid\",\n    \"Password\": \"Password\",\n    \"Password is invalid\": \"Password is invalid\",\n    \"Password is invalid.\": \"Password is invalid.\",\n    \"Password must contain at a number, a letter, and be more than 6 characters long.\": \"Password must contain at a number, a letter, and be more than 6 characters long.\",\n    \"Passwords do not match\": \"Passwords do not match\",\n    \"Pay\": \"Pay\",\n    \"Pay Period\": \"Pay Period\",\n    \"Pay Period Settings\": \"Pay Period Settings\",\n    \"Pay Period: \": \"Pay Period: \",\n    \"Pay Rate: \": \"Pay Rate: \",\n    \"Pay period type not found!\": \"Pay period type not found!\",\n    \"Payment Method\": \"Payment Method\",\n    \"Payroll\": \"Payroll\",\n    \"Payroll Items\": \"Payroll Items\",\n    \"Payroll Items Imported\": \"Payroll Items Imported\",\n    \"Payroll Items Updated\": \"Payroll Items Updated\",\n    \"Payroll Mapping\": \"Payroll Mapping\",\n    \"Payroll Rate\": \"Payroll Rate\",\n    \"Payroll Report\": \"Payroll Report\",\n    \"Payroll Type\": \"Payroll Type\",\n    \"Payroll data was not found for this pay period.\": \"Payroll data was not found for this pay period.\",\n    \"Period:  %@\": \"Period:  %@\",\n    \"Personal\": \"Personal\",\n    \"Phone\": \"Phone\",\n    \"Phone Number\": \"Phone Number\",\n    \"Photo\": \"Photo\",\n    \"Photos\": \"Photos\",\n    \"Photos %@\": \"Photos %@\",\n    \"Pie Chart\": \"Pie Chart\",\n    \"Please fill out all required fields\": \"Please fill out all required fields\",\n    \"Please fill out all required fields.\": \"Please fill out all required fields.\",\n    \"Please fill out the required fields.\": \"Please fill out the required fields.\",\n    \"Please pick a different plan or archive %@ %@ and try again\": \"Please pick a different plan or archive %@ %@ and try again\",\n    \"Please select how many employees your company has.\": \"Please select how many employees your company has.\",\n    \"Please set the expiration date.\": \"Please set the expiration date.\",\n    \"Position\": \"Position\",\n    \"Position must be set before saving\": \"Position must be set before saving\",\n    \"Positions\": \"Positions\",\n    \"Postal Code\": \"Postal Code\",\n    \"Preferences\": \"Preferences\",\n    \"Prev\": \"Prev\",\n    \"Previous\": \"Previous\",\n    \"Print\": \"Print\",\n    \"Print Report\": \"Print Report\",\n    \"Process payroll faster\": \"Process payroll faster\",\n    \"Procore\": \"Procore\",\n    \"Procore Settings\": \"Procore Settings\",\n    \"Profile\": \"Profile\",\n    \"Profile Picture\": \"Profile Picture\",\n    \"Project\": \"Project\",\n    \"Project Budget\": \"Project Budget\",\n    \"Project Import Error\": \"Project Import Error\",\n    \"Project Import Format Guide\": \"Project Import Format Guide\",\n    \"Project Import Step 1 of 2\": \"Project Import Step 1 of 2\",\n    \"Project Import Step 2 of 2\": \"Project Import Step 2 of 2\",\n    \"Project Information\": \"Project Information\",\n    \"Project Job Costing\": \"Project Job Costing\",\n    \"Project Lvl 1\": \"Project Lvl 1\",\n    \"Project Lvl 2\": \"Project Lvl 2\",\n    \"Project Lvl 3\": \"Project Lvl 3\",\n    \"Project Lvl 4\": \"Project Lvl 4\",\n    \"Project Lvl 5\": \"Project Lvl 5\",\n    \"Project Lvl 6\": \"Project Lvl 6\",\n    \"Project Lvl 7\": \"Project Lvl 7\",\n    \"Project Name\": \"Project Name\",\n    \"Project Number\": \"Project Number\",\n    \"Project Payroll Report\": \"Project Payroll Report\",\n    \"Project Summary\": \"Project Summary\",\n    \"Project Time Sheet\": \"Project Time Sheet\",\n    \"Project Title\": \"Project Title\",\n    \"Project is required.\": \"Project is required.\",\n    \"Project name is required\": \"Project name is required\",\n    \"Project name must be unique\": \"Project name must be unique\",\n    \"Project: \": \"Project: \",\n    \"Project:  \": \"Project:  \",\n    \"Projects\": \"Projects\",\n    \"Projects Export\": \"Projects Export\",\n    \"Projects Import\": \"Projects Import\",\n    \"Projects Imported\": \"Projects Imported\",\n    \"Projects Updated\": \"Projects Updated\",\n    \"Projects use a hierarchical data structure.\": \"Projects use a hierarchical data structure.\",\n    \"Proprietary Rights\": \"Proprietary Rights\",\n    \"Protection of Confidential Information.\": \"Protection of Confidential Information.\",\n    \"Provided by\": \"Provided by\",\n    \"Provided by:  \": \"Provided by:  \",\n    \"Provision of Services\": \"Provision of Services\",\n    \"QAR -  Qatari riyal\": \"QAR -  Qatari riyal\",\n    \"Questions?\": \"Questions?\",\n    \"QuickBooks\": \"QuickBooks\",\n    \"QuickBooks Payroll\": \"QuickBooks Payroll\",\n    \"QuickBooks Web Connector\": \"QuickBooks Web Connector\",\n    \"REG = %@\": \"REG = %@\",\n    \"RON -  Romanian new leu\": \"RON -  Romanian new leu\",\n    \"RSD -  Serbian dinar\": \"RSD -  Serbian dinar\",\n    \"RUB -  Russian rouble\": \"RUB -  Russian rouble\",\n    \"RWF -  Rwandan franc\": \"RWF -  Rwandan franc\",\n    \"Re-type Password\": \"Re-type Password\",\n    \"Recent Cost Codes\": \"Recent Cost Codes\",\n    \"Recent Projects\": \"Recent Projects\",\n    \"Recorded:  %@\": \"Recorded:  %@\",\n    \"Reg Hours\": \"Reg Hours\",\n    \"Reg Time\": \"Reg Time\",\n    \"Regional Settings\": \"Regional Settings\",\n    \"Regular\": \"Regular\",\n    \"Regular Cost\": \"Regular Cost\",\n    \"Regular Hours\": \"Regular Hours\",\n    \"Regular Time\": \"Regular Time\",\n    \"Regular Time (REG)\": \"Regular Time (REG)\",\n    \"Regular Wages\": \"Regular Wages\",\n    \"Remaining\": \"Remaining\",\n    \"Remember your password! You'll need it to log into busybusy.\": \"Remember your password! You'll need it to log into busybusy.\",\n    \"Reminders Enabled\": \"Reminders Enabled\",\n    \"Reminders to clock-in\\/out\": \"Reminders to clock-in\\/out\",\n    \"Remove\": \"Remove\",\n    \"Report Setup\": \"Report Setup\",\n    \"Reports\": \"Reports\",\n    \"Require Cost Codes\": \"Require Cost Codes\",\n    \"Require Cost Codes: \": \"Require Cost Codes: \",\n    \"Require Project\": \"Require Project\",\n    \"Require Project: \": \"Require Project: \",\n    \"Requirements\": \"Requirements\",\n    \"Reservation of Rights in Services.\": \"Reservation of Rights in Services.\",\n    \"Reset Your Password\": \"Reset Your Password\",\n    \"Resolve\": \"Resolve\",\n    \"Resolved\": \"Resolved\",\n    \"Restrictions.\": \"Restrictions.\",\n    \"Return of Your Data.\": \"Return of Your Data.\",\n    \"Return to Dashboard\": \"Return to Dashboard\",\n    \"Review the 10 most recent imports from Procore to busybusy.\": \"Review the 10 most recent imports from Procore to busybusy.\",\n    \"Review the 10 most recent sync logs on imported and updated data between QuickBooks and busybusy.\": \"Review the 10 most recent sync logs on imported and updated data between QuickBooks and busybusy.\",\n    \"Run Report\": \"Run Report\",\n    \"SAL = %@\": \"SAL = %@\",\n    \"SAR -  Saudi riyal\": \"SAR -  Saudi riyal\",\n    \"SBD -  Solomon Islands dollar\": \"SBD -  Solomon Islands dollar\",\n    \"SCR -  Seychelles rupee\": \"SCR -  Seychelles rupee\",\n    \"SDG -  Sudanese pound\": \"SDG -  Sudanese pound\",\n    \"SEK -  Swedish krona\\/kronor\": \"SEK -  Swedish krona\\/kronor\",\n    \"SGD -  Singapore dollar\": \"SGD -  Singapore dollar\",\n    \"SHP -  Saint Helena pound\": \"SHP -  Saint Helena pound\",\n    \"SIC\": \"SIC\",\n    \"SLL -  Sierra Leonean leone\": \"SLL -  Sierra Leonean leone\",\n    \"SOS -  Somali shilling\": \"SOS -  Somali shilling\",\n    \"SRD -  Surinamese dollar\": \"SRD -  Surinamese dollar\",\n    \"SSP -  South Sudanese pound\": \"SSP -  South Sudanese pound\",\n    \"STD -  S\\xE3o Tom\\xE9 and Pr\\xEDncipe dobra\": \"STD -  S\\xE3o Tom\\xE9 and Pr\\xEDncipe dobra\",\n    \"SYP -  Syrian pound\": \"SYP -  Syrian pound\",\n    \"SZL -  Swazi lilangeni\": \"SZL -  Swazi lilangeni\",\n    \"Salary (SAL)\": \"Salary (SAL)\",\n    \"Sample File\": \"Sample File\",\n    \"Saturday\": \"Saturday\",\n    \"Saturday Pay Rate\": \"Saturday Pay Rate\",\n    \"Save\": \"Save\",\n    \"Save & Close\": \"Save & Close\",\n    \"Save and Close\": \"Save and Close\",\n    \"Save and Import\": \"Save and Import\",\n    \"Save and add another\": \"Save and add another\",\n    \"Saved \": \"Saved \",\n    \"Saved %@ cost codes successfully!\": \"Saved %@ cost codes successfully!\",\n    \"Saved employees successfully!\": \"Saved employees successfully!\",\n    \"Saving\": \"Saving\",\n    \"Saving...\": \"Saving...\",\n    \"Scheduled Overtime Change\": \"Scheduled Overtime Change\",\n    \"Scheduled Pay Period Change\": \"Scheduled Pay Period Change\",\n    \"Search\": \"Search\",\n    \"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\": \"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\",\n    \"Security Code\": \"Security Code\",\n    \"Select\": \"Select\",\n    \"Select %@\": \"Select %@\",\n    \"Select Cost Code\": \"Select Cost Code\",\n    \"Select Pay Period\": \"Select Pay Period\",\n    \"Select Period\": \"Select Period\",\n    \"Select a Project\": \"Select a Project\",\n    \"Select a day\": \"Select a day\",\n    \"Select a group\": \"Select a group\",\n    \"Select a pay period\": \"Select a pay period\",\n    \"Select a start time\": \"Select a start time\",\n    \"Select a subproject\": \"Select a subproject\",\n    \"Select a weekday\": \"Select a weekday\",\n    \"Select an end time\": \"Select an end time\",\n    \"Select breaks\": \"Select breaks\",\n    \"Select cost code\": \"Select cost code\",\n    \"Select description\": \"Select description\",\n    \"Select project\": \"Select project\",\n    \"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\": \"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\",\n    \"Select which day of the week you want your workweek to begin: \": \"Select which day of the week you want your workweek to begin: \",\n    \"Self\": \"Self\",\n    \"Semimonthly\": \"Semimonthly\",\n    \"Semi-monthly\": \"Semi-monthly\",\n    \"Sending data from busybusy to procore requires nothing more than a one-time setup.\": \"Sending data from busybusy to procore requires nothing more than a one-time setup.\",\n    \"Server clock out\": \"Server clock out\",\n    \"Services may be subject to other limitations, such as, for example, limits on disk storage space.\": \"Services may be subject to other limitations, such as, for example, limits on disk storage space.\",\n    \"Set Password\": \"Set Password\",\n    \"Seventh Day Doubletime must be less than daily doubletime!\": \"Seventh Day Doubletime must be less than daily doubletime!\",\n    \"Show Details\": \"Show Details\",\n    \"Show More\": \"Show More\",\n    \"Show less\": \"Show less\",\n    \"Show more\": \"Show more\",\n    \"Sick\": \"Sick\",\n    \"Sign In\": \"Sign In\",\n    \"Sign in\": \"Sign in\",\n    \"Sign in to another account or \": \"Sign in to another account or \",\n    \"Signature\": \"Signature\",\n    \"Since Procore does not support subprojects, busybusy converts subprojects into normal projects inside of Procore, using the using the \\u201C>\\u201D sign to show the busybusy project layers.\": \"Since Procore does not support subprojects, busybusy converts subprojects into normal projects inside of Procore, using the using the \\u201C>\\u201D sign to show the busybusy project layers.\",\n    \"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\": \"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\",\n    \"SkyView Subdivision\": \"SkyView Subdivision\",\n    \"SkyView subdiv\": \"SkyView subdiv\",\n    \"Something went wrong creating your account. Please try again.\": \"Something went wrong creating your account. Please try again.\",\n    \"Something went wrong, Please try again later.\": \"Something went wrong, Please try again later.\",\n    \"Something went wrong, please try again later.\": \"Something went wrong, please try again later.\",\n    \"Something went wrong. Please try again Later.\": \"Something went wrong. Please try again Later.\",\n    \"Something went wrong. Please try again later.\": \"Something went wrong. Please try again later.\",\n    \"Something went wrong. Please try again.\": \"Something went wrong. Please try again.\",\n    \"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\": \"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\",\n    \"Sorry, your subscription limit has been reached. If you would like to add additional employees, please go to your\": \"Sorry, your subscription limit has been reached. If you would like to add additional employees, please go to your\",\n    \"Sort\": \"Sort\",\n    \"Sort asc\": \"Sort asc\",\n    \"Sort desc\": \"Sort desc\",\n    \"Spent\": \"Spent\",\n    \"Standard\": \"Standard\",\n    \"Standard Settings\": \"Standard Settings\",\n    \"Start\": \"Start\",\n    \"Start My 30 Day Free Trial\": \"Start My 30 Day Free Trial\",\n    \"Start My Free 30 Day Trial\": \"Start My Free 30 Day Trial\",\n    \"Start Time\": \"Start Time\",\n    \"Start Time must not be after a Break Start Time.\": \"Start Time must not be after a Break Start Time.\",\n    \"Start or stop time will overlap an existing time entry.\": \"Start or stop time will overlap an existing time entry.\",\n    \"Start time\": \"Start time\",\n    \"Start time must be before now.\": \"Start time must be before now.\",\n    \"Start time must be before stop time.\": \"Start time must be before stop time.\",\n    \"Start time must be within the past 90 days.\": \"Start time must be within the past 90 days.\",\n    \"Start time:  \": \"Start time:  \",\n    \"Starts Over\": \"Starts Over\",\n    \"Starts Over:  %@\": \"Starts Over:  %@\",\n    \"State\": \"State\",\n    \"Status\": \"Status\",\n    \"Status: \": \"Status: \",\n    \"Step 1. Account Information\": \"Step 1. Account Information\",\n    \"Step 1: \": \"Step 1: \",\n    \"Step 2. Company Information\": \"Step 2. Company Information\",\n    \"Step 2: \": \"Step 2: \",\n    \"Step 3. Pay Period Settings\": \"Step 3. Pay Period Settings\",\n    \"Step 3: \": \"Step 3: \",\n    \"Step 4. Overtime Settings\": \"Step 4. Overtime Settings\",\n    \"Step 4: \": \"Step 4: \",\n    \"Step 5: \": \"Step 5: \",\n    \"Step 6: \": \"Step 6: \",\n    \"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\": \"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\",\n    \"Stop\": \"Stop\",\n    \"Stop Time\": \"Stop Time\",\n    \"Stop time must be before the end of today.\": \"Stop time must be before the end of today.\",\n    \"Storage Capacity\": \"Storage Capacity\",\n    \"Subject\": \"Subject\",\n    \"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\": \"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\",\n    \"Submit\": \"Submit\",\n    \"Submitted by\": \"Submitted by\",\n    \"Submitted on\": \"Submitted on\",\n    \"Subproject Budgets\": \"Subproject Budgets\",\n    \"Subproject Information\": \"Subproject Information\",\n    \"Subproject Report\": \"Subproject Report\",\n    \"Subproject name\": \"Subproject name\",\n    \"Subproject name is required\": \"Subproject name is required\",\n    \"Subproject name must be unique\": \"Subproject name must be unique\",\n    \"Subprojects\": \"Subprojects\",\n    \"Subscription\": \"Subscription\",\n    \"Subscription Required\": \"Subscription Required\",\n    \"Subtotal\": \"Subtotal\",\n    \"Successfully Saved\": \"Successfully Saved\",\n    \"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\": \"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\",\n    \"Summary\": \"Summary\",\n    \"Sunday\": \"Sunday\",\n    \"Sunday Pay Rate\": \"Sunday Pay Rate\",\n    \"Supervisor \\/ Superintendent\": \"Supervisor \\/ Superintendent\",\n    \"Supervisor\\/Superintendent\": \"Supervisor\\/Superintendent\",\n    \"Surviving Provisions.\": \"Surviving Provisions.\",\n    \"Switch\": \"Switch\",\n    \"Switch Projects\": \"Switch Projects\",\n    \"Sync Log\": \"Sync Log\",\n    \"TERM AND TERMINATION\": \"TERM AND TERMINATION\",\n    \"TEST - Connect\": \"TEST - Connect\",\n    \"TEST - Disconnect\": \"TEST - Disconnect\",\n    \"TEST - Learn More\": \"TEST - Learn More\",\n    \"TEST - Logs\": \"TEST - Logs\",\n    \"TEST - Manual Import\": \"TEST - Manual Import\",\n    \"TEST - OAuth External\": \"TEST - OAuth External\",\n    \"TEST - Settings Dialog\": \"TEST - Settings Dialog\",\n    \"TEST - Subscribe\": \"TEST - Subscribe\",\n    \"TEST - Upgrade\": \"TEST - Upgrade\",\n    \"THB -  Thai baht\": \"THB -  Thai baht\",\n    \"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\": \"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\",\n    \"TJS -  Tajikistani somoni\": \"TJS -  Tajikistani somoni\",\n    \"TMT -  Turkmenistani manat\": \"TMT -  Turkmenistani manat\",\n    \"TND -  Tunisian dinar\": \"TND -  Tunisian dinar\",\n    \"TO\": \"TO\",\n    \"TOP -  Tongan pa\\u02BBanga\": \"TOP -  Tongan pa\\u02BBanga\",\n    \"TRY -  Turkish lira\": \"TRY -  Turkish lira\",\n    \"TTD -  Trinidad and Tobago dollar\": \"TTD -  Trinidad and Tobago dollar\",\n    \"TWD -  New Taiwan dollar\": \"TWD -  New Taiwan dollar\",\n    \"TZS -  Tanzanian shilling\": \"TZS -  Tanzanian shilling\",\n    \"Table of Contents\": \"Table of Contents\",\n    \"Take me to my account\": \"Take me to my account\",\n    \"Take the one minute tour\": \"Take the one minute tour\",\n    \"Term and Termination\": \"Term and Termination\",\n    \"Term of Agreement.\": \"Term of Agreement.\",\n    \"Termination (i) upon 30 days written notice, either party may terminate this agreement.\": \"Termination (i) upon 30 days written notice, either party may terminate this agreement.\",\n    \"Thank You\": \"Thank You\",\n    \"The %@ and %@ of each month\": \"The %@ and %@ of each month\",\n    \"The %@ of each month\": \"The %@ of each month\",\n    \"The Admin Position cannot be deleted.\": \"The Admin Position cannot be deleted.\",\n    \"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\": \"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\",\n    \"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates\\u2019 employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party\\u2019s prior written consent.\": \"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates\\u2019 employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party\\u2019s prior written consent.\",\n    \"The actual costs have exceeded the budgeted amount.\": \"The actual costs have exceeded the budgeted amount.\",\n    \"The actual hours have exceeded the budgeted amount.\": \"The actual hours have exceeded the budgeted amount.\",\n    \"The break time must not be longer than the Clock In to Clock Out time duration\": \"The break time must not be longer than the Clock In to Clock Out time duration\",\n    \"The default card cannot be deleted\": \"The default card cannot be deleted\",\n    \"The email you provided was not associated with any accounts on busybusy.\": \"The email you provided was not associated with any accounts on busybusy.\",\n    \"The following fields can be imported for cost codes: \": \"The following fields can be imported for cost codes: \",\n    \"The following fields can be imported for employees: \": \"The following fields can be imported for employees: \",\n    \"The passwords don't match!\": \"The passwords don't match!\",\n    \"The subproject budgets have exceeded the overall budgeted amount.\": \"The subproject budgets have exceeded the overall budgeted amount.\",\n    \"The system has hit an error. Please try again later.\": \"The system has hit an error. Please try again later.\",\n    \"The total budget for all subprojects is more than the budgeted amount.\": \"The total budget for all subprojects is more than the budgeted amount.\",\n    \"The total hours for all subprojects is more than the budgeted amount.\": \"The total hours for all subprojects is more than the budgeted amount.\",\n    \"The username can be updated in the details tab of the employee\\u2019s profile.\": \"The username can be updated in the details tab of the employee\\u2019s profile.\",\n    \"The username for this employee is not unique, which will prevent the employee from being able to log in.\": \"The username for this employee is not unique, which will prevent the employee from being able to log in.\",\n    \"The username or password is incorrect!\": \"The username or password is incorrect!\",\n    \"The username was not found in the system.\": \"The username was not found in the system.\",\n    \"The wage change failed to delete. Please try again later.\": \"The wage change failed to delete. Please try again later.\",\n    \"Then \": \"Then \",\n    \"There are no entries for this day!\": \"There are no entries for this day!\",\n    \"There was a problem deleting this note card.\": \"There was a problem deleting this note card.\",\n    \"There was a problem processing your payment. Please check your card info and try again.\": \"There was a problem processing your payment. Please check your card info and try again.\",\n    \"There was an error duplicating the project\": \"There was an error duplicating the project\",\n    \"There was an error in your csv file or the system failed to get some required information from the csv file.\": \"There was an error in your csv file or the system failed to get some required information from the csv file.\",\n    \"There was an error starting your subscription!\": \"There was an error starting your subscription!\",\n    \"There was an error submitting your changes! Please try again.\": \"There was an error submitting your changes! Please try again.\",\n    \"There was an error while verifying your account. Please call customer service at 1-855-287-9287.\": \"There was an error while verifying your account. Please call customer service at 1-855-287-9287.\",\n    \"There was an error. Please try again at a later tine.\": \"There was an error. Please try again at a later tine.\",\n    \"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\": \"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\",\n    \"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys\\u2019 fees\": \"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys\\u2019 fees\",\n    \"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\": \"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\",\n    \"This Section 10 (Mutual Indemnification) states the indemnifying party\\u2019s sole liability to, and the indemnified party\\u2019s exclusive remedy against, the other party for any type of claim described in this Section.\": \"This Section 10 (Mutual Indemnification) states the indemnifying party\\u2019s sole liability to, and the indemnified party\\u2019s exclusive remedy against, the other party for any type of claim described in this Section.\",\n    \"This action will archive any subprojects within this project.\": \"This action will archive any subprojects within this project.\",\n    \"This action will restore any subprojects within this project\": \"This action will restore any subprojects within this project\",\n    \"This break ends after the time entry\": \"This break ends after the time entry\",\n    \"This break is outside the time entry\": \"This break is outside the time entry\",\n    \"This break overlaps another break\": \"This break overlaps another break\",\n    \"This break starts before the time entry\": \"This break starts before the time entry\",\n    \"This file has more employees than your subscription allows.\": \"This file has more employees than your subscription allows.\",\n    \"This invite url has already been used. Contact your account admin to get a new invatation.\": \"This invite url has already been used. Contact your account admin to get a new invatation.\",\n    \"This is a premium feature. To integrate with \": \"This is a premium feature. To integrate with \",\n    \"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\",\n    \"This is the address that you must use for any notices to Us.\": \"This is the address that you must use for any notices to Us.\",\n    \"This reset url has already been used. You must submit a new password reset request.\": \"This reset url has already been used. You must submit a new password reset request.\",\n    \"This time entry is too old to edit.\": \"This time entry is too old to edit.\",\n    \"This time off entry is too old to edit.\": \"This time off entry is too old to edit.\",\n    \"This url has expired or has already been used to verify this email!\": \"This url has expired or has already been used to verify this email!\",\n    \"This username is taken. Please choose another.\": \"This username is taken. Please choose another.\",\n    \"Thursday\": \"Thursday\",\n    \"Time\": \"Time\",\n    \"Time & a Half\": \"Time & a Half\",\n    \"Time Card Conflicts\": \"Time Card Conflicts\",\n    \"Time Card Disclaimer\": \"Time Card Disclaimer\",\n    \"Time Card Disclaimer: \": \"Time Card Disclaimer: \",\n    \"Time Cards\": \"Time Cards\",\n    \"Time Entries\": \"Time Entries\",\n    \"Time Entry\": \"Time Entry\",\n    \"Time Entry Details\": \"Time Entry Details\",\n    \"Time Format\": \"Time Format\",\n    \"Time Keeping\": \"Time Keeping\",\n    \"Time Off\": \"Time Off\",\n    \"Time Off Details\": \"Time Off Details\",\n    \"Time Off Report\": \"Time Off Report\",\n    \"Time and a Half\": \"Time and a Half\",\n    \"Time entry 1\": \"Time entry 1\",\n    \"Time entry 2\": \"Time entry 2\",\n    \"Time entry was started in the future: \": \"Time entry was started in the future: \",\n    \"Title\": \"Title\",\n    \"Today\": \"Today\",\n    \"Today's Breaks\": \"Today's Breaks\",\n    \"Today's Overtime\": \"Today's Overtime\",\n    \"Today's Total\": \"Today's Total\",\n    \"Total\": \"Total\",\n    \"Total Cost\": \"Total Cost\",\n    \"Total Doubletime\": \"Total Doubletime\",\n    \"Total Hours\": \"Total Hours\",\n    \"Total Overtime\": \"Total Overtime\",\n    \"Total Regular Time\": \"Total Regular Time\",\n    \"Total Time\": \"Total Time\",\n    \"Total Time Summary\": \"Total Time Summary\",\n    \"Total Wages\": \"Total Wages\",\n    \"Total budget for all subprojects\": \"Total budget for all subprojects\",\n    \"Total:  %@\": \"Total:  %@\",\n    \"Totals\": \"Totals\",\n    \"Track Paid Breaks: \": \"Track Paid Breaks: \",\n    \"Track Time for: \": \"Track Time for: \",\n    \"Track time on the job for all your employees\": \"Track time on the job for all your employees\",\n    \"Trade\": \"Trade\",\n    \"True\": \"True\",\n    \"Tuesday\": \"Tuesday\",\n    \"Type\": \"Type\",\n    \"Type*\": \"Type*\",\n    \"Type:  %@\": \"Type:  %@\",\n    \"UAH -  Ukrainian hryvnia\": \"UAH -  Ukrainian hryvnia\",\n    \"UGX -  Ugandan shilling\": \"UGX -  Ugandan shilling\",\n    \"USD -  United States dollar\": \"USD -  United States dollar\",\n    \"USD - United States Dollars\": \"USD - United States Dollars\",\n    \"USE OF THE SERVICES\": \"USE OF THE SERVICES\",\n    \"USER AGREEMENT\": \"USER AGREEMENT\",\n    \"UYI -  Uruguay Peso en Unidades Indexadas\": \"UYI -  Uruguay Peso en Unidades Indexadas\",\n    \"UYU -  Uruguayan peso\": \"UYU -  Uruguayan peso\",\n    \"UZS -  Uzbekistan som\": \"UZS -  Uzbekistan som\",\n    \"Unarchive\": \"Unarchive\",\n    \"Unarchive Subproject\": \"Unarchive Subproject\",\n    \"Unarchive Subprojects\": \"Unarchive Subprojects\",\n    \"Unassigned\": \"Unassigned\",\n    \"Ungroup\": \"Ungroup\",\n    \"Ungrouped\": \"Ungrouped\",\n    \"Unit of Measure\": \"Unit of Measure\",\n    \"Units of Measure\": \"Units of Measure\",\n    \"Unknown Error\": \"Unknown Error\",\n    \"Unpaid\": \"Unpaid\",\n    \"Unpaid Time Off\": \"Unpaid Time Off\",\n    \"Update\": \"Update\",\n    \"Update Email\": \"Update Email\",\n    \"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\": \"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\",\n    \"Upgrade\": \"Upgrade\",\n    \"Upgrade Account\": \"Upgrade Account\",\n    \"Upgrade Now\": \"Upgrade Now\",\n    \"Upgrade your account to start tracking time for your employees.\": \"Upgrade your account to start tracking time for your employees.\",\n    \"Upload\": \"Upload\",\n    \"Upload Company Photo\": \"Upload Company Photo\",\n    \"Upload File\": \"Upload File\",\n    \"Upload Image to New Collection\": \"Upload Image to New Collection\",\n    \"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\": \"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\",\n    \"Usage Limitations.\": \"Usage Limitations.\",\n    \"Use Labor Budgets\": \"Use Labor Budgets\",\n    \"Use Labor Budgets: \": \"Use Labor Budgets: \",\n    \"Use Pay Period Dates\": \"Use Pay Period Dates\",\n    \"Use of the Services\": \"Use of the Services\",\n    \"Used\": \"Used\",\n    \"Username\": \"Username\",\n    \"Username is required\": \"Username is required\",\n    \"Username must be at least 6 characters with no spaces\": \"Username must be at least 6 characters with no spaces\",\n    \"Username must be at least 6 characters with no spaces.\": \"Username must be at least 6 characters with no spaces.\",\n    \"VAC\": \"VAC\",\n    \"VEF -  Venezuelan bol\\xEDvar\": \"VEF -  Venezuelan bol\\xEDvar\",\n    \"VND -  Vietnamese dong\": \"VND -  Vietnamese dong\",\n    \"VUV -  Vanuatu vatu\": \"VUV -  Vanuatu vatu\",\n    \"Vacation\": \"Vacation\",\n    \"Validating Please Wait...\": \"Validating Please Wait...\",\n    \"Verification Email Resent\": \"Verification Email Resent\",\n    \"View\": \"View\",\n    \"View Entry History\": \"View Entry History\",\n    \"View GPS\": \"View GPS\",\n    \"View Location\": \"View Location\",\n    \"View Wage history\": \"View Wage history\",\n    \"WARRANTIES AND DISCLAIMERS\": \"WARRANTIES AND DISCLAIMERS\",\n    \"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\": \"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\",\n    \"WST -  Samoan tala\": \"WST -  Samoan tala\",\n    \"Wage\": \"Wage\",\n    \"Wage History\": \"Wage History\",\n    \"Wage Rate\": \"Wage Rate\",\n    \"Wage Type\": \"Wage Type\",\n    \"Wage Type: \": \"Wage Type: \",\n    \"Warning\": \"Warning\",\n    \"Warning:  Are you sure you want to Continue?\": \"Warning:  Are you sure you want to Continue?\",\n    \"Warranties and Disclaimers\": \"Warranties and Disclaimers\",\n    \"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\": \"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\",\n    \"We have sent a confirmation email to\": \"We have sent a confirmation email to\",\n    \"We have sent a new confirmation email to\": \"We have sent a new confirmation email to\",\n    \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following:  Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\": \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following:  Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\",\n    \"We sent you an email with a link to reset your password.\": \"We sent you an email with a link to reset your password.\",\n    \"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\"Claim Against You\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\": \"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\"Claim Against You\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\",\n    \"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\": \"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\",\n    \"Wednesday\": \"Wednesday\",\n    \"Weekly\": \"Weekly\",\n    \"Weekly Overtime (wage x 1.5)\": \"Weekly Overtime (wage x 1.5)\",\n    \"Welcome to busybusy\": \"Welcome to busybusy\",\n    \"What day does your monthly pay period begin?\": \"What day does your monthly pay period begin?\",\n    \"What day does your pay period begin?\": \"What day does your pay period begin?\",\n    \"What days do your pay periods begin?\": \"What days do your pay periods begin?\",\n    \"What overtime rules would you like to use?\": \"What overtime rules would you like to use?\",\n    \"What two days does your Semimonthly pay period begin?\": \"What two days does your Semimonthly pay period begin?\",\n    \"What type of break?\": \"What type of break?\",\n    \"What weekday does your biweekly pay period begin?\": \"What weekday does your biweekly pay period begin?\",\n    \"What weekday does your weekly pay period begin?\": \"What weekday does your weekly pay period begin?\",\n    \"When does your work week begin? (e.g. overtime week)\": \"When does your work week begin? (e.g. overtime week)\",\n    \"When would you like this change to take effect?\": \"When would you like this change to take effect?\",\n    \"When you're ready to process payroll, this is where you'll find reports.\": \"When you're ready to process payroll, this is where you'll find reports.\",\n    \"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\": \"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\",\n    \"Which day was or will be your next pay period?\": \"Which day was or will be your next pay period?\",\n    \"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\": \"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\",\n    \"Worked\": \"Worked\",\n    \"Workers' Compensation\": \"Workers' Compensation\",\n    \"Would you like to run an auto-import each day to retrieve any new Procore data?\": \"Would you like to run an auto-import each day to retrieve any new Procore data?\",\n    \"XAF -  CFA franc BEAC\": \"XAF -  CFA franc BEAC\",\n    \"XBT -  Bitcoin\": \"XBT -  Bitcoin\",\n    \"XCD -  East Caribbean dollar\": \"XCD -  East Caribbean dollar\",\n    \"XOF -  CFA franc BCEAO\": \"XOF -  CFA franc BCEAO\",\n    \"XPF -  CFP franc (Franc du Pacifique)\": \"XPF -  CFP franc (Franc du Pacifique)\",\n    \"YER -  Yemeni rial\": \"YER -  Yemeni rial\",\n    \"Yearly\": \"Yearly\",\n    \"Yearly (Get 2 months free)\": \"Yearly (Get 2 months free)\",\n    \"Yes\": \"Yes\",\n    \"You are about to downgrade your subscription\": \"You are about to downgrade your subscription\",\n    \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is: \": \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is: \",\n    \"You can also import Procore data to busybusy anytime with our easy to use import feature.\": \"You can also import Procore data to busybusy anytime with our easy to use import feature.\",\n    \"You can only view the Admin Position. Changes will not be saved.\": \"You can only view the Admin Position. Changes will not be saved.\",\n    \"You can't delete a position that has members assigned to it.\": \"You can't delete a position that has members assigned to it.\",\n    \"You can't save an overtime period for more than 90 days ago.\": \"You can't save an overtime period for more than 90 days ago.\",\n    \"You cannot delete the default card\": \"You cannot delete the default card\",\n    \"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\": \"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\",\n    \"You must accept the terms and conditions!\": \"You must accept the terms and conditions!\",\n    \"You must fill in the required fields\": \"You must fill in the required fields\",\n    \"You must pick the day of the month your pay period starts on\": \"You must pick the day of the month your pay period starts on\",\n    \"You must pick the day of the week your pay period starts on\": \"You must pick the day of the week your pay period starts on\",\n    \"You must pick the day of your next pay period.\": \"You must pick the day of your next pay period.\",\n    \"You must pick the first day of the month your pay period starts on\": \"You must pick the first day of the month your pay period starts on\",\n    \"You must pick the second day of the month your pay period starts on\": \"You must pick the second day of the month your pay period starts on\",\n    \"You must provide a company name!\": \"You must provide a company name!\",\n    \"You must provide a first name!\": \"You must provide a first name!\",\n    \"You must provide a last name!\": \"You must provide a last name!\",\n    \"You must provide a postal code!\": \"You must provide a postal code!\",\n    \"You must provide a project title.\": \"You must provide a project title.\",\n    \"You must provide a title for this insurance class\": \"You must provide a title for this insurance class\",\n    \"You must provide a username and password!\": \"You must provide a username and password!\",\n    \"You must provide a valid email\": \"You must provide a valid email\",\n    \"You must provide a valid phone number with area code!\": \"You must provide a valid phone number with area code!\",\n    \"You must provide an email to reset your password.\": \"You must provide an email to reset your password.\",\n    \"You must select a later date\": \"You must select a later date\",\n    \"You must select a later date!\": \"You must select a later date!\",\n    \"You must select an insurance type\": \"You must select an insurance type\",\n    \"You must select how often you process payroll\": \"You must select how often you process payroll\",\n    \"You must select when you workweek begins\": \"You must select when you workweek begins\",\n    \"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\"Claim Against Us\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\": \"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\"Claim Against Us\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\",\n    \"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\": \"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\",\n    \"You warrant that You have validly entered into this Agreement and have the legal power to do so.\": \"You warrant that You have validly entered into this Agreement and have the legal power to do so.\",\n    \"You will have control over what items you would like to import, as well as the option of setting up scheduled daily imports that tell busybusy to check Procore for new items and import them without you having to ever lift a finger!\": \"You will have control over what items you would like to import, as well as the option of setting up scheduled daily imports that tell busybusy to check Procore for new items and import them without you having to ever lift a finger!\",\n    \"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\": \"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\",\n    \"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\": \"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\",\n    \"Your File Headers\": \"Your File Headers\",\n    \"Your Responsibilities.\": \"Your Responsibilities.\",\n    \"Your Warranties.\": \"Your Warranties.\",\n    \"Your access has been removed by your company.\": \"Your access has been removed by your company.\",\n    \"Your company account has been created.\": \"Your company account has been created.\",\n    \"Your current employee count is above the limit for this subscription.\": \"Your current employee count is above the limit for this subscription.\",\n    \"Your data should follow the same format.\": \"Your data should follow the same format.\",\n    \"Your email has been verified!\": \"Your email has been verified!\",\n    \"Your password has been reset!\": \"Your password has been reset!\",\n    \"Your passwords do not match!\": \"Your passwords do not match!\",\n    \"ZAR -  South African rand\": \"ZAR -  South African rand\",\n    \"ZMW -  Zambian kwacha\": \"ZMW -  Zambian kwacha\",\n    \"Zip or postal Code\": \"Zip or postal Code\",\n    \"after\": \"after\",\n    \"and\": \"and\",\n    \"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under \\u201COur Warranties\\u201D above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\": \"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under \\u201COur Warranties\\u201D above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\",\n    \"and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\",\n    \"back\": \"back\",\n    \"busybusy Headers\": \"busybusy Headers\",\n    \"busybusy Payroll\": \"busybusy Payroll\",\n    \"click here\": \"click here\",\n    \"clocked-in\": \"clocked-in\",\n    \"file for QuickBooks Web Connector.\": \"file for QuickBooks Web Connector.\",\n    \"go back\": \"go back\",\n    \"hours\": \"hours\",\n    \"hrs \": \"hrs \",\n    \"less than $1\": \"less than $1\",\n    \"less than 1 hour\": \"less than 1 hour\",\n    \"means all electronic data or information submitted by You to the Services.\": \"means all electronic data or information submitted by You to the Services.\",\n    \"means the busybusy.com company described in Section 12.\": \"means the busybusy.com company described in Section 12.\",\n    \"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\": \"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\",\n    \"message\": \"message\",\n    \"mins\": \"mins\",\n    \"next\": \"next\",\n    \"no mapping found\": \"no mapping found\",\n    \"none\": \"none\",\n    \"not set\": \"not set\",\n    \"or call our customer service\": \"or call our customer service\",\n    \"please contact us at legal@busybusy.com\": \"please contact us at legal@busybusy.com\",\n    \"previous\": \"previous\",\n    \"projects successfully!\": \"projects successfully!\",\n    \"select a sync log from the drop down\": \"select a sync log from the drop down\",\n    \"subprojects\": \"subprojects\",\n    \"subscription\": \"subscription\",\n    \"terms & conditions\": \"terms & conditions\",\n    \"these cost codes\": \"these cost codes\",\n    \"these employees\": \"these employees\",\n    \"to busybusy\": \"to busybusy\",\n    \"to see the required headers.\": \"to see the required headers.\",\n    \"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"to upgrade your subscription. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"to upgrade your subscription. If you have any questions, please feel free to contact our customer service at 855-287-9287.\",\n    \"wage x\": \"wage x\",\n    \"with the description\": \"with the description\"\n  };\n});","define(\"busy-app/langs/es\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = {\n    \"(can view, add, edit, and remove lock dates)\": \"(puede ver, agregar, editar y eliminar las fechas de cierre)\",\n    \"+ %@ more\": \"=%@ mas\",\n    \"A work week is a fixed period of seven consecutive days, according to the U.S. Department of Labor. \": \"Una semana de trabajo es un per\\xEDodo fijo de siete d\\xEDas consecutivos, seg\\xFAn el Departamento de trabajo de U.S. \",\n    \"A verification email has been sent to \": \"Un correo electr\\xF3nico de verificaci\\xF3n ha sido enviado a \",\n    \"Account Ready!\": \"Cuenta Lista!\",\n    \"Are you sure you want to delete the lock date for %@ employees?\": \"\\xBFEst\\xE1 seguro que desea  eliminar la fecha cerrad de %@ empleados?\",\n    \"Android\": \"Android\",\n    \"Asphalt\\/Paving\": \"Asfalto\\/Pavimento\",\n    \"Cannot Edit.\": \"No se puede Editar\",\n    \"Check your email!\": \"\\xA1Revise su correo electr\\xF3nico!\",\n    \"Cannot set an effective date older than the lock date\": \"No se puede establecer una fecha efectiva anterior a la fecha de cierre\",\n    \"Civil\\/Heavy Highway\": \"Civil\\/Carretera pesada\",\n    \"Chat\": \"Chatear\",\n    \"Click on the link in the email to activate your account.\": \"Haga clic en el enlace en el correo electr\\xF3nico para activar su cuenta.\",\n    \"Date must be later than the lock date\": \"Fecha debe ser posterior a la fecha de cierre\",\n    \"Drywall\\/Painting\": \"Panel de yeso\\/Pintura\",\n    \"Edit Lock Date\": \"Editar fecha de cerrada\",\n    \"Electrical\": \"El\\xE9ctrico\",\n    \"Errors must be fixed before saving.\": \"Los errores deben de ser arreglados antes de gurdar.\",\n    \"Employees Selected\": \"Empleados seleccionados\",\n    \"Excavation\": \"Excavaci\\xF3n\",\n    \"Exterior Finish\": \"Acabado exterior\",\n    \"Flooring\": \"Piso\",\n    \"Framing\": \"Armaz\\xF3n\",\n    \"General Contractor\": \"Contratista General\",\n    \"How would you like to open busybusy?\": \"\\xBFC\\xF3mo le gustar\\xEDa abrir busybusy?\",\n    \"HVAC\\/Mechanical\": \"HVAC/Mec\\xE1nico\",\n    \"Hours must be more than 0.\": \"Las horas deben ser m\\xE1s de 0.\",\n    \"Just Me\": \"Solo yo\",\n    \"Landscaping\": \"Jardineria\",\n    \"Lock date must be earlier than today\": \"Fecha de cierre debe ser anterior al d\\xEDa de hoy\",\n    \"Lock Date: \": \"Fecha de cierre: \",\n    \"Manage Lock Dates for: \": \"Administrar las fechas de cierre para: \",\n    \"Masonry\": \"Alba\\xF1iler\\xEDa\",\n    \"Move lock date for %@ others selected?\": \"Cambiar la fecha de cierre para %@ otros  seleccionados\",\n    \"No lock dates can be moved\": \"No se puede mover fechas de cierre\",\n    \"Not Locked\": \"No Cerrado\",\n    \"Oil\\/Mining\": \"Aceite/Miner\\xEDa\",\n    \"Open Entries\": \"Entradas abiertas\",\n    \"Open time entries on or before %@ are preventing the lock date from being moved for\": \"Las entradas del tiempo en o antes de la %@ impiden la fecha de cierre se mueva para\",\n    \"Password must contain at least 6 characters including a number and a letter.\": \"La contrase\\xF1a debe contener al menos 6 caracteres incluyendo numeros y letras.\",\n    \"Plumbing\": \"Plomer\\xEDa\",\n    \"Please select a trade\": \"Por favor seleccione un comercio\",\n    \"Please select how many employees your company has\": \"Pro favor  selecciona cuantos empleados tu compa\\xF1ia tiene.\",\n    \"Roofing\": \"Techado\",\n    \"Restoration\": \"Restauraci\\xF3n\",\n    \"Search FAQ\": \"Buscar preguntas m\\xE1s frecuentes\",\n    \"Something went wrong! Please try again.\": \"Algo sali\\xF3 mal! Por favor, int\\xE9ntelo de nuevo.\",\n    \"Structural Steel\": \"Estructuras de acero\",\n    \"Suggest Features\": \"Sugerir caracter\\xEDsticas\",\n    \"The account was not found to verify the email.\": \"No se encontr\\xF3 la cuenta para verificar el correo electr\\xF3nico\",\n    \"The email must be set to request an email verification.\": \"El correo debe configurarse para solicitar una verificaci\\xF3n de correo electr\\xF3nico.\",\n    \"The email was not found in the system.\": \"El correo electr\\xF3nico no fue encontrado en el sistema.\",\n    \"The work week is the basis for overtime calculations and does not have to coincide with the calendar week or with your pay period. \": \"La semana de trabajo es la base para el c\\xE1lculo de horas extras y no tiene que coincidir con la semana del calendario o con su per\\xEDodo de pago. \",\n    \"There was an error creating your account. Please try again.\": \"Se produjo un error al crear su cuenta. Por favor, int\\xE9ntelo de nuevo.\",\n    \"This time period has been locked to prevent editing.\": \"Este per\\xEDodo de tiempo ha sido cerrado para evitar la edici\\xF3n.\",\n    \"Utilities\": \"Utilidad\",\n    \"What type of work do you do?\": \"\\xBFQue tipo de trabajo haces?\",\n    \"We have sent a new verification email to \": \"Hemos enviado un nuevo correo electr\\xF3nico de verificaci\\xF3n a \",\n    \"Website\": \"Sitio web\",\n    \"You must provide a last name.\": \"Debe ingresar un apellido.\",\n    \"You must provide a first name.\": \"Debe ingresar un nombre.\",\n    \"You must provide a valid email.\": \"Debe proporcionar una direcci\\xF3n de correo electr\\xF3nico v\\xE1lida.\",\n    \"You must provide a valid phone number with area code.\": \"Debe proporcionar un n\\xFAmero de tel\\xE9fono v\\xE1lido con c\\xF3digo de \\xE1rea\",\n    \"You must select a type.\": \"Debe seleccionar un tipo.\",\n    \"You must select when you work week begins\": \"Debe seleccionar la fecha de comienzo de su semana laboral\",\n    \"Your work week may begin on any day of the week. For more info see the <a href=\\\"https: \\/\\/www.dol.gov\\/general\\/topic\\/wages\\/overtimepay\\\" target=\\\"_blank\\\">U.S. Department of Labor website.<\\/a>\": \"La semana de trabajo puede comenzar en cualquier d\\xEDa de la semana. Para m\\xE1s informaci\\xF3n ver la  <a href=\\\"https: //www.dol.gov/general/topic/wages/overtimepay\\\" target=\\\"_blank\\\"> Sitio web del Departamento de trabajo</a>\\n \\nEdit\",\n    \"ad_click_date must not be null\": \"ad_click_date must not be null\",\n    \"created_on must not be null\": \"created_on must not be null\",\n    \"employees have lock dates before the selected date\": \"los empleados tienen fechas cerradas antes de la fecha seleccionada\",\n    \"created_on must not be null.\": \"created_on must not be null.\",\n    \"event_type must not be null.\": \"event_type must not be null.\",\n    \"iOS\": \"IOS\",\n    \"member_id does not exist in the database\": \"member_id does not exist in the database\",\n    \"member_id must not be null\": \"member_id must not be null\",\n    \"non-unique primary key\": \"non-unique primary key\",\n    \"organization_id does not exist in the database\": \"organization_id does not exist in the database\",\n    \"source_device_type_id must not be null.\": \"source_device_type_id must not be null.\",\n    \"version must not be null.\": \"version must not be null.\",\n    \" to see how to format your data.\": \" para ver c\\xF3mo dar formato a sus datos.\",\n    \"\\\"Affiliate\\\"\": \"\\\"Afiliado\\\"\",\n    \"\\\"AppExchange\\\"\": \"\\\"IntercambioDeAplicaci\\xF3n\\\"\",\n    \"\\\"Malicious Code\\\"\": \"\\\"C\\xF3digo malicioso\\\"\",\n    \"\\\"Purchased Services\\\"\": \"\\\"Servicios comprados\\\"\",\n    \"\\\"Services\\\"\": \"\\\"Servicios\\\"\",\n    \"\\\"Users\\\"\": \"\\\"Usuarios\\\"\",\n    \"\\\"We,\\\" \\\"Us\\\" or \\\"Our\\\"\": \"\\\"Nosotros,\\\" \\\"Ustedes\\\" o \\\"Nuestro\\\"\",\n    \"\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"\": \"\\\"No podr\\xE1 acceder a nuestros servicios si usted es uno de nuestros competidores directos, salvo mediante previa autorizaci\\xF3n por escrito. Adem\\xE1s, no podr\\xE1 acceder a nuestros servicios para monitorear su disponibilidad, rendimiento o funcionalidad, o por cualquier otro prop\\xF3sito competitivo o comparativo.\\\"\",\n    \"\\\"You\\\" or \\\"Your\\\"\": \"\\\"Usted\\\" o \\\"Su\\\"\",\n    \"\\\"Your Data\\\"\": \"\\\"Sus datos\\\"\",\n    \"$%@\": \"$%@\",\n    \"%\": \"%\",\n    \"%@ Days\": \"%@ d\\xEDas\",\n    \"%@ Days Unpaid\": \"%@ d\\xEDas sin pago\",\n    \"%@ Ending in %@\": \"%@ Termina en %@\",\n    \"%@ Hours\": \"%@ horas\",\n    \"%@ Hrs\": \"%@ Horas\",\n    \"%@ Hrs %@ Mins\": \"%@ Horas %@ Minutos\",\n    \"%@ Hrs %@ Mins %@ Secs\": \"%@ Horas %@ Minutos %@ Segundos\",\n    \"%@ Hrs Paid\": \"%@ h pagadas\",\n    \"%@ Job Costing\": \"%@ Costo del trabajo\",\n    \"%@ employees updated\": \"%@ Empleados actualizados\",\n    \"%@ ending in %@\": \"%@ termina en %@\",\n    \"%@ hours\": \"%@ horas\",\n    \"%@ time %@ with conflicts.\": \"%@ tiempo %@ con conflictos.\",\n    \"%@%\": \"%@%\",\n    \"(Upcoming)\": \"(Pr\\xF3ximo)\",\n    \"(can add, edit, and remove employees and can set their wage, position, etc.)\": \"(puede agregar, editar y quitar empleados y establecer su salario, cargo, etc.)\",\n    \"(can clock in, clock out, and take breaks)\": \"(puede fichar su entrada, su salida y tomar descansos)\",\n    \"(can create and edit time entries)\": \"(puede crear y editar entradas de tiempo)\",\n    \"(can remove photos or edit notes)\": \"(puede quitar fotos o editar notas)\",\n    \"*<b>Project Name<\\/b> is required.\": \"* Es necesario el <b>Nombre del Proyecto<\\/b>.\",\n    \"*Cost Code #, Description and Unit of Measure are required.\": \"* Se necesita un c\\xF3digo de costo #, descripci\\xF3n y unidad de medida.\",\n    \"*Only the first and last names are required.\": \"* Solo son necesarios el nombre de pila y apellido.\",\n    \", go to the\": \", ir a\",\n    \"\\/hour\": \"\\/hora\",\n    \"\\/hr\": \"\\/h\",\n    \"\\/month\": \"\\/mes\",\n    \"\\/week\": \"\\/semana\",\n    \"\\/year\": \"/a\\xF1o\",\n    \"1 hour\": \"1 hora\",\n    \"10 hours\": \"10 horas\",\n    \"11 hours\": \"11 horas\",\n    \"12 hours\": \"12 horas\",\n    \"2 hours\": \"2 horas\",\n    \"3 Parent Projects\": \"3 proyectos principales\",\n    \"3 hours\": \"3 horas\",\n    \"4 hours\": \"4 horas\",\n    \"5 hours\": \"5 horas\",\n    \"6 hours\": \"6 horas\",\n    \"7 hours\": \"7 horas\",\n    \"7477 W. Lake Mead Blvd\": \"7477 W. Lake Mead Blvd\",\n    \"7th Day Doubletime (wage x 2.0)\": \"Doble tiempo en el 7\\xBA d\\xEDa (salario x 2.0)\",\n    \"7th Day Overtime (wage x 1.5)\": \"Horas extras en el 7.\\xBA d\\xEDa (salario x 1.5)\",\n    \"7th Day Overtime (wage x 2.0)\": \"Horas extras en el 7.\\xBA d\\xEDa (salario x 2.0)\",\n    \"7th Day Overtime needs to be less hours than Daily Doubletime.\": \"7\\u02DA dia de tiempo extras debe ser menos que el doble turno diario \",\n    \"8 hours\": \"8 horas\",\n    \"9 hours\": \"9 horas\",\n    \"<b>Manage Budgets<\\/b> (can view, add, edit, and remove budgets)\": \"<b> Administrar Presupuestos <b> (puede ver, agregar, editar, y eliminar  presuspuestos)\",\n    \"<b>Manage Company Settings<\\/b> (can manage settings for the whole company)\": \"<b>Gestionar la configuraci\\xF3n de la empresa</b> (puede gestionar la configuraci\\xF3n de toda la empresa)\",\n    \"<b>Manage Cost Codes<\\/b> (can add, edit, and remove cost codes, and groups)\": \"<b>Gestionar c\\xF3digos de costo</b> (puede agregar, editar y quitar c\\xF3digos de costo y grupos)\",\n    \"<b>Manage Employee Groups<\\/b> (can arrange employees into group)\": \"<b>Gestionar grupos de empleados<\\/b> (puede ordenar a los empleados en grupos)\",\n    \"<b>Manage Projects<\\/b> (can add, edit, and remove projects, subprojects, and groups)\": \"<b>Gestionar proyectos<\\/b> (puede agregar, editar y quitar proyectos, subproyectos y grupos)\",\n    \"<b>Paid<\\/b>\": \"<b>Pagado<\\/b>\",\n    \"<b>View Expenses<\\/b> (can see money spent on projects and paid to employees)\": \"<b>Ver gastos<\\/b> (puede ver la cantidad de dinero gastado en proyectos y en salarios de empleados)\",\n    \"A Plan Must Be Selected!\": \"\\xA1Debe seleccionar un plan!\",\n    \"A conflicting time entry was merged into this time entry.\": \"Una entrada de tiempo conflictiva se combin\\xF3 en esta entrada de tiempo.\",\n    \"A paid \": \"Pagado \",\n    \"A report breakdown of the hours and cost spent per employee.\": \"Un desglose del informe de horas y costos gastados por empleado.\",\n    \"A report breakdown of the hours and cost spent per subproject.\": \"Un desglose del informe de horas y costos gastados por subproyecto.\",\n    \"A report for comparing this projects budget to the actual cost of the project.\": \"Un informe para comparar este presupuesto de proyecto con el costo real del proyecto.\",\n    \"A report for cost code costs by pay period.\": \"Informe de los costos del c\\xF3digo de costo por per\\xEDodo de pago.\",\n    \"A report for employee costs by pay period.\": \"Informe de los costos de un empleado por per\\xEDodo de pago.\",\n    \"A report for employee information.\": \"Informe de informaci\\xF3n de empleado.\",\n    \"A report for employee payroll by pay period.\": \"Informe de n\\xF3mina de empleados por per\\xEDodo de pago.\",\n    \"A report for employee time cards by date range.\": \"Informe de tarjeta de tiempo de empleado entre fechas.\",\n    \"A report for employee time off by date range.\": \"Un informe del tiempo de descanso del empleado por rango de fechas.\",\n    \"A report for project by employee.\": \"Informe de proyecto por empleado.\",\n    \"A report for project costs by pay period.\": \"Informe del costo de un proyecto por per\\xEDodo de pago.\",\n    \"A time card entry was submitted for %@ that overlaps an existing entry.\": \"Se envi\\xF3 una entrada de tarjeta de tiempo para %@ que se superpone con una entrada existente.\",\n    \"A time card entry was submitted for you that overlaps an existing entry.\": \"Se envi\\xF3 una entrada de tarjeta de tiempo que se superpone con una entrada existente.\",\n    \"A time off entry exists for %@ on this day.\": \"Una entrada de tiempo libre existe para %@ en este d\\xEDa.\",\n    \"A time off entry exists for one or more employees on this day.\": \"Una entrad a de tiempo libre existe para uno o m\\xE1s empleados en este d\\xEDa.\",\n    \"AED -  United Arab Emirates dirham\": \"AED - Dirham de Emiratos \\xC1rabes Unidos\",\n    \"AFN -  Afghan afghani\": \"AFN -  Afghan afghani\",\n    \"ALL -  Albanian lek\": \"ALL - Lek alban\\xE9s\",\n    \"AMD -  Armenian dram\": \"AMD - Dram armenio\",\n    \"ANG -  Netherlands Antillean guilder\": \"ANG - Flor\\xEDn antillano\",\n    \"AOA -  Angolan kwanza\": \"AOA - Kwanza angole\\xF1o\",\n    \"ARS -  Argentine peso\": \"ARS - Peso Argentino\",\n    \"AUD -  Australian dollar\": \"AUD - D\\xF3lar australiano\",\n    \"AWG -  Aruban florin\": \"AWG - Flor\\xEDn de Aruba\",\n    \"AZN -  Azerbaijani manat\": \"AZN - Manat azerbaiyano\",\n    \"About\": \"Acerca de \",\n    \"Account Error\": \"Error de cuenta\",\n    \"Account Information\": \"Informaci\\xF3n de la cuenta\",\n    \"Account Settings\": \"Ajustes de cuenta\",\n    \"Acquisition of Non-busybusy.com Products and Services.\": \"Compra de productos y servicios no pertenecientes a busybusy.com.\",\n    \"Actions\": \"Acci\\xF3n\",\n    \"Activity Log\": \"Registro de Actividades\",\n    \"Actual\": \"Actual\",\n    \"Add\": \"Agregar\",\n    \"Add Break\": \"Agregar descanso\",\n    \"Add Card\": \"Agregar Tarjeta\",\n    \"Add Comment\": \"Agregar comentario\",\n    \"Add Cost Code\": \"Agregar c\\xF3digo de costo\",\n    \"Add Employee\": \"Agregar empleado\",\n    \"Add Insurance Class\": \"Agregar clase de seguro\",\n    \"Add Position\": \"Agregar cargo\",\n    \"Add Project\": \"Agregar proyecto\",\n    \"Add Subproject\": \"Agregar subproyecto\",\n    \"Add Time Off\": \"Agregar tiempo no laborado\",\n    \"Add a Company\": \"Agregar empresa\",\n    \"Add a description for this note...\": \"Agregar una descripci\\xF3n para esta nota...\",\n    \"Add new group\": \"Agregar nuevo grupo\",\n    \"Address\": \"Direcci\\xF3n\",\n    \"Address \": \"Direcci\\xF3n \",\n    \"Address 1\": \"Direcci\\xF3n 1\",\n    \"Address 2\": \"Direcci\\xF3n 2\",\n    \"All \": \"Todo \",\n    \"All Cost Codes\": \"Todos los c\\xF3digos de costo\",\n    \"All Employees\": \"Todos los empleados\",\n    \"All Locations\": \"Todas las Ubicaciones\",\n    \"All Projects\": \"Todos los proyectos\",\n    \"All conflicts have been resolved\": \"Se han resuelto todos los conflictos\",\n    \"All errors must be fixed before moving on\": \"Se deben solucionar todos los errores antes de continuar\",\n    \"All errors must be fixed before moving on.\": \"Se deben solucionar todos los errores antes de continuar.\",\n    \"All time\": \"Todos los Tiempos\",\n    \"Always know your labor costs by tracking the time spent on each project.\": \"Siempre saber sus costos de mano de obra por el tiempo dedicado en cada proyecto.\",\n    \"Amount\": \"Cantidad\",\n    \"An error occurred! Please try again later.\": \"\\xA1Ocurri\\xF3 un error! Por favor, vuelva a intentarlo en otro momento.\",\n    \"An existing Procore account\": \"Una cuenta de Procore ya existe\",\n    \"Annual Billing\": \"Facturaci\\xF3n Anual\",\n    \"Any previously sent emails are no longer valid.\": \"Los correos electr\\xF3nicos enviados anteriormente ya no son v\\xE1lidos.\",\n    \"Archive\": \"Archivar\",\n    \"Archive Project\": \"Archivar proyecto\",\n    \"Archive Projects\": \"Archivar proyectos\",\n    \"Archive Subproject\": \"Archivar Subproyecto\",\n    \"Archive Subprojects\": \"Archivar Subproyectos\",\n    \"Archived\": \"Archivado\",\n    \"Are you a business looking to get started with busybusy?\": \"\\xBFEs una empresa que busca comenzar a utilizar busybusy?\",\n    \"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\": \"\\xBFEs un empleado que necesita registrarse? Lo \\xFAnico que necesita es el nombre de usuario y contrase\\xF1a que le brind\\xF3 su empleador y est\\xE1 listo para comenzar.\",\n    \"Are you sure you want to %@ this?\": \"\\xBFEst\\xE1 seguro que desea %@ esto?\",\n    \"Are you sure you want to archive\": \"\\xBFEst\\xE1 seguro que desea archivar?\",\n    \"Are you sure you want to delete this entry?\": \"\\xBFEst\\xE1 seguro de que desea borrar esta entrada?\",\n    \"Are you sure you want to delete this time entry?\": \"\\xBFEst\\xE1 seguro que desea borrar esta entrada?\",\n    \"Are you sure you want to delete this time off entry?\": \"\\xBFEst\\xE1 seguro que desea borrar este tiempo de descanso?\",\n    \"Are you sure you want to delete this wage change?\": \"\\xBFEst\\xE1 seguro de que desea borrar este cambio de salario?\",\n    \"Are you sure you want to delete this?\": \"\\xBFEst\\xE1 seguro que desea borrar esto?\",\n    \"Are you sure you want to stop syncing with Procore?\": \"Confirmar  que deseas detener la   sincronizaci\\xF3n con Procore?\",\n    \"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\": \"Estas seguro que desesa detener la sincronizaci\\xF3n con QuickBooks Web Connector?  Puedes volver a conectarte de nuevo en cualquier momento.\",\n    \"Are you sure you want to take this action?\": \"\\xBFEst\\xE1 seguro de que desea realizar esta acci\\xF3n?\",\n    \"Are you sure?\": \"Estas Seguro?\",\n    \"As used herein, \\\"Confidential Information\\\" means all confidential information disclosed by a party (\\\"Disclosing Party\\\") to the other party (\\\"Receiving Party\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other\\u2019s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\": \"Seg\\xFAn lo descrito en este documento, \\\"Informaci\\xF3n confidencial\\\" es toda aquella informaci\\xF3n confidencial divulgada por una parte, la (\\\"Parte divulgadora\\\"), a otra (\\\"Parte receptora\\\"), ya sea de forma verbal o escrita, que ha sido designada como confidencial o que se entienda razonablemente como confidencial dada la naturaleza de la informaci\\xF3n y las circunstancias de divulgaci\\xF3n. Su informaci\\xF3n confidencial incluye sus datos (salvo los datos ingresados en empresas de terceros o en lugares de trabajo personales, seg\\xFAn lo estipulado en la Secci\\xF3n 3.3 precedente); nuestra informaci\\xF3n confidencial incluye los servicios; y la informaci\\xF3n confidencial de cada parte incluye los t\\xE9rminos y condiciones de este Acuerdo y todos los formularios de pedidos, as\\xED como los planes comerciales y de marketing, la informaci\\xF3n tecnolog\\xEDa y t\\xE9cnica, los planes y dise\\xF1os de productos, y los procesos comerciales divulgados por la otra parte. Sin embargo, la informaci\\xF3n confidencial (aparte de sus datos) no incluir\\xE1 informaci\\xF3n que (i) es o se vuelva de conocimiento p\\xFAblico sin desatender ninguna obligaci\\xF3n de la Parte Divulgadora, (ii) sea conocida por la Parte Receptora antes de su divulgaci\\xF3n, llevada a cabo por la Parte Divulgadora, sin recaer en el incumplimiento de ninguna obligaci\\xF3n a la Parte Divulgadora, (iii) sea enviada por un tercero sin recaer en el incumplimiento de ninguna obligaci\\xF3n a la Parte Divulgadora, o (iv) haya sido desarrollada de manera independiente por la Parte Receptora.\",\n    \"Authentication token not provided\": \"Se\\xF1al de autenticaci\\xF3n no proporcionada \",\n    \"Automatic Import Settings\": \"Importar  ajustes automaticos\",\n    \"BAM -  Bosnia and Herzegovina convertible mark\": \"BAM - Marco convertible\",\n    \"BBD -  Barbados dollar\": \"BBD - d\\xF3lar de Barbados\",\n    \"BDT -  Bangladeshi taka\": \"BDT - Taka de Bangladesh\",\n    \"BGN -  Bulgarian lev\": \"BGN - Lev b\\xFAlgaro\",\n    \"BHD -  Bahraini dinar\": \"BHD - Dinar bahrein\\xED\",\n    \"BIF -  Burundian franc\": \"BIF - Franco de Burundi\",\n    \"BMD -  Bermudian dollar\": \"BMD - D\\xF3lar de Bermudas\",\n    \"BND -  Brunei dollar\": \"BND - D\\xF3lar de Brunei\",\n    \"BOB -  Boliviano\": \"BOB - Boliviano\",\n    \"BRL -  Brazilian real\": \"BRL - Real brasile\\xF1o\",\n    \"BSD -  Bahamian dollar\": \"BSD - D\\xF3lar bahame\\xF1o\",\n    \"BTN -  Bhutanese ngultrum\": \"BTN - Bhut\\xE1n Ngultrum\",\n    \"BWP -  Botswana pula\": \"BWP - pula de Botswana\",\n    \"BYR -  Belarusian ruble\": \"BYR - Rublo bielorruso\",\n    \"BZD -  Belize dollar\": \"BZD - d\\xF3lar de Belice\",\n    \"Back\": \"Atr\\xE1s\",\n    \"Bar Chart\": \"Grafica de barras\",\n    \"Basic\": \"B\\xE1sico\",\n    \"Before adding your employees, you first need to upgrade your account. It's free for 30 days, so you can see how easy we make payroll processing and job costing.\": \"Antes de agregar a sus empleados, primero debe de actualizar su cuenta. Es gratis por 30 d\\xEDas,  asi usted puede ver que tan f\\xE1cil hacesmos  el procesamiento de nomina y costos de trabajo\",\n    \"Beginning\": \"Comienzo\",\n    \"Below is an example of some projects.\": \"A continuaci\\xF3n se encuentra un ejemplo de algunos proyectos.\",\n    \"Biweekly\": \"Bisemanal\",\n    \"Bi-weekly\": \"Bisemanal\",\n    \"Both\": \"Ambos\",\n    \"Break %@\": \"Descanso %@\",\n    \"Break End overlaps future Break Start Time.\": \"El t\\xE9rmino del descanso sobrepasa el comienzo del nuevo descanso.\",\n    \"Break Start must be before Break End.\": \"La hora de entrada del descanso debe ser anterior a la hora de t\\xE9rmino del descanso.\",\n    \"Break Start overlaps previous Break End Time.\": \"El inicio del descanso sobrepasa el fin de un descanso anterior.\",\n    \"Break Time\": \"Tiempo de descanso\",\n    \"Break conflict resolution\": \"Resoluci\\xF3n de conflictos de descanso\",\n    \"Break deleted\": \"Descanso eliminado\",\n    \"Break deleted by conflict resolution\": \"Descanso eliminado en resoluci\\xF3n de conflictos\",\n    \"Break end\": \"Finalizaci\\xF3n del descanso\",\n    \"Break end @ \": \"Termino el descaso @\",\n    \"Break end location\": \"Ubicaci\\xF3n cuando termin\\xF3 el descanso\",\n    \"Break end time must be before the time entry end time.\": \"El fin del descanso debe ser antes de la hora de entrada final.\",\n    \"Break start\": \"Comienzo del descanso\",\n    \"Break start @ \": \"Inicio el descanso @\",\n    \"Break start is outside the entry start time\": \"el inicio del descanso esta fuera de la hora de inicio de entrada\",\n    \"Break start location\": \"Ubicaci\\xF3n donde  empez\\xF3 el descanso\",\n    \"Break start or end overlaps another break\": \"El inicio o el final del descanso sobrepasa el otro descanso.\",\n    \"Break start time must be after the time entry start time.\": \"El inicio del descanso debe ser despu\\xE9s de la hora de entrada.\",\n    \"Break stop is outside the entry stop time\": \"el fin del descanso est\\xE1 fuera de la entrada del tiempo\",\n    \"Breaks\": \"Descansos\",\n    \"Breaks:  \": \"Descansos:  \",\n    \"Budget Used\": \"Presupuesto Utilizado\",\n    \"Budget vs Actual\": \"Presupuesto vs. Real\",\n    \"Budget vs. Actual\": \"Presupuesto en comparaci\\xF3n con valores reales\",\n    \"Budgeted\": \"Presupuestado\",\n    \"Build Deck\": \"Construir plataforma\",\n    \"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\": \"Al usar los servicios, acepta los t\\xE9rminos de este Acuerdo. Si celebra este Acuerdo en nombre de cualquier otra entidad legal, se entiende que tiene la autoridad para obligar a dicha entidad a los t\\xE9rminos y condiciones del Acuerdo.\",\n    \"By:  %@\": \"Por:  %@\",\n    \"CAD -  Canadian dollar\": \"CAD - D\\xF3lar canadiense\",\n    \"CDF -  Congolese franc\": \"CDF - franco congole\\xF1o\",\n    \"CHF -  Swiss franc\": \"CHF - franco suizo\",\n    \"CLP -  Chilean peso\": \"CLP - Peso Chileno\",\n    \"CNY -  Chinese yuan\": \"CNY - Yuan chino\",\n    \"CONFIDENTIALITY\": \"CONFIDENCIALIDAD\",\n    \"COP -  Colombian peso\": \"COP - Peso colombiano\",\n    \"COU -  Unidad de Valor Real\": \"COU - Unidad de Valor real\",\n    \"CRC -  Costa Rican colon\": \"CRC - Col\\xF3n costarricense\",\n    \"CUC -  Cuban convertible peso\": \"CUC - peso cubano convertible\",\n    \"CUP -  Cuban peso\": \"COPA - peso cubano\",\n    \"CVE -  Cape Verde escudo\": \"CVE - escudo de Cabo Verde\",\n    \"CZK -  Czech koruna\": \"CZK - corona checa\",\n    \"California\": \"California\",\n    \"California Settings\": \"Configuraci\\xF3n California\",\n    \"Call us at 1-855-287-9287\": \"Ll\\xE1menos al 1-855-287-9287\",\n    \"Cancel\": \"Cancelar\",\n    \"Card Number\": \"N\\xFAmero de tarjeta\",\n    \"Card Number cannot be blank.\": \"El n\\xFAmero de tarjeta no puede estar vac\\xEDo.\",\n    \"Card Number is Invalid\": \"El n\\xFAmero de tarjeta no es v\\xE1lido\",\n    \"Card Number is Invalid. Please check your number and try again.\": \"El n\\xFAmero de tarjeta no es v\\xE1lido. Por favor, verifique su n\\xFAmero e int\\xE9ntelo nuevamente.\",\n    \"Card was declined. Please check your card and try again.\": \"La tarjeta fue rechazada. Por favor, verifique su tarjeta e int\\xE9ntelo nuevamente.\",\n    \"Cash Allowances\": \"Prestasiones en Efectivo\",\n    \"Change\": \"Editar\",\n    \"Change Collection Project\": \"Cambiar proyecto de recopilaci\\xF3n\",\n    \"Change Current Overtime\": \"Cambiar horas extras actuales\",\n    \"Change Current Wage\": \"Cambiar salario actual\",\n    \"Change Overtime Period\": \"Cambiar per\\xEDodo de horas extras\",\n    \"Change Overtime Rules\": \"Cambiar normas de horas extras\",\n    \"Change Password\": \"Cambiar contrase\\xF1a\",\n    \"Change Pay Period\": \"Cambiar per\\xEDodo de pago\",\n    \"Choose File\": \"Seleccionar archivo\",\n    \"Choose Photos\": \"Seleccionar fotos\",\n    \"Choose a file to upload.\": \"Seleccionar un archivo para cargar.\",\n    \"Choose busybusy.qwc downloaded in Step 2\": \"Seleccionar busybusy.qwc descargado en el Paso 2\",\n    \"City\": \"Ciudad\",\n    \"Click here\": \"Haga clic aqu\\xED\",\n    \"Click here to set up your company.\": \"Haga clic aqu\\xED para configurar su empresa.\",\n    \"Click here to start tracking your time\": \"Haga clic aqu\\xED para enpezar a control de tu  tiempo\",\n    \"Click here to view conflicting time entry history\": \"Haga clic aqu\\xED para visualizar el historial de entradas de tiempo con conflictos\",\n    \"Click save and wait for busybusy Integration Status to say \\u201CConnected\\u201D.\": \"Haga clic en guardar y espere que el Estatus de integraci\\xF3n de busybusy diga 'Conectado'.\",\n    \"Click the verification link in the email to get started with busybusy.\": \"Haga clic en el enlace de verificaci\\xF3n en el correo electr\\xF3nico para empezar a utilizar busybusy.\",\n    \"Clock In\": \"Comenzar\",\n    \"Clock In At\": \"Comenzar a las\",\n    \"Clock Out\": \"Terminar\",\n    \"Clock Out At\": \"Terminar a las\",\n    \"Clock in\": \"Comenzar\",\n    \"Clock in at\": \"Comenzar a las\",\n    \"Clock in at location\": \"Ubicaci\\xF3n cuando empez\\xF3 la entrada\",\n    \"Clock in location\": \"Ubicaci\\xF3n cuando empez\\xF3 la entrada\",\n    \"Clock out\": \"Terminar\",\n    \"Clock out at\": \"Terminar a las\",\n    \"Clock out at location\": \"Ubicaci\\xF3n donde  termin\\xF3 la entrada\",\n    \"Clock out location\": \"Ubicaci\\xF3n cuando termin\\xF3\",\n    \"Clocked In @ \": \"Comenz\\xF3  @\",\n    \"Clocked Out @ \": \"Termino @\",\n    \"Clocking In\": \"Comenz\\xF3 en\",\n    \"Close\": \"Cerrar\",\n    \"Close add group\": \"Cerrar agregar grupo\",\n    \"Collapse All\": \"Contraer todo\",\n    \"Columns\": \"Columnas\",\n    \"Company Information\": \"Informaci\\xF3n de la empresa\",\n    \"Company Logo\": \"Logo de la empresa\",\n    \"Company Name\": \"Nombre de la empresa\",\n    \"Company Position\": \"Posici\\xF3n de la empresa\",\n    \"Company Settings\": \"Ajustes de empresa\",\n    \"Company Setup\": \"Configuraci\\xF3n de la empresa\",\n    \"Company Size\": \"Tama\\xF1o de la Compa\\xF1ia\",\n    \"Company name\": \"Nombre de la empresa\",\n    \"Compelled Disclosure.\": \"Divulgaci\\xF3n impuesta\",\n    \"Concrete\": \"Concreto\",\n    \"Confidentiality\": \"Confidencialidad\",\n    \"Confirm %@\": \"Confirmar %@\",\n    \"Confirm Delete\": \"Confirmar borrar\",\n    \"Confirm Password\": \"Confirmar contrase\\xF1a\",\n    \"Conflict %@\\/%@\": \"Conflicto %@\\/%@\",\n    \"Conflict resolution\": \"Resoluci\\xF3n de conflictos\",\n    \"Conflicting History\": \"Historial de conflictos\",\n    \"Congratulations!\": \"\\xA1Felicitaciones!\",\n    \"Connect\": \"Conectar\",\n    \"Connect to Procore\": \"Conectarse con Procore\",\n    \"Connect to QuickBooks\": \"Conectarse con QuickBooks\",\n    \"Connected\": \"Conectado\",\n    \"Connecting with Procore will automatically export busybusy employees, projects, cost codes and time entries to Procore.\": \"Conectandose con Procore, autom\\xE1ticamente exportar\\xE1 busybusy empleados, proyectos, c\\xF3digos de costo y tiempo de entradas a Procore\",\n    \"Connection Error\": \"Error de conexi\\xF3n\",\n    \"Contact Information\": \"Informaci\\xF3n de contacto\",\n    \"Continue\": \"Continuar\",\n    \"Copy project structure from: \": \"Copiar estructura de proyecto de: \",\n    \"Cost\": \"Costo\",\n    \"Cost Code\": \"C\\xF3digo de costo\",\n    \"Cost Code #\": \"C\\xF3digo de costo n.\\xB0\",\n    \"Cost Code Export\": \"Exportar C\\xF3digo de Costo\",\n    \"Cost Code Import\": \"Importar Codigo de Costos\",\n    \"Cost Code Import Error\": \"Error de importaci\\xF3n de c\\xF3digo de costo\",\n    \"Cost Code Import Step 1 of 3\": \"Importaci\\xF3n de c\\xF3digo de costo, Paso 1 de 3\",\n    \"Cost Code Import Step 2 of 3\": \"Importaci\\xF3n de c\\xF3digo de costo, Paso 2 de 3\",\n    \"Cost Code Import Step 3 of 3\": \"Importaci\\xF3n de c\\xF3digo de costo, Paso 3 de 3\",\n    \"Cost Code Information\": \"Informaci\\xF3n de c\\xF3digo de costo\",\n    \"Cost Code Job Costing\": \"C\\xF3digo de costo del costeo por puestos de trabajo\",\n    \"Cost Code: \": \"C\\xF3digo de costo: \",\n    \"Cost Code:  \": \"C\\xF3digo de costo:  \",\n    \"Cost Codes\": \"C\\xF3digos de costo\",\n    \"Cost Codes Imported\": \"Importar C\\xF3digos de Costo\",\n    \"Cost Codes Updated\": \"Actualizar Codigo de Costo\",\n    \"Cost code\": \"C\\xF3digo de costo\",\n    \"Cost code is required.\": \"Codigo de coste es requerido\",\n    \"Cost code number is required for all imported cost codes. There were %@ missing cost code numbers. Please check your uploaded file and try again.\": \"Numeros de  C\\xF3digos de Costo  son  necesario para todos los c\\xF3digos de costos importados. Hab\\xEDa %@ falta c\\xF3digos de costo. Por favor, compruebe su archivo e int\\xE9ntelo de nuevo.\",\n    \"Coupon Code\": \"C\\xF3digo de cup\\xF3n\",\n    \"Coupon Discount\": \"Descuento con cup\\xF3n\",\n    \"Create a row for each of the colored end projects.\": \"Crear una fila para cada uno de los proyectos finales coloreados.\",\n    \"Created By\": \"Creado por\",\n    \"Created by: \": \"Creado por:\",\n    \"Created by:  %@\": \"Creado por:  %@\",\n    \"Created on: \": \"Fecha de creaci\\xF3n:\",\n    \"Created on:  %@\": \"Creado el:  %@\",\n    \"Credit Card\": \"Tarjeta de cr\\xE9dito\",\n    \"Currency\": \"Moneda\",\n    \"Current Activity\": \"Actividad actual\",\n    \"Current Overtime\": \"Horas extras actuales\",\n    \"Current Overtime Period\": \"Per\\xEDodo actual de horas extras\",\n    \"Current Wage\": \"Salario actual\",\n    \"Currently Importing...\": \"Actualmente Importando ...\",\n    \"Custom\": \"Personalizar\",\n    \"Custom Settings\": \"Configuraci\\xF3n personalizada\",\n    \"Customer\": \"Cliente\",\n    \"DEFINITIONS\": \"DEFINICIONES\",\n    \"DJF -  Djiboutian franc\": \"DJF - franco de Yibuti\",\n    \"DKK -  Danish krone\": \"DKK - Corona danesa\",\n    \"DOP -  Dominican peso\": \"DOP - peso dominicano\",\n    \"DZD -  Algerian dinar\": \"DZD - Dinar argelino\",\n    \"Daily\": \"Diario\",\n    \"Daily By Project\": \"Proyecto por el diario\",\n    \"Daily Doubletime must be greater than daily overtime!\": \"\\xA1El doble tiempo diario debe ser mayor que las horas extras diarias!\",\n    \"Daily Overtime (wage x 1.5)\": \"Horas extras diarias (salario x1.5)\",\n    \"Daily Overtime (wage x 2.0)\": \"Horas extras diarias (salario x2.0)\",\n    \"Daily Overtime needs to be less hours than Daily Doubletime.\": \"\\xA1El doble tiempo diario debe ser mayor que las horas extras diarias!\",\n    \"Daily Time Flag (hours worked until flagged)\": \"Horas efectivas diarias (horas trabajadas hasta fichar salida)\",\n    \"Daily Time Flag (hours worked until flagged): \": \"Horas efectivas diarias (horas trabajadas hasta fichar salida):\",\n    \"Daily Total\": \"Total diario\",\n    \"Dashboard\": \"Panel de control\",\n    \"Data not yet imported.\": \"Los datos todavia no se han importado.\",\n    \"Date\": \"Fecha\",\n    \"Date Range\": \"Rango de fechas\",\n    \"Day\": \"D\\xEDa\",\n    \"Definition of Confidential Information.\": \"Definici\\xF3n de informaci\\xF3n confidencial\",\n    \"Definitions\": \"Definiciones\",\n    \"Delete\": \"Eliminar\",\n    \"Delete Collection\": \"Eliminar recopilaci\\xF3n\",\n    \"Delete Comment\": \"Eliminar comentario\",\n    \"Delete this Collection?\": \"\\xBFEliminar esta recopilaci\\xF3n?\",\n    \"Delete this comment: \": \"Eliminar este comentario:\",\n    \"Deleted\": \"Eliminado\",\n    \"Deleted by conflict resolution\": \"Eliminado en resoluci\\xF3n de conflictos\",\n    \"Deleted successfuly\": \"Eliminado correctamente\",\n    \"Deleting Position\": \"Eliminando cargo\",\n    \"Deleting note card...\": \"Eliminando nota de tarjeta...\",\n    \"Deleting...\": \"Eliminando...\",\n    \"Description\": \"Descripci\\xF3n\",\n    \"Description is required for all imported cost codes. There were %@ missing descriptions. Please check your uploaded file and try again.\": \"Descripci\\xF3n es requerida para todos los c\\xF3digos de costos importados. Hab\\xEDa %@ faltan las descripciones. Por favor, compruebe su archivo e int\\xE9ntelo de nuevo.\",\n    \"Description: \": \"Descripci\\xF3n: \",\n    \"Description:  \": \"Descripci\\xF3n:  \",\n    \"Details\": \"Detalles\",\n    \"Details:  \": \"Detalles:  \",\n    \"Device:  %@\": \"Dispositivo:  %@\",\n    \"Disclaimer.\": \"Cl\\xE1usula de exenci\\xF3n de responsabilidad\",\n    \"Disconnect\": \"Desconectar\",\n    \"Disconnect from QuickBooks\": \"Desconectar de QuickBooks\",\n    \"Disconnecting\": \"Desconectar\",\n    \"Doe Residence\": \"Lugar de residencia\",\n    \"Don't worry, you can cancel at any time.\": \"No te preocupes, puedes cancelar en cualquier momento.\",\n    \"Done\": \"Hecho\",\n    \"Double Time\": \"Doble tiempo\",\n    \"Doubletime\": \"Doble tiempo\",\n    \"Downgrade\": \"Versi\\xF3n anterior\",\n    \"Downgrade to Free\": \"Volver a la versi\\xF3n gratuita\",\n    \"Downgrading will archive your team, but will allow you to maintain access to the company tools and data.\": \"Si vuelve a una versi\\xF3n anterior, se archivar\\xE1 su equipo, pero podr\\xE1 mantener el acceso a las herramientas y los datos de la empresa.\",\n    \"Download\": \"Descargar\",\n    \"Download and install\": \"Descargar e instalar\",\n    \"Download our\": \"Descargar nuestro\",\n    \"Download this <a class='d-button text' href='docs\\/project-headers.csv'>Sample File<\\/a> to get started.\": \"Descargue este <a class='d-button text' href='docs\\/project-headers.csv'>Archivo de muestra<\\/a> para comenzar.\",\n    \"Drag Positions up or down\": \"Arrastre un cargo\",\n    \"Drag a file or click here to change your photo.\": \"Arrastre un archivo o haga clic aqu\\xED para cambiar su foto.\",\n    \"Drag a file or click here to upload a photo.\": \"Arrastre un archivo o haga clic aqu\\xED para cargar una foto.\",\n    \"Drag files or click here to change your photos.\": \"Arrastre los archivos o haga clic aqu\\xED para cambiar sus fotos.\",\n    \"Drag files or click here to upload a photos.\": \"Arrastre los archivos o haga clic aqu\\xED para cargar fotos.\",\n    \"Drag files or click here to upload files\": \"Arrastre los archivos o haga clic aqu\\xED para cargar archivos.\",\n    \"Duplicate\": \"Duplicar\",\n    \"Duplicate Project\": \"Duplicar proyecto\",\n    \"Duration\": \"Duraci\\xF3n\",\n    \"E Street Garage\": \"Garaje en E Street\",\n    \"EGP -  Egyptian pound\": \"EGP - libra egipcia\",\n    \"END of User Agreement\": \"Acuerdo para Usuario FINAL\",\n    \"ERN -  Eritrean nakfa\": \"ERN - nakfa Eritrea\",\n    \"ETB -  Ethiopian birr\": \"ETB - Birr et\\xEDope\",\n    \"EUR -  Euro\": \"EUR - Euro\",\n    \"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\": \"SALVO LO ESTABLECIDO EN EL PRESENTE, NINGUNA PARTE HA BRINDADO GARANT\\xCDAS DE NINGUN TIPO, YA SEA DE MANERA EXPL\\xCDCITA, IMPL\\xCDCITA, LEGAL O DE CUALQUIER OTRA FORMA, Y CADA PARTE SE EXIME ESPEC\\xCDFICAMENTE DE LA RESPONSABILIDAD QUE IMPLIQUE CUALQUIER GARANT\\xCDA IMPL\\xCDCITA, INCLUIDAS LAS GARANT\\xCDAS DE COMERCIABILIDAD O IDONEIDAD PARA UN PROP\\xD3SITO ESPEC\\xCDFICO, HASTA EL GRADO M\\xC1XIMO PERMITIDO POR LA LEGISLACI\\xD3N VIGENTE.\",\n    \"Edit\": \"Editar\",\n    \"Edit Break\": \"Editar descanso\",\n    \"Edit Card\": \"Editar tarjeta\",\n    \"Edit Company Profile\": \"Editar perfil de la empresa\",\n    \"Edit Cost Code\": \"Editar c\\xF3digo de costo\",\n    \"Edit Current Entry\": \"Editar entrada actual\",\n    \"Edit Date\": \"Fecha editada\",\n    \"Edit Details\": \"Editar detalles\",\n    \"Edit Insurance Class\": \"Editar clase de seguro\",\n    \"Edit Locked\": \"Editor bloqueado\",\n    \"Edit No Changes Made\": \"Editar la secci\\xF3n Ning\\xFAn cambio realizado\",\n    \"Edit Notecard\": \"Editar tarjeta de notas\",\n    \"Edit Photo\": \"Editar foto\",\n    \"Edit Position\": \"Editar cargo\",\n    \"Edit Profile\": \"Editar perfil\",\n    \"Edit Project\": \"Editar proyecto\",\n    \"Edit Subscription\": \"Editar suscripci\\xF3n\",\n    \"Edit Time Entries for: \": \"Editar entradas de tiempo para:\",\n    \"Edit Time Entry\": \"Editar entrada de tiempo\",\n    \"Edit Time Off\": \"Editar tiempo no laborado\",\n    \"Edit Time Off Entry\": \"Editar entrada de tiempo no laborado\",\n    \"Edited break\": \"Descanso editado\",\n    \"Effective As Of: \": \"Efectivo a partir del:\",\n    \"Effective Date\": \"Fecha efectiva\",\n    \"Effective Date: \": \"Fecha efectiva:\",\n    \"Effective Date:  %@\": \"Fecha efectiva: %@\",\n    \"Effective Hourly Rate: \": \"Tarifa efectiva por hora: \",\n    \"Effective Hourly Rate:  \": \"Tarifa efectiva por hora: \",\n    \"Eliminate Paper Time Cards\": \"Elimina el papeleo de las las tarjetas de tiempo\",\n    \"Email\": \"Correo electr\\xF3nico\",\n    \"Email must be a vaild email address.\": \"El correo electr\\xF3nico debe ser una direcci\\xF3n de correo electr\\xF3nico v\\xE1lida.\",\n    \"Employee\": \"Empleado\",\n    \"Employee Cost\": \"Costo del empleado\",\n    \"Employee ID\": \"ID del empleado\",\n    \"Employee Id\": \"ID del empleado\",\n    \"Employee Import Error\": \"Error de importaci\\xF3n del empleado\",\n    \"Employee Import Step 1 of 4\": \"Importaci\\xF3n del empleado, Paso 1 de 4\",\n    \"Employee Import Step 2 of 4\": \"Importaci\\xF3n del empleado, Paso 2 de 4\",\n    \"Employee Import Step 3 of 4\": \"Importaci\\xF3n del empleado, Paso 3 de 4\",\n    \"Employee Import Step 4 of 4\": \"Importaci\\xF3n del empleado, Paso 4 de 4\",\n    \"Employee Information\": \"Informaci\\xF3n del empleado\",\n    \"Employee Job Costing\": \"Costo del trabajo del empleado\",\n    \"Employee List\": \"Lista de empleados\",\n    \"Employee Locations\": \"Ubicaciones de los empleados\",\n    \"Employee Payroll Report\": \"Informe de n\\xF3mina de empleados\",\n    \"Employee Project\": \"Proyecto del empleado\",\n    \"Employee Report\": \"Informe del empleado\",\n    \"Employees\": \"Empleados\",\n    \"Employees Export\": \"Exportar Empleados\",\n    \"Employees Import\": \"Importar Empleados\",\n    \"Employees Imported\": \"Empleados Importados\",\n    \"Employees Updated\": \"Empleados Actualizados\",\n    \"Enable Cost Codes\": \"Habilitar c\\xF3digos de costo\",\n    \"Enable Cost Codes: \": \"Habilitar c\\xF3digos de costo:\",\n    \"Enable Paid Breaks\": \"Activar pago por descansos\",\n    \"End Break\": \"Terminar descanso\",\n    \"End Time\": \"Hora de t\\xE9rmino\",\n    \"End Time must not be before a Break End Time.\": \"La hora de salida no debe de ser antes del fin del descanso.\",\n    \"End time\": \"Hora de t\\xE9rmino\",\n    \"End time must be within the past 90 days.\": \"La hora de t\\xE9rmino debe estar dentro de los \\xFAltimos 90 d\\xEDas.\",\n    \"End time:  \": \"Hora de t\\xE9rmino:  \",\n    \"Enter Project Address\": \"Ingresar la Direccion del Projecto\",\n    \"Enter notes here.\": \"Ingrese las notas aqu\\xED.\",\n    \"Enter your email\": \"Ingrese su correo electr\\xF3nico\",\n    \"Entries\": \"Entradas\",\n    \"Entries older than 90 days can not be changed again.\": \"Las entradas de mas de 90 d\\xEDas no pueden ser cambiadas otra vez.\",\n    \"Entry\": \"Entrada\",\n    \"Entry History\": \"Historial de entradas\",\n    \"Equipment\": \"Maquinas \",\n    \"Equipment: \": \"Maquinas \",\n    \"Error\": \"Error\",\n    \"Est. Cost\": \"Costo estimado\",\n    \"Estimated Cost (hourly)\": \"Costo estimado (por hora)\",\n    \"Estimated Cost (salary)\": \"Costo estimado (salario)\",\n    \"Estimated Cost of Employee\": \"Costo estimado del empleado\",\n    \"Estimated Hourly Cost: \": \"Costo estimado por hora:\",\n    \"Estimated Total Cost\": \"Costo estimado total\",\n    \"Every %@\": \"Cada %@\",\n    \"Every other %@\": \"Cada %@\",\n    \"Exclusion of Consequential and Related Damages.\": \"Exclusi\\xF3n de da\\xF1os emergentes y relacionados.\",\n    \"Exclusive Remedy.\": \"\\xDAnico recurso.\",\n    \"Exp. Month\": \"Mes de vencimiento\",\n    \"Exp. Year\": \"A\\xF1o de vencimiento\",\n    \"Exp. Year and Exp. Month are required to update a card.\": \"El a\\xF1o y mes de vencimiento son necesarios para actualizar una tarjeta.\",\n    \"Exp:  %@\\/%@\": \"Vto:  %@\\/%@\",\n    \"Expand All\": \"Mostrar Todo\",\n    \"Expected Hours Per Week can't be zero\": \"La cantidad de Horas por semana no puede ser cero\",\n    \"Expected Hours Per Week: \": \"Horas esperadas por semana:\",\n    \"Export\": \"Exportar\",\n    \"FEES AND PAYMENT FOR PURCHASED SERVICES\": \"TARIFAS Y PAGO DE LOS SERVICIOS CONTRATADOS\",\n    \"FJD -  Fiji dollar\": \"FJD - D\\xF3lar de Fiji\",\n    \"FKP -  Falkland Islands pound\": \"FKP - libra de las Islas Malvinas\",\n    \"FROM\": \"DE\",\n    \"False\": \"FALSE\",\n    \"Federal Government End Use Provisions.\": \"Disposiciones para usuarios finales del gobierno federal.\",\n    \"Fees and Payment for Purchased Services\": \"Tarifas y pago de los servicios contratados\",\n    \"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\": \"Las tarifas por los servicios contratados se encuentran publicadas en el sitio. Cuando se suscribe a cualquiera de estos servicios, se le pedir\\xE1 un m\\xE9todo de pago.\",\n    \"File Name\": \"Nombre del archivo\",\n    \"Filter\": \"Filtro\",\n    \"Finish\": \"Finalizar\",\n    \"First Name\": \"Nombre\",\n    \"First Name is required\": \"Es necesario ingresar el nombre\",\n    \"Follow Company Settings\": \"Continuar los ajustes de la empresa\",\n    \"For example, if you have a Procore cost code division of <strong>01<\\/strong> with title of <strong>General Requirements<\\/strong> and within that division has a cost code of <strong>10<\\/strong> with the title <strong>Cash Allowances<\\/strong>, the following two cost codes will appear in busybusy after importing: \": \"Por ejemplo, si usted tiene una divisi\\xF3n de c\\xF3digo de costo de Procore <strong>01</strong> con el t\\xEDtulo de <strong>Requisitos generales</strong> y dentro de \\xE9sta divisi\\xF3n tiene un c\\xF3digo de costo de <strong>10</strong> con el t\\xEDtulo <strong>prestaciones en efectivo</strong>, los siguientes dos c\\xF3digos de costo aparecer\\xE1n en busybusy despu\\xE9s de importar: \",\n    \"For example, if you have a busybusy project named <strong>Johnson Home<\\/strong> which has a subproject named Concrete<\\/strong>, exporting will create the following projects inside Procore: \": \"Por ejemplo, si usted tiene un proyecto de busybusy con el nombre <strong>Casa de Johnson</strong> que tiene un subproyecto llamado Cemento</strong>, la exportaci\\xF3n crear\\xE1 los siguientes proyectos dentro de Procore \",\n    \"For further assistance please send us a\": \"Para obtener asistencia t\\xE9cnica, env\\xEDenos un\",\n    \"Forgot Your Password?\": \"\\xBFOlvid\\xF3 su contrase\\xF1a?\",\n    \"Forgot your username or password? \": \"\\xBFOlvid\\xF3 su nombre de usuario o contrase\\xF1a? \",\n    \"Foundation\": \"Base\",\n    \"Free\": \"Gratuito\",\n    \"Friday\": \"Viernes\",\n    \"Full Map\": \"Mapa completo\",\n    \"Full Report\": \"Informe completo\",\n    \"GBP -  Pound sterling\": \"GBP - libra esterlina\",\n    \"GEL -  Georgian lari\": \"GEL - Lari georgianos\",\n    \"GHS -  Ghanaian cedi\": \"GHS - Cedi de Ghana\",\n    \"GIP -  Gibraltar pound\": \"GIP - Libra de Gibraltar\",\n    \"GMD -  Gambian dalasi\": \"GMD - Dalasi de Gambia\",\n    \"GNF -  Guinean franc\": \"GNF - Guinea franco\",\n    \"GPS Location\": \"Ubicacion GPS\",\n    \"GTQ -  Guatemalan quetzal\": \"GTQ - Quetzal de Guatemala\",\n    \"GYD -  Guyanese dollar\": \"GYD - d\\xF3lar guyan\\xE9s\",\n    \"General\": \"General\",\n    \"General Liability\": \"Responsabilidad civil\",\n    \"General Provisions\": \"Disposiciones generales\",\n    \"General Requirements\": \"Requisitos Generales\",\n    \"General Settings\": \"Ajustes generales\",\n    \"Geolocation\": \"Geolocalizaci\\xF3n\",\n    \"Geolocation Set\": \"Geolocalizaci\\xF3n establecida\",\n    \"Geolocation required for location reminders.\": \"Geolocalizaci\\xF3n es requerida para recordatorios de la ubicaci\\xF3n\",\n    \"Get more from busybusy\": \"Obten mas de busybusy\",\n    \"Getting Started\": \"Introducci\\xF3n\",\n    \"Go on Break\": \"Comenzar el descanso\",\n    \"Group Name\": \"Nombre del grupo\",\n    \"HKD -  Hong Kong dollar\": \"HKD - d\\xF3lar de Hong Kong\",\n    \"HNL -  Honduran lempira\": \"HNL - lempira hondure\\xF1o\",\n    \"HOL\": \"HOL\",\n    \"HRK -  Croatian kuna\": \"HRK - Kuna croata\",\n    \"HTG -  Haitian gourde\": \"HTG - Gourde haitiano\",\n    \"HUF -  Hungarian forint\": \"HUF - Flor\\xEDn h\\xFAngaro\",\n    \"Headers\": \"Encabezados\",\n    \"Help\": \"Ayuda\",\n    \"Hide Details\": \"Ocultar detalles\",\n    \"Hide wage History\": \"Ocultar historial de salarios\",\n    \"Holiday\": \"D\\xEDa festivo\",\n    \"Hourly\": \"Por hora\",\n    \"Hours\": \"Horas\",\n    \"Hours Worked\": \"Horas trabajadas\",\n    \"How busybusy handles layered cost codes during import\": \"C\\xF3mo Busybusy maneja capas c\\xF3digos de costos durante la importaci\\xF3n\",\n    \"How busybusy handles layered projects during export\": \"C\\xF3mo Busybusy maneja capas de proyectos durante la importaci\\xF3n\",\n    \"How busybusy handles syncing with Procore\": \"C\\xF3mo busybusy maneja la sincronizaci\\xF3n con Procore\",\n    \"How can we help?\": \"Eneque te podemos ayudar?\",\n    \"How often do you process payroll?\": \"\\xBFCon qu\\xE9 frecuencia procesa la n\\xF3mina?\",\n    \"I agree to the \": \"Acepto \",\n    \"I did not receive an email.\": \"No recib\\xED un correo electr\\xF3nico.\",\n    \"I entered the wrong email.\": \"Ingres\\xE9 el correo electr\\xF3nico incorrecto.\",\n    \"IDR -  Indonesian rupiah\": \"IDR - Rupia indonesia\",\n    \"ILS -  Israeli new shekel\": \"ILS - nuevo shekel israel\\xED\",\n    \"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\": \"EN NING\\xDAN CASO UNA PARTE SER\\xC1 RESPONSABLES PARA CON LA OTRA POR CUALQUIER P\\xC9RDIDA DE BENEFICIOS O GANANCIAS O POR LOS DA\\xD1OS PUNITIVOS, INDIRECTOS, ESPECIALES, FORTUITOS, EMERGENTES O DE COBERTURA CAUSADOS, YA SEA POR CONTRATO, POR UN ACTO CIVIL IL\\xCDCITO O CUALQUIER OTRO PRINCIPIO DE RESPONSABILIDAD CIVIL, Y SIN IMPORTAR SI LA PARTE HA SIDO ASESORADA SOBRE LA POSIBILIDAD DE QUE SURJAN DICHOS DA\\xD1OS. LA CL\\xC1USULA DE EXENCI\\xD3N DE RESPONSABILIDAD ANTERIOR NO DEBE APLICARSE EN LA MEDIDA EN QUE LO PROH\\xCDBA LA LEGISLACI\\xD3N VIGENTE.\",\n    \"INR -  Indian rupee\": \"INR - Rupia india\",\n    \"IQD -  Iraqi dinar\": \"IQD - Dinar iraqu\\xED\",\n    \"IRR -  Iranian rial\": \"IRR - Rial iran\\xED\",\n    \"ISK -  Icelandic kr\\xF3na\": \"ISK - Corona islandesa\",\n    \"If you have any questions or concerns regarding this agreement,\": \"Si tiene alguna pregunta o inquietud sobre este Acuerdo,\",\n    \"If you would like to import your existing procore data into busybusy, simply connect to Procore and click on the Import Data option.\": \"Si desea importar los datos de Procore en busybusy, simplemente conectarse a Procore y haga clic en la opcion de importar datos.\",\n    \"Import\": \"importar\",\n    \"Import Cost Codes\": \"Importar c\\xF3digos de costo\",\n    \"Import Employees\": \"Importar los empleados\",\n    \"Import Projects\": \"Importar proyectos\",\n    \"Import employees, projects and cost codes from Procore.\": \"Importar Empleados, Proyectos y  Codigos de Costo de Procore .\",\n    \"Import in progress\": \"importacion en progreso\",\n    \"Importing cost codes %@%\": \"Importando c\\xF3digos de costo %@%\",\n    \"Importing employees %@%\": \"Importando empleados %@%\",\n    \"Importing projects\": \"Importar proyectos\",\n    \"Improve Job Costing & Simplify the Payroll Process\": \"mejora el costo de trabajo & simplifica el proceso de nomina.\",\n    \"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\": \"En ese caso, los da\\xF1os ser\\xE1n determinados en un tribunal competente o resueltos mediante arbitraje.\",\n    \"Indemnification by Us.\": \"Indemnizaci\\xF3n por parte nuestra.\",\n    \"Indemnification by You.\": \"Indemnizaci\\xF3n por su parte.\",\n    \"Install HVAC\": \"Instalar HVAC\",\n    \"Insurance Class\": \"Clase de seguro\",\n    \"Insurance Classes\": \"Clases de seguros\",\n    \"Insurance General Liability Class\": \"Clase de seguro de responsabilidad civil\",\n    \"Insurance Workers' Compensation Class\": \"Clase de seguros de indemnizaci\\xF3n por accidentes de trabajo\",\n    \"Integration with Non-busybusy.com Services.\": \"Integraci\\xF3n con servicios no pertenecientes a busybusy.com.\",\n    \"Integrations\": \"Integraciones\",\n    \"Intuit QuickBooks\": \"QuickBooks intuitivo\",\n    \"Invoice Date\": \"Fecha de factura\",\n    \"Invoice History\": \"Historial de facturas\",\n    \"Invoice Period\": \"Per\\xEDodo de facturaci\\xF3n\",\n    \"Is Paid:  \": \"Se Paga:\",\n    \"It\\u2019s that simple!\": \"Es as\\xED de simple!\",\n    \"JMD -  Jamaican dollar\": \"JMD - d\\xF3lar de Jamaica\",\n    \"JOD -  Jordanian dinar\": \"JOD - Dinar jordano\",\n    \"JPY -  Japanese yen\": \"JPY - El yen japon\\xE9s\",\n    \"Job Costing\": \"Costo del trabajo\",\n    \"Job Details\": \"Detalles del trabajo\",\n    \"Johnson Home\": \"La casa de Johnson\",\n    \"KES -  Kenyan shilling\": \"KES - Chel\\xEDn keniano\",\n    \"KGS -  Kyrgyzstani som\": \"KGS - som kirgu\\xEDs\",\n    \"KHR -  Cambodian riel\": \"KHR - Riel camboyano\",\n    \"KMF -  Comoro franc\": \"Franco Comoro - KMF\",\n    \"KPW -  North Korean won\": \"KPW - Won de Corea del Norte\",\n    \"KRW -  South Korean won\": \"KRW - Corea del Sur gan\\xF3\",\n    \"KWD -  Kuwaiti dinar\": \"KWD - Dinar kuwait\\xED\",\n    \"KYD -  Cayman Islands dollar\": \"KYD - D\\xF3lar de las Islas Caim\\xE1n\",\n    \"KZT -  Kazakhstani tenge\": \"KZT - tenge kazajo\",\n    \"Know where your employees are and what they are working on\": \"Saber donde sus empleados se encuentran y en que est\\xE1n trabajando\",\n    \"LAK -  Lao kip\": \"LAK - Kip laosiano\",\n    \"LBP -  Lebanese pound\": \"LBP - Libra libanesa\",\n    \"LIMITATION OF LIABILITY\": \"L\\xCDMITES DE LA RESPONSABILIDAD\",\n    \"LKR -  Sri Lankan rupee\": \"LKR - Rupia de Sri Lanka\",\n    \"LRD -  Liberian dollar\": \"LRD - D\\xF3lar liberiano\",\n    \"LSL -  Lesotho loti\": \"LSL - Loti Lesoto\",\n    \"LTL -  Lithuanian litas\": \"LTL - Litas lituana\",\n    \"LVL -  Latvian lats\": \"LVL - lats\",\n    \"LYD -  Libyan dinar\": \"LYD - Dinar libio\",\n    \"Labor Budget\": \"Presupuesto de mano de obra\",\n    \"Labor Burden\": \"Costos laborales\",\n    \"Labor Burden %\": \"Costos laborales %\",\n    \"Labor Burden: \": \"Costos laborales:\",\n    \"Labor Cost\": \"Costo laboral\",\n    \"Labor Cost Spent\": \"Costo laboral incurrido\",\n    \"Labor Hours\": \"Horas laborables\",\n    \"Labor Hours Worked\": \"Horas laborables trabajadas\",\n    \"Las Vegas, NV 89128-1028\": \"Las Vegas, NV 89128-1028\",\n    \"Last Import\": \"Ultima Importaci\\xF3n:\",\n    \"Last Name\": \"Apellido\",\n    \"Last Name is required\": \"Es necesario ingresar el apellido\",\n    \"Latest Activity\": \"Actividad m\\xE1s reciente\",\n    \"Learn more\": \"Aprende m\\xE1s\",\n    \"Limitation of Liability\": \"L\\xEDmites de la responsabilidad\",\n    \"Limitation of Liability.\": \"L\\xEDmites de la responsabilidad.\",\n    \"Loading Log Details...\": \"Cargando Detalles de Registro...\",\n    \"Loading Log Entries...\": \"Cargando Entrada de Registro...\",\n    \"Loading Status...\": \"Estado de Carga...\",\n    \"Loading...\": \"Cargando...\",\n    \"Location\": \"Ubicaci\\xF3n\",\n    \"Locations\": \"Ubicaciones\",\n    \"Log\": \"Registro\",\n    \"Log me out.\": \"Salir\",\n    \"Log out\": \"Cerrar sesi\\xF3n\",\n    \"Login\": \"Iniciar sesi\\xF3n\",\n    \"Lot 1\": \"Lote 1\",\n    \"Lot 2\": \"Lote 2\",\n    \"MAD -  Moroccan dirham\": \"MAD - Dirham marroqu\\xED\",\n    \"MDL -  Moldovan leu\": \"MDL - Leu moldavo\",\n    \"MKD -  Macedonian denar\": \"MKD - Denar macedonio\",\n    \"MMK -  Myanma kyat\": \"MMK - Myanmar kyats\",\n    \"MNT -  Mongolian tugrik\": \"MNT - Tugrik mongol\",\n    \"MOP -  Macanese pataca\": \"MOP - Pataca de Macao\",\n    \"MUR -  Mauritian rupee\": \"MUR - rupia de Mauricio\",\n    \"MUTUAL INDEMNIFICATION\": \"Indemnizaci\\xF3n mutua\",\n    \"MVR -  Maldivian rufiyaa\": \"MVR - rufiyaa de Maldivas\",\n    \"MWK -  Malawian kwacha\": \"MWK - kwacha de Malawi\",\n    \"MXN -  Mexican peso\": \"MXN - peso mexicano\",\n    \"MYR -  Malaysian ringgit\": \"MYR - ringgit de Malasia\",\n    \"MZN -  Mozambican metical\": \"MZN - Metical mozambique\\xF1o\",\n    \"Make This My Default Card\": \"Designar esta tarjeta como mi tarjeta predeterminada\",\n    \"Manage Employees for: \": \"Gestionar empleados para:\",\n    \"Manage Insurance Classes\": \"Gestionar clases de seguros\",\n    \"Manage Photos posted by: \": \"Gestionar fotos publicadas por:\",\n    \"Manage payroll items on all new employees imported from QuickBooks.\": \"Administra los articulos de nomina de todos los nuevos empleados importado desde QuickBooks.\",\n    \"Manual break\": \"Descanso manual\",\n    \"Manual entry\": \"Entrada manual\",\n    \"Match Payroll Categories\": \"Ajustar las categor\\xEDas de n\\xF3minas\",\n    \"Member Limit\": \"L\\xEDmite de miembros\",\n    \"Merge Entries\": \"Combinar entradas\",\n    \"Merge entries\": \"Combinar entradas\",\n    \"Message\": \"Mensaje\",\n    \"Misc.\": \"Varios\",\n    \"Monday\": \"Lunes\",\n    \"Monthly\": \"Mensual\",\n    \"Monthly Billing\": \"Facturaci\\xF3n mensual\",\n    \"Move to Group\": \"Mover al grupo\",\n    \"Must be a number\": \"Debe ser un n\\xFAmero\",\n    \"Mutual Indemnification\": \"Indemnizaci\\xF3n mutua\",\n    \"NAD -  Namibian dollar\": \"NAD - D\\xF3lar namibio\",\n    \"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY\\u2019S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement: \": \"LA RESPONSABILIDAD DE NINGUNA DE LAS PARTES CON RESPECTO A UN INCIDENTE AISLADO QUE SURJA O EST\\xC9 RELACIONADO A ESTE ACUERDO (YA SEA POR ACUERDO O POR ACTO CIVIL IL\\xCDCITO O CUALQUIER OTRO PRINCIPIO DE RESPONSABILIDAD CIVIL) DEBER\\xC1 EXCEDER EL M\\xCDNIMO DE $500,000 O LA CANTIDAD PAGADA POR USTED EN VIRTUD DEL PRESENTE DURANTE LOS 12 MESES ANTERIORES AL INCIDENTE, SIEMPRE Y CUANDO QUE EN NING\\xDAN CASO LA RESPONSABILIDAD CIVIL DE LA PARTE QUE SURJA O EST\\xC9 RELACIONADA A ESTE Acuerdo (YA SEA POR CONTRATO O POR ACTO CIVIL IL\\xCDCITO O CUALQUIER OTRO PRINCIPIO DE RESPONSABILIDAD CIVIL) EXCEDA LA CANTIDAD TOTAL PAGADA POR USTED EN VIRTUD DEL PRESENTE. Esta cl\\xE1usula no aplica a las instancias definidas en el P\\xE1rrafo 6.2 de este acuerdo ni tampoco ser\\xE1n aplicadas si infringe los t\\xE9rminos principales de este Acuerdo:\",\n    \"NGN -  Nigerian naira\": \"NGN - naira nigeriana\",\n    \"NIO -  Nicaraguan c\\xF3rdoba\": \"NIO - c\\xF3rdoba\",\n    \"NOK -  Norwegian krone\": \"NOK - Corona noruega\",\n    \"NON-BUSYBUSY.COM PROVIDERS\": \"PROVEEDORES NO PERTENECIENTES A BUSYBUSY.COM\",\n    \"NOW\": \"AHORA\",\n    \"NPR -  Nepalese rupee\": \"NPR - Rupia nepal\\xED\",\n    \"NZD -  New Zealand dollar\": \"NZD - D\\xF3lar de Nueva Zelanda\",\n    \"Name\": \"Nombre\",\n    \"Name is required to update a card.\": \"Es necesario el nombre para actualizar una tarjeta.\",\n    \"Name on Card\": \"Nombre en la tarjeta.\",\n    \"Nevermind, I remember my password.\": \"Olv\\xEDdalo, recuerdo mi contrase\\xF1a.\",\n    \"New Notecard\": \"Nueva Tarjeta de notas\",\n    \"New Password\": \"Nueva contrase\\xF1a\",\n    \"New Position\": \"Nuevo cargo\",\n    \"New Time Entry\": \"Nueva entrada de tiempo\",\n    \"New project name: \": \"Nuevo nombre de proyecto:\",\n    \"Next\": \"Siguiente\",\n    \"Next Payment\": \"Siguiente pago\",\n    \"No\": \"No\",\n    \"No Cost Codes Found\": \"Ningun C\\xF3digos de Costo Encontrado\",\n    \"No Projects Found\": \"Ningun Proyecto Encontrado\",\n    \"No Results Found\": \"Ninguno Resultado fue Encontrado\",\n    \"No Thanks\": \"No Gracias\",\n    \"No Thanks, I Don't Have Employees\": \"No Gracias, No tengo Empleados\",\n    \"No changes were made\": \"No se realizaron cambios\",\n    \"No cost codes were found\": \"Ningun c\\xF3digos de costo fue encontrado\",\n    \"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\": \"Los errores o retrasos de una parte para ejercer los derechos que concede este Acuerdo no podr\\xE1n obrar como una exenci\\xF3n de responsabilidad de dicho derecho u cualquier otro derecho previsto en este Acuerdo. En caso que cualquier disposici\\xF3n de este Acuerdo sea declarada no v\\xE1lida, ilegal o inejecutable por cualquier motivo y en cualquier aspecto, las disposiciones restantes continuar\\xE1n en plena vigencia y efecto hasta el m\\xE1ximo grado posible. Este Acuerdo constituye el Acuerdo indivisible entre las partes sobre el objeto del presente Acuerdo. Los Acuerdos o acuerdos anteriores o contempor\\xE1neos entre las partes sobre el objeto del presente Acuerdo, ya sean verbales o escritos, son sustituidos y fusionados con este Acuerdo. Ninguna modificaci\\xF3n de este Acuerdo ser\\xE1 v\\xE1lida o tendr\\xE1 car\\xE1cter vinculante para las partes al menos que estas est\\xE9n asentadas por escrito y se ejecuten en nombre de cada parte mediante su representante autorizado.\",\n    \"No locations available\": \"Ubicaci\\xF3n no disponible\",\n    \"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\": \"Ningun articulo de nomina fue encontrado. Agrega articulo de nomiana par este empleado desde QuickBooks. Vuelve  aqui despues de la sincronizaci\\xF3n para que coincida los articulos de nomina.\",\n    \"No payroll items set or changed!\": \"Ningunos art\\xEDculos de la n\\xF3mina se ingreso o cambiado!\",\n    \"No projects were found\": \"Ningun proyecto fue encontrado\",\n    \"No results\": \"Ninguno Resultado\",\n    \"No subprojects found.\": \"Ningun subproyecto fue encontrado\",\n    \"No time cards for this date range were found.\": \"No se encontr\\xF3 ninguna tarjeta de tiempo para este rango de fechas.\",\n    \"No time off entries found for this date range.\": \"No se encontraron entradas de tiempo de descanso en este rango de fechas.\",\n    \"Non-busybusy.com Applications\": \"Aplicaciones no pertenecientes a busybusy.com\",\n    \"Non-busybusy.com Applications and Your Data.\": \"Aplicaciones no pertenecientes a busybusy.com y sus datos.\",\n    \"Non-busybusy.com Providers\": \"Proveedores no pertenecientes a busybusy.com\",\n    \"None\": \"Ninguno\",\n    \"Not Connected\": \"No conectado\",\n    \"Not Enabled\": \"No activado\",\n    \"Not Paid\": \"No Pagao\",\n    \"Not Set\": \"No Establecido\",\n    \"Note\": \"Nota\",\n    \"Notecard\": \"Tarjeta de notas\",\n    \"Notes: \": \"Notas: \",\n    \"Now click one of the store links below to download the app on your phone.\": \"Ahora haga clic en uno de los enlaces de la tienda que se encuentran a continuaci\\xF3n para descargar la aplicaci\\xF3n en su tel\\xE9fono.\",\n    \"Now let's add your employees\": \"Ahora vamos a agregar tus empleados\",\n    \"O.T. (x1.5)\": \"T.E. (x1.5)\",\n    \"O.T. (x2)\": \"T.E. (x2)\",\n    \"O.T. Hours (x1.5)\": \"HORAS EXTRA (x1.5)\",\n    \"O.T. Hours (x2)\": \"HORAS EXTRA (x2)\",\n    \"O.T. Wages (x1.5)\": \"SALARIO DE HORAS EXTRA (x1.5)\",\n    \"O.T. Wages (x2)\": \"SALARIO DE HORAS EXTRA (x2)\",\n    \"OAuth Error\": \"OAuth Error\",\n    \"OMR -  Omani rial\": \"OMR - rial de Om\\xE1n\",\n    \"OT (x1.5)\": \"HORAS EXTRA (x1.5)\",\n    \"OT (x2)\": \"HORAS EXTRA (x2)\",\n    \"OT Hours\": \"HORAS EXTRA\",\n    \"OT Hours (x1.5)\": \"HORAS EXTRA (x1.5)\",\n    \"OT Hours (x2)\": \"HORAS EXTRA (x2)\",\n    \"OT1 = %@\": \"H.EXT1 = %@\",\n    \"OT2 = %@\": \"H.EXT2 = %@\",\n    \"OTH\": \"H.EXT\",\n    \"Off\": \"Apagado\",\n    \"Once connected to Procore, busybusy will send all time entries, projects, employees and cost codes to Procore automatically for you.\": \"Ya que este conectado a Procore, busybusy mandara todas las entradas de tiempo, proyectos, empleados y c\\xF3digos de costo autom\\xE1ticamente a Procore para usted.\",\n    \"Open QuickBooks Web Connector and click \\u201CUpload Application File\\u201D\": \"Abra el QuickBooks Web Connector y haga clic en 'Upload Application File' ('Cargar archivo de la aplicaci\\xF3n')\",\n    \"Options\": \"Opciones\",\n    \"Other\": \"Otro\",\n    \"Others with higher position\": \"Otros con un cargo superior\",\n    \"Others with lower position\": \"Otros con un cargo inferior\",\n    \"Others with same position\": \"Otros con el mismo cargo\",\n    \"Our Protection of Your Data.\": \"Nuestra protecci\\xF3n de sus datos.\",\n    \"Our Responsibilities.\": \"Nuestras responsabilidades.\",\n    \"Our Warranties.\": \"Nuestras garant\\xEDas.\",\n    \"Overburden %\": \"Porcentaje de sobrecarga\",\n    \"Overlapping Time\": \"Tiempo de superposici\\xF3n\",\n    \"Overtime\": \"Horas extras\",\n    \"Overtime Cost (x1.5)\": \"Horas extras (x1.5)\",\n    \"Overtime Cost (x2)\": \"Horas extras (x2)\",\n    \"Overtime Hours(x1.5)\": \"Horas extras (x1.5)\",\n    \"Overtime Hours(x2)\": \"Horas extras (x2)\",\n    \"Overtime Period\": \"Per\\xEDodo de horas extras\",\n    \"Overtime Rules\": \"Normas de horas extras\",\n    \"Overtime Rules: \": \"Normas de horas extras: \",\n    \"Overtime Settings\": \"Ajustes de horas extras\",\n    \"Overtime X2.0 (OT2)\": \"Horas Extras X2.0(OT2)\",\n    \"Overtime x1.5 (OT1)\": \"Horas Extras X1.5(OT)\",\n    \"PAB -  Panamanian balboa\": \"PAB - Balboa paname\\xF1o\",\n    \"PEN -  Peruvian nuevo sol\": \"PEN - Nuevo Sol peruano\",\n    \"PGK -  Papua New Guinean kina\": \"PGK - Pap\\xFAa Nueva Guinea Kina\",\n    \"PHP -  Philippine peso\": \"PHP - Peso filipino\",\n    \"PKR -  Pakistani rupee\": \"PKR - Rupia paquistan\\xED\",\n    \"PLN -  Polish z\\u0142oty\": \"PLN - Zloty polaco\",\n    \"PROPRIETARY RIGHTS\": \"DERECHOS DE PROPIEDAD INTELECTUAL\",\n    \"PTO\": \"POT\",\n    \"PYG -  Paraguayan guaran\\xED\": \"PYG - Guaran\\xED paraguayo\",\n    \"Paid\": \"Pagado\",\n    \"Paid Break\": \"Descanso Pagado\",\n    \"Paid Time Off\": \"Tiempo de descanso pagado\",\n    \"Paid\\/Unpaid\": \"Pagado\\/Sin pago\",\n    \"Password\": \"Contrase\\xF1a\",\n    \"Password is invalid\": \"La contrase\\xF1a no es v\\xE1lida\",\n    \"Password is invalid.\": \"La contrase\\xF1a no es v\\xE1lida.\",\n    \"Password must contain at a number, a letter, and be more than 6 characters long.\": \"La contrase\\xF1a debe contener un n\\xFAmero, una letra, y debe tener al menos 6 caracteres.\",\n    \"Passwords do not match\": \"Las contrase\\xF1as no coinciden\",\n    \"Pay\": \"Pago\",\n    \"Pay Period\": \"Per\\xEDodo de pago\",\n    \"Pay Period Settings\": \"Ajustes del per\\xEDodo de pago\",\n    \"Pay Period: \": \"Per\\xEDodo de pago:\",\n    \"Pay Rate: \": \"Tarifa de pago:\",\n    \"Pay period type not found!\": \"\\xA1Tipo de per\\xEDodo de pago no encontrado!\",\n    \"Payment Method\": \"M\\xE9todo de pago\",\n    \"Payroll\": \"N\\xF3mina\",\n    \"Payroll Items\": \"Articulos de la Nomina\",\n    \"Payroll Items Imported\": \"Articulos Importados de la Nomina\",\n    \"Payroll Items Updated\": \"Articulos Actualizados de la Nomina\",\n    \"Payroll Mapping\": \"Asignacion de Nominas\",\n    \"Payroll Rate\": \"Tasa de la n\\xF3mina\",\n    \"Payroll Report\": \"Reporte de Nomina\",\n    \"Payroll Type\": \"Tipo de n\\xF3mina\",\n    \"Payroll data was not found for this pay period.\": \"Los datos de n\\xF3mina no se ha encontrado para este per\\xEDodo de pago.\",\n    \"Period:  %@\": \"Per\\xEDodo:  %@\",\n    \"Personal\": \"Personal\",\n    \"Phone\": \"Tel\\xE9fono\",\n    \"Phone Number\": \"N\\xFAmero de tel\\xE9fono\",\n    \"Photo\": \"Foto\",\n    \"Photos\": \"Fotos\",\n    \"Photos %@\": \"Fotos %@\",\n    \"Pie Chart\": \"Grafica circular\",\n    \"Please fill out all required fields\": \"Por favor, complete todos los cambios requeridos\",\n    \"Please fill out all required fields.\": \"Por favor, complete todos los cambios requeridos.\",\n    \"Please fill out the required fields.\": \"Por favor, complete los cambios requeridos.\",\n    \"Please pick a different plan or archive %@ %@ and try again\": \"Por favor, seleccione un plan o archivo diferente %@ %@ y vuelva a intentarlo\",\n    \"Please select how many employees your company has.\": \"Pro favor  selecciona cuantos empleados tu compa\\xF1ia tiene.\",\n    \"Please set the expiration date.\": \"Por favor, establezca la fecha de caducidad.\",\n    \"Position\": \"Cargo\",\n    \"Position must be set before saving\": \"Se debe establecer el cargo antes de guardar\",\n    \"Positions\": \"Cargos\",\n    \"Postal Code\": \"C\\xF3digo postal\",\n    \"Preferences\": \"Preferencias\",\n    \"Prev\": \"Anterior\",\n    \"Previous\": \"Anterior\",\n    \"Print\": \"Imprimir\",\n    \"Print Report\": \"Imprimir informe\",\n    \"Process payroll faster\": \"Procesar nominas mas rapido\",\n    \"Procore\": \"Procore\",\n    \"Procore Settings\": \"ajuste de Procore\",\n    \"Profile\": \"Perfil\",\n    \"Profile Picture\": \"Foto de perfil\",\n    \"Project\": \"Proyecto\",\n    \"Project Budget\": \"Presupuesto del Proyecto\",\n    \"Project Import Error\": \"Error de importaci\\xF3n del proyecto\",\n    \"Project Import Format Guide\": \"Gu\\xEDa de formato de importaci\\xF3n de proyectos\",\n    \"Project Import Step 1 of 2\": \"Importaci\\xF3n del proyecto, Paso 1 de 2\",\n    \"Project Import Step 2 of 2\": \"Importaci\\xF3n del proyecto, Paso 2 de 2\",\n    \"Project Information\": \"Informaci\\xF3n del proyecto\",\n    \"Project Job Costing\": \"Costo del trabajo del proyecto\",\n    \"Project Lvl 1\": \"Proyecto nivel 1\",\n    \"Project Lvl 2\": \"Proyecto nivel 2\",\n    \"Project Lvl 3\": \"Proyecto nivel 3\",\n    \"Project Lvl 4\": \"Proyecto nivel 4\",\n    \"Project Lvl 5\": \"Proyecto nivel 5\",\n    \"Project Lvl 6\": \"Proyecto nivel 6\",\n    \"Project Lvl 7\": \"Proyecto nivel 7\",\n    \"Project Name\": \"Nombre del proyecto\",\n    \"Project Number\": \"N\\xFAmero de proyecto\",\n    \"Project Payroll Report\": \"Informe de n\\xF3mina del proyecto\",\n    \"Project Summary\": \"Resumen del proyecto\",\n    \"Project Time Sheet\": \"Cronograma del proyecto\",\n    \"Project Title\": \"T\\xEDtulo del proyecto\",\n    \"Project is required.\": \"Proyecto es requerido\",\n    \"Project name is required\": \"Nombre del proyecto es requerido\",\n    \"Project name must be unique\": \"El nombre del proyecto debe ser \\xFAnico\",\n    \"Project: \": \"Proyecto: \",\n    \"Project:  \": \"Proyecto:  \",\n    \"Projects\": \"Proyectos\",\n    \"Projects Export\": \"Exportar Proyectos\",\n    \"Projects Import\": \"importar Proyectos\",\n    \"Projects Imported\": \"Proyectos Importados\",\n    \"Projects Updated\": \"Actualizar Proyectos\",\n    \"Projects use a hierarchical data structure.\": \"Los proyectos utilizan una estructura jer\\xE1rquica de datos.\",\n    \"Proprietary Rights\": \"Derechos de propiedad intelectual\",\n    \"Protection of Confidential Information.\": \"Protecci\\xF3n de informaci\\xF3n confidencial\",\n    \"Provided by\": \"Proporcionado por\",\n    \"Provided by:  \": \"Proporcionado por:\",\n    \"Provision of Services\": \"Prestaci\\xF3n de servicios\",\n    \"QAR -  Qatari riyal\": \"QAR - Riyal de Qatar\",\n    \"Questions?\": \"\\xBFAlguna pregunta?\",\n    \"QuickBooks\": \"QuickBooks\",\n    \"QuickBooks Payroll\": \"N\\xF3mina de QuickBooks\",\n    \"QuickBooks Web Connector\": \"QuickBooks Web Connector\",\n    \"REG = %@\": \"REG = %@\",\n    \"RON -  Romanian new leu\": \"RON - Leu rumano\",\n    \"RSD -  Serbian dinar\": \"RSD - Dinar serbio\",\n    \"RUB -  Russian rouble\": \"RUB - Rublo ruso\",\n    \"RWF -  Rwandan franc\": \"RWF - Ruanda Franco\",\n    \"Re-type Password\": \"Vuelva a escribir la contrase\\xF1a\",\n    \"Recent Cost Codes\": \"C\\xF3digos de costo recientes\",\n    \"Recent Projects\": \"Proyectos recientes\",\n    \"Recorded:  %@\": \"Registrado:  %@\",\n    \"Reg Hours\": \"Horas registradas\",\n    \"Reg Time\": \"Tiempo registrado\",\n    \"Regional Settings\": \"Ajustes regionales\",\n    \"Regular\": \"Regular\",\n    \"Regular Cost\": \"Costo regular\",\n    \"Regular Hours\": \"Horas regulares\",\n    \"Regular Time\": \"Tiempo regular\",\n    \"Regular Time (REG)\": \"Tiempo Regular (REG)\",\n    \"Regular Wages\": \"Salarios regulares\",\n    \"Remaining\": \"Restante\",\n    \"Remember your password! You'll need it to log into busybusy.\": \"\\xA1Recuerde su contrase\\xF1a! La necesitar\\xE1 para iniciar sesi\\xF3n en busybusy.\",\n    \"Reminders Enabled\": \"Recordatorios habilitados\",\n    \"Reminders to clock-in\\/out\": \"Rocordatorio para entrada y salida\",\n    \"Remove\": \"Quitar\",\n    \"Report Setup\": \"Configuraci\\xF3n de informes\",\n    \"Reports\": \"Informes\",\n    \"Require Cost Codes\": \"Pedir c\\xF3digos de costo\",\n    \"Require Cost Codes: \": \"Pedir c\\xF3digos de costo:\",\n    \"Require Project\": \"Pedir proyecto\",\n    \"Require Project: \": \"Pedir proyecto:\",\n    \"Requirements\": \"Obligatorios\",\n    \"Reservation of Rights in Services.\": \"Reserva de derechos en los servicios.\",\n    \"Reset Your Password\": \"Cambiar su contrase\\xF1a\",\n    \"Resolve\": \"Solucionar\",\n    \"Resolved\": \"Solucionado\",\n    \"Restrictions.\": \"Restricciones\",\n    \"Return of Your Data.\": \"Devoluci\\xF3n de sus datos.\",\n    \"Return to Dashboard\": \"Regresar al panel de control\",\n    \"Review the 10 most recent imports from Procore to busybusy.\": \"Revisar las 10 importaciones recientes de Procore a busybusy.\",\n    \"Review the 10 most recent sync logs on imported and updated data between QuickBooks and busybusy.\": \"Revisar los 10 registro  sincronizados mas recientes de datos importados y actualizados entre QuickBooks y busybusy.\",\n    \"Run Report\": \"Ejecutar reporte\",\n    \"SAL = %@\": \"SAL = %@\",\n    \"SAR -  Saudi riyal\": \"SAR - Riyal saud\\xED\",\n    \"SBD -  Solomon Islands dollar\": \"SBD - D\\xF3lar de las Islas Salom\\xF3n\",\n    \"SCR -  Seychelles rupee\": \"SCR - Rupia de Seychelles\",\n    \"SDG -  Sudanese pound\": \"SDG - Libra sudanesa\",\n    \"SEK -  Swedish krona\\/kronor\": \"SEK - Corona sueca \\/ coronas\",\n    \"SGD -  Singapore dollar\": \"SGD - D\\xF3lar de Singapur\",\n    \"SHP -  Saint Helena pound\": \"SHP - Saint Helena Libra\",\n    \"SIC\": \"Enf\",\n    \"SLL -  Sierra Leonean leone\": \"SLL - Leone de Sierra Leona\",\n    \"SOS -  Somali shilling\": \"SOS - Chel\\xEDn somal\\xED\",\n    \"SRD -  Surinamese dollar\": \"SRD - D\\xF3lar surinam\\xE9s\",\n    \"SSP -  South Sudanese pound\": \"SSP - Libra sudanesa del Sur\",\n    \"STD -  S\\xE3o Tom\\xE9 and Pr\\xEDncipe dobra\": \"STD - Santo Tom\\xE9 y Pr\\xEDncipe dobra\",\n    \"SYP -  Syrian pound\": \"SYP - libra siria\",\n    \"SZL -  Swazi lilangeni\": \"SZL - lilangeni suazi\",\n    \"Salary (SAL)\": \"Salario (SAL)\",\n    \"Sample File\": \"Archivo de muestra\",\n    \"Saturday\": \"S\\xE1bado\",\n    \"Saturday Pay Rate\": \"Tarifa de pago de los d\\xEDas s\\xE1bados\",\n    \"Save\": \"Guardar\",\n    \"Save & Close\": \"Guardar & Cerrar\",\n    \"Save and Close\": \"Guardar y cerrar\",\n    \"Save and Import\": \"Guardar y Importar\",\n    \"Save and add another\": \"Guardar y agregar otro\",\n    \"Saved \": \"Guardado\",\n    \"Saved %@ cost codes successfully!\": \"Se guardaron %@ c\\xF3digos de costo correctamente.\",\n    \"Saved employees successfully!\": \"\\xA1Empleados guardados con \\xE9xito!\",\n    \"Saving\": \"Guardando\",\n    \"Saving...\": \"Guardando...\",\n    \"Scheduled Overtime Change\": \"Cambio programado de horas extras\",\n    \"Scheduled Pay Period Change\": \"Cambio programado del per\\xEDodo de pago\",\n    \"Search\": \"B\\xFAsqueda\",\n    \"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\": \"La secci\\xF3n 6 (Derechos de propiedad intelectual), 7 (Confidencialidad), 8 (Avisos de exenci\\xF3n de responsabilidad), 9 (Indemnizaci\\xF3n mutua), 10 (L\\xEDmites de la responsabilidad), 11.3 (Devoluci\\xF3n de sus datos), 12, Avisos, legislaci\\xF3n vigente y jurisdicci\\xF3n, y 13 (Disposiciones generales) deber\\xE1n seguir vigentes tras la terminaci\\xF3n o caducidad de este Acuerdo.\",\n    \"Security Code\": \"C\\xF3digo de seguridad\",\n    \"Select\": \"Seleccionar\",\n    \"Select %@\": \"Seleccionar %@\",\n    \"Select Cost Code\": \"Seleccionar c\\xF3digo de costo\",\n    \"Select Pay Period\": \"Seleccionar per\\xEDodo de pago\",\n    \"Select Period\": \"Seleccionar periodo\",\n    \"Select a Project\": \"Seleccionar un proyecto\",\n    \"Select a day\": \"Seleccionar d\\xEDa\",\n    \"Select a group\": \"Seleccionar un grupo\",\n    \"Select a pay period\": \"Seleccionar per\\xEDodo de pago\",\n    \"Select a start time\": \"Seleccionar hora de entrada\",\n    \"Select a subproject\": \"Seleccionar un subproyecto\",\n    \"Select a weekday\": \"Seleccionar un d\\xEDa de la semana\",\n    \"Select an end time\": \"Seleccionar hora de t\\xE9rmino\",\n    \"Select breaks\": \"Seleccionar descansos\",\n    \"Select cost code\": \"Seleccionar c\\xF3digo de costo\",\n    \"Select description\": \"Seleccionar descripci\\xF3n\",\n    \"Select project\": \"Seleccionar proyecto\",\n    \"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\": \"Seleccione qu\\xE9 d\\xEDa de la semana desea que comience su semana laboral. La fecha que elija tambi\\xE9n ser\\xE1 la fecha en que se realizar\\xE1 este cambio.\",\n    \"Select which day of the week you want your workweek to begin: \": \"Seleccione qu\\xE9 d\\xEDa de la semana desea que comience su semana laboral:\",\n    \"Self\": \"Auto\",\n    \"Semimonthly\": \"Bimensual\",\n    \"Semi-monthly\": \"Bimensual\",\n    \"Sending data from busybusy to procore requires nothing more than a one-time setup.\": \"Enviar datos de busybusy a Procore requiere de una sola configurazi\\xF3n.\",\n    \"Server clock out\": \"servidor de salida \",\n    \"Services may be subject to other limitations, such as, for example, limits on disk storage space.\": \"Los servicios pueden estar sujetos a otros l\\xEDmites, por ejemplo, los l\\xEDmites de espacio de almacenamiento del disco.\",\n    \"Set Password\": \"Establecer contrase\\xF1a\",\n    \"Seventh Day Doubletime must be less than daily doubletime!\": \"\\xA1El doble tiempo del s\\xE9ptimo d\\xEDa debe ser menor que el doble turno diario!\",\n    \"Show Details\": \"Mostrar detalles\",\n    \"Show More\": \"Mostrar m\\xE1s\",\n    \"Show less\": \"Mostrar menos\",\n    \"Show more\": \"Mostrar m\\xE1s\",\n    \"Sick\": \"Enfermo\",\n    \"Sign In\": \"Iniciar sesi\\xF3n\",\n    \"Sign in\": \"Iniciar sesi\\xF3n\",\n    \"Sign in to another account or \": \"Iniciar sesi\\xF3n con otra cuenta o \",\n    \"Signature\": \"Firma\",\n    \"Since Procore does not support subprojects, busybusy converts subprojects into normal projects inside of Procore, using the using the \\u201C>\\u201D sign to show the busybusy project layers.\": \"Ya que Procore no soprta subproyectos, busybusy convierta subproyectos en proyectos normales dentro de Procore utiliza el simbolo \\u201C>\\u201D para mostras las capas del proyectos de busybusy.\",\n    \"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\": \"Ya que busybusy no soporata  las capas de codigo de costo, busybusy convierte las capas de  codigo de costo en  individuales.\",\n    \"SkyView Subdivision\": \"Subdivisi\\xF3n SkyView\",\n    \"SkyView subdiv\": \"Subdivisi\\xF3n SkyView\",\n    \"Something went wrong creating your account. Please try again.\": \"Se produjo un error al crear su cuenta. Por favor, vuelva a intentarlo.\",\n    \"Something went wrong, Please try again later.\": \"Ocurri\\xF3 un error, por favor, int\\xE9ntelo nuevamente m\\xE1s tarde.\",\n    \"Something went wrong, please try again later.\": \"Ocurri\\xF3 un error, por favor, int\\xE9ntelo nuevamente m\\xE1s tarde.\",\n    \"Something went wrong. Please try again Later.\": \"Ocurri\\xF3 un error. Por favor, vuelva a intentarlo en otro momento.\",\n    \"Something went wrong. Please try again later.\": \"Ocurri\\xF3 un error. Por favor, vuelva a intentarlo en otro momento.\",\n    \"Something went wrong. Please try again.\": \"Ocurri\\xF3 un error. Por favor, vuelva a intentarlo en otro momento.\",\n    \"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\": \"Lo sentimos, esta es una funci\\xF3n premium. Si desea agregar empleados adicionales, vaya a su\",\n    \"Sorry, your subscription limit has been reached. If you would like to add additional employees, please go to your\": \"Lo sentimos, ha alcanzado su l\\xEDmite de suscripci\\xF3n. Si desea agregar empleados adicionales, vaya a su\",\n    \"Sort\": \"Ordenar\",\n    \"Sort asc\": \"Ordenar Asc\",\n    \"Sort desc\": \"Ordenar Desc\",\n    \"Spent\": \"Gastado\",\n    \"Standard\": \"Est\\xE1ndar\",\n    \"Standard Settings\": \"Configuraci\\xF3n est\\xE1ndar\",\n    \"Start\": \"Comienzo\",\n    \"Start My 30 Day Free Trial\": \"Comenzar mi prueba gratuita de 30 d\\xEDas\",\n    \"Start My Free 30 Day Trial\": \"Comenzar Mi Prueba Gratuita Por 30 Dias\",\n    \"Start Time\": \"Hora de entrada\",\n    \"Start Time must not be after a Break Start Time.\": \"La hora de entrada no debe ser despu\\xE9s del inicio del descanso.\",\n    \"Start or stop time will overlap an existing time entry.\": \"Iniciar o terminar tiempo sobrepasara  una entrada del tiempo existente.\",\n    \"Start time\": \"Hora de entrada\",\n    \"Start time must be before now.\": \"La hora de entrada debe ser anterior a este momento.\",\n    \"Start time must be before stop time.\": \"La hora de entrada debe ser anterior a la hora de t\\xE9rmino.\",\n    \"Start time must be within the past 90 days.\": \"La hora de entrada debe estar dentro de los \\xFAltimos 90 d\\xEDas.\",\n    \"Start time:  \": \"Hora de entrada:  \",\n    \"Starts Over\": \"Comienza nuevamente\",\n    \"Starts Over:  %@\": \"Comienza nuevamente:  %@\",\n    \"State\": \"Estado\",\n    \"Status\": \"Estatus\",\n    \"Status: \": \"Estatus:\",\n    \"Step 1. Account Information\": \"Paso 1. Informaci\\xF3n de la cuenta\",\n    \"Step 1: \": \"Paso 1.\",\n    \"Step 2. Company Information\": \"Paso 2. Informaci\\xF3n de la empresa\",\n    \"Step 2: \": \"Paso 2.\",\n    \"Step 3. Pay Period Settings\": \"Paso 3. Ajustes del per\\xEDodo de pago\",\n    \"Step 3: \": \"Paso 3.\",\n    \"Step 4. Overtime Settings\": \"Paso 4. Ajustes de horas extras\",\n    \"Step 4: \": \"Paso 4.\",\n    \"Step 5: \": \"Paso 5.\",\n    \"Step 6: \": \"Paso 6.\",\n    \"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\": \"A\\xFAn necesita ayuda? Un agente de atenci\\xF3n al cliente de busybusy puede ayudarlo en cada paso del proceso. Simplemente ll\\xE1menos al 1-855-287-9287\",\n    \"Stop\": \"Detener\",\n    \"Stop Time\": \"Detener tiempo\",\n    \"Stop time must be before the end of today.\": \"La hora de entrada debe ser anterior al final del d\\xEDa.\",\n    \"Storage Capacity\": \"Capacidad de almacenamiento\",\n    \"Subject\": \"Sujeto\",\n    \"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\": \"De acuerdo con los derechos limitados otorgados de manera expl\\xEDcita por el presente documento, nos reservamos todos los derechos, dominio y propiedad sobre y relativos a los servicios, entre los que se incluyen todos los derechos de propiedad intelectual. No se le otorga ning\\xFAn otro derecho m\\xE1s que los derechos convenidos en el presente.\",\n    \"Submit\": \"Guardar\",\n    \"Submitted by\": \"Enviado por\",\n    \"Submitted on\": \"Fecha de env\\xEDo\",\n    \"Subproject Budgets\": \"Presupuesto de Subproyecto\",\n    \"Subproject Information\": \"Informacion del subprojecto\",\n    \"Subproject Report\": \"Informe de subproyecto\",\n    \"Subproject name\": \"Nombre del subproyecto\",\n    \"Subproject name is required\": \"Nombre del subproyecto es requerido\",\n    \"Subproject name must be unique\": \"Nombre del subproyecto debe de ser \\xFAnico\",\n    \"Subprojects\": \"Subproyectos\",\n    \"Subscription\": \"Suscripci\\xF3n\",\n    \"Subscription Required\": \"Se requiere suscripci\\xF3n\",\n    \"Subtotal\": \"Total Parcial\",\n    \"Successfully Saved\": \"Guardado con \\xE9xito\",\n    \"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\": \"Sugerencias. Debemos tener una licencia perpetua, irrevocable, a nivel internacional y exenta de regal\\xEDas para utilizar e incorporar a los servicios cualquier sugerencia, solicitud de mejora, recomendaci\\xF3n o cualquier otra informaci\\xF3n brindada por usted, el usuario, en cuanto al funcionamiento de los servicios.\",\n    \"Summary\": \"Resumen\",\n    \"Sunday\": \"Domingo\",\n    \"Sunday Pay Rate\": \"Tarifa de pago de los d\\xEDas domingo\",\n    \"Supervisor \\/ Superintendent\": \"Supervisor\\/Superintendente\",\n    \"Supervisor\\/Superintendent\": \"Supervisor\\/Superintendente\",\n    \"Surviving Provisions.\": \"Disposiciones subsistentes\",\n    \"Switch\": \"Cambiar\",\n    \"Switch Projects\": \"Cambiar proyectos\",\n    \"Sync Log\": \"Registro de sincronizaci\\xF3n\",\n    \"TERM AND TERMINATION\": \"VIGENCIA Y FINALIZACI\\xD3N\",\n    \"TEST - Connect\": \"PRUEBA - Conectar\",\n    \"TEST - Disconnect\": \"PRUEBA - Desconectar\",\n    \"TEST - Learn More\": \"PRUEBA - Aprende m\\xE1s\",\n    \"TEST - Logs\": \"PRUEBA - Registros\",\n    \"TEST - Manual Import\": \"PRUEBA - Importaci\\xF3n manual\",\n    \"TEST - OAuth External\": \"TEST - OAuth External\",\n    \"TEST - Settings Dialog\": \"PRUEBA - Configuraci\\xF3n de dialogo\",\n    \"TEST - Subscribe\": \"PRUEBA - Suscribirse\",\n    \"TEST - Upgrade\": \"PRUEBA - Actualizar\",\n    \"THB -  Thai baht\": \"THB - baht tailand\\xE9s\",\n    \"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\": \"ESTE Acuerdo CUBRE EL PLAZO DE USO DE NUESTROS SERVICIOS que le brindar\\xE1 acceso a usted, o a un tercero(un empleador, por ejemplo) por los servicios que ha contratado.\",\n    \"TJS -  Tajikistani somoni\": \"TJS - somoni tayikos\",\n    \"TMT -  Turkmenistani manat\": \"TMT - Manat turkmeno\",\n    \"TND -  Tunisian dinar\": \"TND - Dinar tunecino\",\n    \"TO\": \"PARA\",\n    \"TOP -  Tongan pa\\u02BBanga\": \"TOP - pa'anga tongano\",\n    \"TRY -  Turkish lira\": \"TRY - Lira turca\",\n    \"TTD -  Trinidad and Tobago dollar\": \"TTD - Trinidad y Tobago D\\xF3lar\",\n    \"TWD -  New Taiwan dollar\": \"TWD - Nuevo d\\xF3lar de Taiw\\xE1n\",\n    \"TZS -  Tanzanian shilling\": \"TZS - Chel\\xEDn de Tanzania\",\n    \"Table of Contents\": \"\\xEDndice\",\n    \"Take me to my account\": \"Dir\\xEDgeme a mi cuenta\",\n    \"Take the one minute tour\": \"Toma el recorido por un minuto\",\n    \"Term and Termination\": \"Vigencia y finalizaci\\xF3n\",\n    \"Term of Agreement.\": \"Vigencia del Acuerdo.\",\n    \"Termination (i) upon 30 days written notice, either party may terminate this agreement.\": \"Terminaci\\xF3n(i) mediante notificaci\\xF3n por escrito cursada con 30 d\\xEDas de anticipaci\\xF3n, cualquiera de las partes puede dar por terminado este acuerdo.\",\n    \"Thank You\": \"Gracias\",\n    \"The %@ and %@ of each month\": \"El %@ y %@ de cada mes\",\n    \"The %@ of each month\": \"El %@ de cada mes\",\n    \"The Admin Position cannot be deleted.\": \"No se puede eliminar el cargo de Administrador.\",\n    \"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\": \"La Parte Receptora puede divulgar Informaci\\xF3n Confidencial perteneciente a la Parte Divulgadora si est\\xE1 obligado por ley a hacerlo, siempre y cuando la Parte Receptora le avise a la Parte Divulgadora con anticipaci\\xF3n sobre dicha divulgaci\\xF3n obligatoria (hasta el l\\xEDmite legalmente permitido) y le brinde la asistencia que corresponda, a expensas de la Parte Divulgadora, si dicha parte desea realizar una contestaci\\xF3n a la divulgaci\\xF3n en cuesti\\xF3n. Si la Parte Receptora est\\xE1 obligada por ley a divulgar la Informaci\\xF3n Confidencial de la Parte Divulgadora como parte de un proceso civil en el que la Parte Divulgadora act\\xFAe como parte, y la Parte Divulgadora no contesta la divulgaci\\xF3n de informaci\\xF3n, esta deber\\xE1 reintegrarle a la Parte Receptora una suma por los gastos razonables incurridos al compilar y brindar un acceso seguro a dicha informaci\\xF3n confidencial.\",\n    \"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates\\u2019 employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party\\u2019s prior written consent.\": \"La Parte Receptora deber\\xE1 actuar con el mismo cuidado que utiliz\\xF3 para proteger su propia informaci\\xF3n confidencial (en ning\\xFAn caso deber\\xE1 actuar con menos cuidado). (i) No deber\\xE1 utilizar informaci\\xF3n confidencial de la Parte Divulgadora con ning\\xFAn fin m\\xE1s que los establecidos por este Acuerdo y, (ii) salvo que lo autorice la Parte Divulgadora por escrito, no deber\\xE1 limitar el acceso a la informaci\\xF3n confidencial de la Parte Divulgadora a sus afiliados, empleados, contratistas y representantes que necesiten acceso a dicha informaci\\xF3n por motivos compatibles con este Acuerdo y que hayan firmado acuerdos de confidencialidad con la Parte Receptora que establezcan protecciones no menos estrictas que las establecidas en el presente. Ninguna parte deber\\xE1 divulgar los t\\xE9rminos de este Acuerdo o ning\\xFAn Formulario de Pedidos a terceros m\\xE1s que a sus Afiliados, sus abogados y contadores sin la autorizaci\\xF3n previa por escrito de la otra parte.\",\n    \"The actual costs have exceeded the budgeted amount.\": \"El actual costo han excedido la cantidad del presupuesto.\",\n    \"The actual hours have exceeded the budgeted amount.\": \"Las horas actuales han excedido la cantidad del presupuesto.\",\n    \"The break time must not be longer than the Clock In to Clock Out time duration\": \"El tiempo de descanso no debe ser m\\xE1s largo que el tiempo de entrada o salida.\",\n    \"The default card cannot be deleted\": \"No se puede eliminar la tarjeta predeterminada.\",\n    \"The email you provided was not associated with any accounts on busybusy.\": \"La direcci\\xF3n de correo electr\\xF3nico que nos proporcion\\xF3 no est\\xE1 asociada con ninguna de las cuentas en busybusy.\",\n    \"The following fields can be imported for cost codes: \": \"Se pueden importar los siguientes campos para los c\\xF3digos de costo:\",\n    \"The following fields can be imported for employees: \": \"Se pueden importar los siguientes campos para empleados:\",\n    \"The passwords don't match!\": \"Las contrase\\xF1as no coinciden!\",\n    \"The subproject budgets have exceeded the overall budgeted amount.\": \"Los presupuestos del subproyecto han superado la cantidad total presupuestada.\",\n    \"The system has hit an error. Please try again later.\": \"Se produjo un error en el sistema. Por favor, vuelva a intentarlo en otro momento.\",\n    \"The total budget for all subprojects is more than the budgeted amount.\": \"El total del presupuesto de todos los subproyectos es mas de la cantidad del presupuesto.\",\n    \"The total hours for all subprojects is more than the budgeted amount.\": \"El total de horas de todos los subproyectos es mas de la cantidad del presupuesto.\",\n    \"The username can be updated in the details tab of the employee\\u2019s profile.\": \"El nombre del usuario puede ser actualizado en la barra de detalles del perfil del empleado.\",\n    \"The username for this employee is not unique, which will prevent the employee from being able to log in.\": \"El nombre del usuario para este empleado no es \\xFAnico,lo que evitar\\xE1 que el empleado de poder iniciar sesi\\xF3n.\",\n    \"The username or password is incorrect!\": \"\\xA1El nombre de usuario o contrase\\xF1a es incorrecto!\",\n    \"The username or password is incorrect.\": \"\\xA1El nombre de usuario o contrase\\xF1a es incorrecto.\",\n    \"The username was not found in the system.\": \"No se encontr\\xF3 el nombre de usuario en el sistema.\",\n    \"The wage change failed to delete. Please try again later.\": \"No se ha podido eliminar el cambio de salario. Por favor, vuelva a intentarlo en otro momento.\",\n    \"Then \": \"Despu\\xE9s \",\n    \"There are no entries for this day!\": \"No hay ninguna entrada para este d\\xEDa!\",\n    \"There was a problem deleting this note card.\": \"Se produjo un error al eliminar esta tarjeta de notas.\",\n    \"There was a problem processing your payment. Please check your card info and try again.\": \"Se produjo un error al procesar su pago. Por favor, verifique la informaci\\xF3n de su tarjeta e int\\xE9ntelo nuevamente.\",\n    \"There was an error duplicating the project\": \"Se produjo un error al duplicar el proyecto\",\n    \"There was an error in your csv file or the system failed to get some required information from the csv file.\": \"Se produjo un error en su archivo csv o el sistema fall\\xF3 al obtener informaci\\xF3n del archivo csv.\",\n    \"There was an error starting your subscription!\": \"\\xA1Se produjo un error al iniciar su suscripci\\xF3n!\",\n    \"There was an error submitting your changes! Please try again.\": \"Se produjo un error al enviar sus cambios. Por favor, vuelva a intentarlo.\",\n    \"There was an error while verifying your account. Please call customer service at 1-855-287-9287.\": \"\\xA1Se produjo un error al verificar su cuenta. Por favor, llame al servicio de atenci\\xF3n al cliente al 1-855-287-9287.\",\n    \"There was an error. Please try again at a later tine.\": \"Se produjo un error. Por favor, int\\xE9ntelo nuevamente m\\xE1s tarde.\",\n    \"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\": \"Este Acuerdo entra en vigencia a partir de la fecha en la que lo acepta y sigue vigente hasta que se suspenda el uso de los servicios.\",\n    \"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys\\u2019 fees\": \"Este Acuerdo est\\xE1 sujeto a y deber\\xE1 ser regido e interpretado por las leyes del Estado de Nevada, independientemente del conflicto de principios jur\\xEDdicos. Cualquier acci\\xF3n o proceso legal relacionado a este Acuerdo deber\\xE1 ser entablado en un tribunal estatal o federal en Clark County, Nevada, excepto cuando se busque una medida cautelar u cualquier otro tipo de protecci\\xF3n judicial en un tribunal federal competente. El Usuario reconoce que el alcance de los da\\xF1os en caso de incumplimiento de cualquiera de las disposiciones de este Acuerdo por parte del Usuario ser\\xEDa dif\\xEDcil o imposible de determinar, y que no habr\\xE1 ning\\xFAn remedio legal adecuado en caso de incumplimiento. Por lo tanto, el Usuario acepta que, en el caso que incumpla cualquier disposici\\xF3n de este Acuerdo, tendremos derecho a interponer una medida cautelar o cualquier otro tipo de protecci\\xF3n judicial, adem\\xE1s de cualquier otra protecci\\xF3n o soluci\\xF3n legal que se permita conforme a derecho o equidad. Si comienza un proceso judicial o arbitraje entre dos o m\\xE1s partes del Acuerdo o sus representantes personales en cuanto a cualquiera de las disposiciones de este Acuerdo, o los derechos y obligaciones de cualquiera de las personas en relaci\\xF3n al presente, el tribunal o \\xE1rbitro, seg\\xFAn sea el caso, puede otorgarle a la parte o las partes ganadoras de dicho juicio o arbitraje, adem\\xE1s de las medidas de protecci\\xF3n que se puedan otorgar, una suma razonable para cubrir los honorarios de sus abogados\",\n    \"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\": \"Este Acuerdo fue actualizado por \\xFAltima vez el 15 de julio de 2013. Entra en vigencia a partir de la fecha en que acepta.\",\n    \"This Section 10 (Mutual Indemnification) states the indemnifying party\\u2019s sole liability to, and the indemnified party\\u2019s exclusive remedy against, the other party for any type of claim described in this Section.\": \"Esta Secci\\xF3n 10 (Indemnizaci\\xF3n mutua) establece la responsabilidad exclusiva de la parte indemnizante para con la otra parte, y el \\xFAnico recurso de la parte indemnizada contra la otra parte por cualquier tipo de reclamo descrito en esta secci\\xF3n.\",\n    \"This action will archive any subprojects within this project.\": \"Esta acci\\xF3n archivar\\xE1 cualquier subproyectos dentro del proyecto.\",\n    \"This action will restore any subprojects within this project\": \"Esta acci\\xF3n desarchivar\\xE1 cualquier subproyectos dentro del proyecto.\",\n    \"This break ends after the time entry\": \"Este descanso termina despues de la hora de entrada\",\n    \"This break is outside the time entry\": \"Este descanso esta fuera de la hora de entrada\",\n    \"This break overlaps another break\": \"Este descanso se superpone con otro\",\n    \"This break starts before the time entry\": \"Este descanso inicia antes de la hora de entrada\",\n    \"This file has more employees than your subscription allows.\": \"Este archivo contiene m\\xE1s empleados que lo que permite su suscripci\\xF3n.\",\n    \"This invite url has already been used. Contact your account admin to get a new invatation.\": \"Esta invitaci\\xF3n ya ha sido utilizada. P\\xF3ngase en contacto con su administrador de cuenta para obtener un nuevo invatation.\",\n    \"This is a premium feature. To integrate with \": \"Esta es un caracter\\xEDstica premium. Para intergrarse con \",\n    \"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"Esta es un caracter\\xEDstica premium. Para integrarse con QuickBooks, vaya a la pesta\\xF1a de suscripci\\xF3n y seleccione un paquete con la \\t\\t\\tcantidad apropiada de empleados. Los primeros 30 d\\xEDas son gratis. Si tiene alguna pregunta, por favor ponerse en contacto con el servicio de atenci\\xF3n al cliente al 856-287-9287.\",\n    \"This is the address that you must use for any notices to Us.\": \"Esta es la direcci\\xF3n que debe utilizar para enviarnos cualquier aviso.\",\n    \"This reset url has already been used. You must submit a new password reset request.\": \"Esta URL  ya se ha utilizado. Usted debe presentar una nueva solicitud de restablecimiento de contrase\\xF1a.\",\n    \"This time entry is too old to edit.\": \"Esta entrada de tiempo es muy vieja para ser editada.\",\n    \"This time off entry is too old to edit.\": \"Esta entrada de tiempo de descanso es muy vieja para ser editada.\",\n    \"This url has expired or has already been used to verify this email!\": \"\\xA1Esta direcci\\xF3n URL ha expirado o ya ha sido utilizado para verificar este correo electr\\xF3nico!\",\n    \"This username is taken. Please choose another.\": \"Este nombre de usuario ya se encuentra en uso. Por favor, elija otro.\",\n    \"Thursday\": \"Jueves\",\n    \"Time\": \"Horario\",\n    \"Time & a Half\": \"Un turno y medio\",\n    \"Time Card Conflicts\": \"Conflictos de tarjetas de tiempo\",\n    \"Time Card Disclaimer\": \"Exenci\\xF3n de responsabilidad de la tarjeta de tiempo\",\n    \"Time Card Disclaimer: \": \"Exenci\\xF3n de responsabilidad de la tarjeta de tiempo:\",\n    \"Time Cards\": \"Tarjetas de tiempo\",\n    \"Time Entries\": \"Entradas de tiempo\",\n    \"Time Entry\": \"Entrada de tiempo\",\n    \"Time Entry Details\": \"Detalles de entrada de tiempo\",\n    \"Time Format\": \"formato de tiempo\",\n    \"Time Keeping\": \"Puntualidad\",\n    \"Time Off\": \"Tiempo no laborado\",\n    \"Time Off Details\": \"Detalles de tiempo no laborado\",\n    \"Time Off Report\": \"Informe de tiempo no laborado\",\n    \"Time and a Half\": \"Un turno y medio\",\n    \"Time entry 1\": \"Entrada de tiempo 1\",\n    \"Time entry 2\": \"Entrada de tiempo 2\",\n    \"Time entry was started in the future: \": \"La entrada de tiempo comenz\\xF3 en el futuro:\",\n    \"Title\": \"Cargo\",\n    \"Today\": \"Hoy\",\n    \"Today's Breaks\": \"Descansos del d\\xEDa\",\n    \"Today's Overtime\": \"horas extras de hoy\",\n    \"Today's Total\": \"Total del d\\xEDa\",\n    \"Total\": \"Total\",\n    \"Total Cost\": \"Costo total\",\n    \"Total Doubletime\": \"Doble turno total\",\n    \"Total Hours\": \"Horas totales\",\n    \"Total Overtime\": \"Horas extras totales\",\n    \"Total Regular Time\": \"Horario normal total\",\n    \"Total Time\": \"Tiempo total\",\n    \"Total Time Summary\": \"Tiempo total resumen\",\n    \"Total Wages\": \"Salarios totales\",\n    \"Total budget for all subprojects\": \"Presupuesto total de todos los  subproyectos\",\n    \"Total:  %@\": \"Total:  %@\",\n    \"Totals\": \"Totales\",\n    \"Track Paid Breaks: \": \"control de pago de descansos: \",\n    \"Track Time for: \": \"Buscar tiempo para:\",\n    \"Track time on the job for all your employees\": \"Lleva el tiempo de trabajo para todos tus empleados\",\n    \"Trade\": \"Comercio\",\n    \"True\": \"TRUE\",\n    \"Tuesday\": \"Martes\",\n    \"Type\": \"Tipo\",\n    \"Type*\": \"Tipo*\",\n    \"Type:  %@\": \"Tipo  %@\",\n    \"UAH -  Ukrainian hryvnia\": \"UAH - Hryvnia Ucrania\",\n    \"UGX -  Ugandan shilling\": \"UGX - Chel\\xEDn ugand\\xE9s\",\n    \"USD -  United States dollar\": \"USD - D\\xF3lar estadounidenses\",\n    \"USD - United States Dollars\": \"USD - D\\xF3lar estadounidenses\",\n    \"USE OF THE SERVICES\": \"USO DE LOS SERVICIOS\",\n    \"USER AGREEMENT\": \"ACUERDO DE USUARIO\",\n    \"UYI -  Uruguay Peso en Unidades Indexadas\": \"UYI - Uruguay Peso en Unidades Indexadas\",\n    \"UYU -  Uruguayan peso\": \"UYU - Peso uruguayo\",\n    \"UZS -  Uzbekistan som\": \"UZS - Uzbekist\\xE1n som\",\n    \"Unarchive\": \"Quitar del archivo\",\n    \"Unarchive Subproject\": \"Desarchivar Subproyecto\",\n    \"Unarchive Subprojects\": \"Desarchivar Subproyectos\",\n    \"Unassigned\": \"Sin Asignar\",\n    \"Ungroup\": \"Quitar del grupo\",\n    \"Ungrouped\": \"Sin grupo\",\n    \"Unit of Measure\": \"Unidad de medida\",\n    \"Units of Measure\": \"Unidades de medida\",\n    \"Unknown Error\": \"Error desconocido\",\n    \"Unpaid\": \"Sin pago\",\n    \"Unpaid Time Off\": \"Tiempo no laborado sin pago\",\n    \"Update\": \"Actualizar\",\n    \"Update Email\": \"Actualizar correo electr\\xF3nico\",\n    \"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\": \"Al actualizar su correo electr\\xF3nico reemplazar\\xE1 el correo electr\\xF3nico que ingres\\xF3 al crear su empresa. Cualquier verificaci\\xF3n de correo electr\\xF3nico anterior ya no ser\\xE1 v\\xE1lida.\",\n    \"Upgrade\": \"Actualizar\",\n    \"Upgrade Account\": \"Actualizar Cuenta\",\n    \"Upgrade Now\": \"Actualizar Ahora\",\n    \"Upgrade your account to start tracking time for your employees.\": \"Actualiza tu cuenta y empieza a llevar el control de el tiempo de tus empleados\",\n    \"Upload\": \"Cargar\",\n    \"Upload Company Photo\": \"Cargar foto de la empresa\",\n    \"Upload File\": \"Cargar archivo\",\n    \"Upload Image to New Collection\": \"Cargar imagen a la colecci\\xF3n nueva\",\n    \"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\": \"A su pedido, dentro de los 30 d\\xEDas posteriores a la fecha efectiva de terminaci\\xF3n de la suscripci\\xF3n de los Servicios Contratados, pondremos a su disposici\\xF3n un archivo para descargar con sus datos, junto con los archivos adjuntos en su formato original. Pasado el per\\xEDodo de 30 d\\xEDas, no tendremos obligaci\\xF3n de mantener o brindarle sus datos y, a partir de entonces, al menos que est\\xE9 prohibido legalmente, eliminar todos sus datos en nuestros sistemas, en nuestro poder, o bajo nuestro control.\",\n    \"Usage Limitations.\": \"L\\xEDmites de uso.\",\n    \"Use Labor Budgets\": \"Utilizar presupuestos de trabajo\",\n    \"Use Labor Budgets: \": \"Utilizar presupuestos de trabajo: \",\n    \"Use Pay Period Dates\": \"Usar las Fechas del Per\\xEDodo de Pago\",\n    \"Use of the Services\": \"Uso de los servicios\",\n    \"Used\": \"Usado\",\n    \"Username\": \"Nombre de usuario\",\n    \"Username is required\": \"Es necesario el nombre de usuario\",\n    \"Username must be at least 6 characters with no spaces\": \"El nombre de usuario debe contener al menos 6 caracteres sin espacios\",\n    \"Username must be at least 6 characters with no spaces.\": \"El nombre de usuario debe contener al menos 6 caracteres sin espacios.\",\n    \"VAC\": \"VAC\",\n    \"VEF -  Venezuelan bol\\xEDvar\": \"VEF - Bol\\xEDvar venezolano\",\n    \"VND -  Vietnamese dong\": \"VND - Dong vietnamita\",\n    \"VUV -  Vanuatu vatu\": \"VUV - Vatu de Vanuatu\",\n    \"Vacation\": \"Vacaci\\xF3n\",\n    \"Validating Please Wait...\": \"Verificando, por favor espere...\",\n    \"Verification Email Resent\": \"Verificaci\\xF3n de correo electr\\xF3nico reenviada\",\n    \"View\": \"Ver\",\n    \"View Entry History\": \"Ver antecedentes de la entrada\",\n    \"View GPS\": \"Ver GPS\",\n    \"View Location\": \"Ver Ubicaci\\xF3n\",\n    \"View Wage history\": \"Ver historial de salarios\",\n    \"WARRANTIES AND DISCLAIMERS\": \"GARANT\\xCDAS Y CL\\xC1USULAS DE EXENCI\\xD3N DE RESPONSABILIDAD\",\n    \"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\": \"A QUI\\xC9N CONTRATA, AVISOS, LEGISLACI\\xD3N APLICABLE Y JURISDICCI\\xD3N\",\n    \"WST -  Samoan tala\": \"WST - Samoa tala\",\n    \"Wage\": \"Salario\",\n    \"Wage History\": \"Historial de salarios\",\n    \"Wage Rate\": \"Escala de salarios\",\n    \"Wage Type\": \"Tipo de salarios\",\n    \"Wage Type: \": \"Tipo de salarios:\",\n    \"Warning\": \"Advertencia\",\n    \"Warning:  Are you sure you want to Continue?\": \"Advertencia:  \\xBFEst\\xE1 seguro que desea continuar?\",\n    \"Warranties and Disclaimers\": \"Garant\\xEDas y cl\\xE1usulas de exenci\\xF3n de responsabilidad\",\n    \"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\": \"No pudimos encontrar los proyectos en su archivo CSV. Por favor, verifique que sus encabezados sean correctos o descargue nuestro CVS de muestra de la pantalla anterior.\",\n    \"We have sent a confirmation email to\": \"Hemos enviado un correo electr\\xF3nico de confirmaci\\xF3n a\",\n    \"We have sent a new confirmation email to\": \"Hemos enviado un nuevo correo electr\\xF3nico de confirmaci\\xF3n a\",\n    \"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following:  Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data \\u2013 Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\": \"Brindamos los servicios, entre los que se incluye el software y la tecnolog\\xEDa relacionada, para el uso exclusivo por parte del gobierno federal de acuerdo con lo siguiente: Derechos sobre datos t\\xE9cnicos y software gubernamental relacionados a los Servicios que incluyen solo los derechos brindados habitualmente al p\\xFAblico seg\\xFAn se define en este Acuerdo. Esta licencia comercial consuetudinaria es otorgada de acuerdo con la FAR 12.211 (Datos T\\xE9cnicos) y FAR 12.212 (Software) y, para las transacciones con el Departamento de Defensa, DFAR 252.227-7015 (Datos t\\xE9cnicos \\u2013 Elementos Comerciales) y DFAR 227.7202-3 (Derechos en Software Comercial o Documentaci\\xF3n de Software Comercial). Si un organismo gubernamental necesita derechos no convenidos bajo estos t\\xE9rminos, debe negociarlos con nosotros para determinar si existen t\\xE9rminos aceptables para transferir dichos derechos, y se debe incluir un ap\\xE9ndice escrito aceptado por las dos partes que especifique dichos derechos en cualquier contrato o acuerdo aplicable.\",\n    \"We sent you an email with a link to reset your password.\": \"Le enviamos un correo electr\\xF3nico con un enlace para cambiar su contrase\\xF1a.\",\n    \"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\"Claim Against You\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\": \"Debemos defenderlo de cualquier reclamo, demanda, acci\\xF3n judicial o procedimiento contra usted por parte de un tercero que sostenga que el uso de los servicios, de la manera permitida por el presente, infringe o malversa los derechos de propiedad intelectual de un tercero (una \\\"Demanda en su contra\\\"), y deberemos indemnizarlo por los datos, honorarios de abogados y costas adjudicadas en su perjuicio como resultado de, y por las sumas pagadas por usted bajo una resoluci\\xF3n aprobada judicialmente de una Demanda en su contra; (b) brindarle el control exclusivo de la defensa y resoluci\\xF3n de la Demanda en su contra (siempre y cuando no se resuelva ninguna Demanda en su contra al menos que la resoluci\\xF3n lo libere de toda responsabilidad sin condiciones).\",\n    \"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\": \"Garantizamos que (i) hemos celebrado este Acuerdo de manera v\\xE1lida y que tenemos la capacidad legal para hacerlo, y que (ii) no le transmitiremos ning\\xFAn c\\xF3digo malicioso, siempre y cuando este no sea un incumplimiento de esta subparte (v) si usted o un usuario carga un archivo que contenga un c\\xF3digo malicioso en los servicios y luego descarga este archivo. Por cualquier incumplimiento de la garant\\xEDa anterior, el \\xFAnico recurso que tendr\\xE1 ser\\xE1 el dispuesto en la Secci\\xF3n 11 (Vigencia y finalizaci\\xF3n).\",\n    \"Wednesday\": \"Mi\\xE9rcoles\",\n    \"Weekly\": \"Semanal\",\n    \"Weekly Overtime (wage x 1.5)\": \"Horas extras semanales (salario x 1.5)\",\n    \"Welcome to busybusy\": \"Bienvenidos a busybusy\",\n    \"What day does your monthly pay period begin?\": \"\\xBFCu\\xE1ndo comienza su per\\xEDodo de pago mensual?\",\n    \"What day does your pay period begin?\": \"\\xBFQu\\xE9 d\\xEDa comienza su per\\xEDodo de pago?\",\n    \"What days do your pay periods begin?\": \"\\xBFQu\\xE9 d\\xEDa comienza su per\\xEDodo de pago?\",\n    \"What overtime rules would you like to use?\": \"Que regla de tiempo extra te gustar\\xEDa utilizar?\",\n    \"What two days does your Semimonthly pay period begin?\": \"\\xBFEn qu\\xE9 dos d\\xEDas comienza su per\\xEDodo bimensual de pago?\",\n    \"What type of break?\": \"Que tipo de descanso\",\n    \"What weekday does your biweekly pay period begin?\": \"\\xBFQu\\xE9 d\\xEDa de la semana comienza su per\\xEDodo bisemanal de pago?\",\n    \"What weekday does your weekly pay period begin?\": \"\\xBFQu\\xE9 d\\xEDa de la semana comienza su per\\xEDodo semanal de pago?\",\n    \"When does your work week begin? (e.g. overtime week)\": \"\\xBFCu\\xE1ndo comienza su semana laboral? (por ejemplo, la semana de horas extras)\",\n    \"When would you like this change to take effect?\": \"\\xBFCu\\xE1ndo quiere que se implemente este cambio?\",\n    \"When you're ready to process payroll, this is where you'll find reports.\": \"Cuando estes listo para el proceso de nomina, aqui es donde usted encontrara informes.\",\n    \"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\": \"Si desea ayuda con la configuraci\\xF3n, hacer una pregunta o simplemente quiere dejar comentarios, nos encantar\\xEDa saber de usted!\",\n    \"Which day was or will be your next pay period?\": \"\\xBFQu\\xE9 d\\xEDa era o ser\\xE1 su pr\\xF3ximo per\\xEDodo de pago?\",\n    \"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\": \"A qui\\xE9n contrata, avisos, legislaci\\xF3n aplicable y jurisdicci\\xF3n\",\n    \"Worked\": \"Trabajado\",\n    \"Workers' Compensation\": \"Indemnizaci\\xF3n por accidente laboral\",\n    \"Would you like to run an auto-import each day to retrieve any new Procore data?\": \"Te gustaria ejecutar una importacion  automatica diaria para recuperar datos nuevos de Procore?\",\n    \"XAF -  CFA franc BEAC\": \"XAF - Franco CFA BEAC\",\n    \"XBT -  Bitcoin\": \"XBT - Bitcoin\",\n    \"XCD -  East Caribbean dollar\": \"XCD - D\\xF3lar del Caribe Oriental\",\n    \"XOF -  CFA franc BCEAO\": \"XOF - Franco CFA BCEAO\",\n    \"XPF -  CFP franc (Franc du Pacifique)\": \"XPF - Franco CFP (Franc du Pacifique)\",\n    \"YER -  Yemeni rial\": \"YER - Rial yemen\\xED\",\n    \"Yearly\": \"Anual\",\n    \"Yearly (Get 2 months free)\": \"Anual (Obt\\xE9n 2 meses gratis)\",\n    \"Yes\": \"S\\xED\",\n    \"You are about to downgrade your subscription\": \"Est\\xE1 a punto de pasar a una versi\\xF3n anterior de su suscripci\\xF3n\",\n    \"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is: \": \"Est\\xE1 contratando a busybusy, Inc, una sociedad an\\xF3nima de Nevada, con direcci\\xF3n en:\",\n    \"You can also import Procore data to busybusy anytime with our easy to use import feature.\": \"Puedes importar datos de Procore a busybusy en cualquier momento con nuestra sencilla funci\\xF3n de importaci\\xF3n.\",\n    \"You can only view the Admin Position. Changes will not be saved.\": \"Solo puede ver el cargo de Administrador. No se guardar\\xE1n los cambios.\",\n    \"You can't delete a position that has members assigned to it.\": \"No se puede eliminar una posici\\xF3n que tiene miembros asignados a ella.\",\n    \"You can't save an overtime period for more than 90 days ago.\": \"No puede guardar un per\\xEDodo de horas extras por m\\xE1s de 90 d\\xEDas.\",\n    \"You cannot delete the default card\": \"No puede eliminar la tarjeta predeterminada\",\n    \"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\": \"\\\"No podr\\xE1 acceder a nuestros servicios si usted es uno de nuestros competidores directos, salvo mediante previa autorizaci\\xF3n por escrito. Adem\\xE1s, no podr\\xE1 acceder a nuestros servicios para monitorear su disponibilidad, rendimiento o funcionalidad, o por cualquier otro prop\\xF3sito competitivo o comparativo.\",\n    \"You must accept the terms and conditions!\": \"\\xA1Debe aceptar los t\\xE9rminos y condiciones!\",\n    \"You must fill in the required fields\": \"Debe completar los campos obligatorios\",\n    \"You must pick the day of the month your pay period starts on\": \"Debe elegir el d\\xEDa del mes en el que comienza su per\\xEDodo de pago\",\n    \"You must pick the day of the week your pay period starts on\": \"Debe elegir el d\\xEDa de la semana en el que comienza su per\\xEDodo de pago\",\n    \"You must pick the day of your next pay period.\": \"Debe elegir el d\\xEDa de su per\\xEDodo de pago.\",\n    \"You must pick the first day of the month your pay period starts on\": \"Debe elegir el primer d\\xEDa del mes en el que comienza su per\\xEDodo de pago\",\n    \"You must pick the second day of the month your pay period starts on\": \"Debe elegir el segundo d\\xEDa del mes en el que comienza su per\\xEDodo de pago\",\n    \"You must provide a company name!\": \"\\xA1Debe ingresar un nombre de la empresa!\",\n    \"You must provide a first name!\": \"\\xA1Debe ingresar un nombre!\",\n    \"You must provide a last name!\": \"\\xA1Debe ingresar un apellido!\",\n    \"You must provide a postal code!\": \"\\xA1Debe ingresar un c\\xF3digo postal!\",\n    \"You must provide a project title.\": \"Debe ingresar un t\\xEDtulo de proyecto.\",\n    \"You must provide a title for this insurance class\": \"Debe ingresar un t\\xEDtulo para esta clase de seguro\",\n    \"You must provide a username and password!\": \"\\xA1Debe ingresar un nombre de usuario y contrase\\xF1a!\",\n    \"You must provide a valid email\": \"Debe proveer un correo electr\\xF3nico valido\",\n    \"You must provide a valid phone number with area code!\": \"Debe de proveer un numero de tel\\xE9fono valido con el c\\xF3digo de \\xE1rea\",\n    \"You must provide an email to reset your password.\": \"Debe ingresar una direcci\\xF3n de correo electr\\xF3nico para cambiar su contrase\\xF1a.\",\n    \"You must select a later date\": \"Debe seleccionar una fecha posterior\",\n    \"You must select a later date!\": \"\\xA1Debe seleccionar una fecha posterior!\",\n    \"You must select an insurance type\": \"Debe seleccionar un tipo de seguro\",\n    \"You must select how often you process payroll\": \"Debe seleccionar la frecuencia con la que procesa la n\\xF3mina\",\n    \"You must select when you workweek begins\": \"Debe seleccionar la fecha de comienzo de su semana laboral\",\n    \"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\"Claim Against Us\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\": \"Debe defendernos de cualquier reclamo, demanda, acci\\xF3n judicial o procedimiento contra nosotros por parte de un tercero que sostenga que sus datos o el uso de los servicios, en incumplimiento de este Acuerdo, infringe o malversa los derechos de propiedad intelectual de un tercero (una \\\"Demanda en contra nuestro\\\"), y deber\\xE1 indemnizarlos por los datos, honorarios de abogados y costas adjudicadas en nuestro perjuicio como resultado de, y por las sumas pagadas por nosotros bajo una resoluci\\xF3n aprobada judicialmente de una Demanda en contra nuestro; (b) brindarle el control exclusivo de la defensa y resoluci\\xF3n de la Demanda en contra nuestro (siempre y cuando no se resuelva ninguna Demanda en su contra al menos que la resoluci\\xF3n nos libere de toda responsabilidad sin condiciones); y (c) brindarle toda la asistencia posible, a cuenta suya.\",\n    \"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\": \"No debe (i) permitir que ning\\xFAn tercero acceda a los servicios excepto por las personas permitidas por el presente, (ii) crear trabajos derivados basados en los servicios, excepto los autorizados por el presente, (iii) copiar, enmarcar o reproducir cualquier parte o contenido de los servicios, m\\xE1s que copiarlos o enmarcarlos en sus propias redes privadas o para prop\\xF3sitos comerciales internos, (iv) aplicar ingenier\\xEDa inversa a los servicios, o (v) acceder a los servicios para (a) construir un producto o servicio competitivo, o (b) copiar cualquier caracter\\xEDstica, funci\\xF3n o gr\\xE1fico de los servicios.\",\n    \"You warrant that You have validly entered into this Agreement and have the legal power to do so.\": \"Garantiza que ha celebrado este Acuerdo v\\xE1lidamente y que tiene la capacidad legal para hacerlo.\",\n    \"You will have control over what items you would like to import, as well as the option of setting up scheduled daily imports that tell busybusy to check Procore for new items and import them without you having to ever lift a finger!\": \"Usted tendr\\xE1 el control sobre los elementos que desea importar, as\\xED como las opci\\xF3n de configuraci\\xF3n de las importaciones programadas diarias de busybusy para revisar  los nuevos elementos de Procore e importarlos sin tener que levantar un solo dedo!\",\n    \"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\": \"Sus aplicaciones y c\\xF3digos. Si usted, un tercero que act\\xFAa en su nombre, o un usuario crea aplicaciones o c\\xF3digo de programaci\\xF3n utilizando los servicios, nos autoriza a hospedar, copiar, transmitir, mostrar y adaptar dichas aplicaciones y c\\xF3digo de programaci\\xF3n, \\xFAnicamente en la medida en que sea necesario para que nosotros podamos brindar los servicios en concordancia con este Acuerdo. De acuerdo a lo antedicho, no adquirimos ning\\xFAn derecho, dominio o propiedad de su parte o sus otorgantes de licencias seg\\xFAn este Acuerdo en o para dichas aplicaciones o c\\xF3digo de programaci\\xF3n, incluidos los derechos de propiedad intelectual all\\xED establecidos.\",\n    \"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\": \"Sus datos. De acuerdo a los derechos limitados que nos otorga por medio del presente, no adquirimos ning\\xFAn derecho, dominio o propiedad de su parte o sus otorgantes de licencias seg\\xFAn este Acuerdo en o para sus datos, incluidos los derechos de propiedad intelectual all\\xED establecidos.\",\n    \"Your File Headers\": \"Sus encabezados de archivos\",\n    \"Your Responsibilities.\": \"Sus responsabilidades.\",\n    \"Your Warranties.\": \"Sus garant\\xEDas.\",\n    \"Your access has been removed by your company.\": \"Su acceso ha sido eliminada por tu empresa.\",\n    \"Your company account has been created.\": \"Se ha creado la cuenta de su empresa.\",\n    \"Your current employee count is above the limit for this subscription.\": \"Su conteo actual de empleados se encuentra por encima del l\\xEDmite para esta suscripci\\xF3n.\",\n    \"Your data should follow the same format.\": \"Sus datos deber\\xEDan seguir el mismo formato.\",\n    \"Your email has been verified!\": \"\\xA1Se ha verificado su correo electr\\xF3nico!\",\n    \"Your password has been reset!\": \"\\xA1Se ha cambiado su contrase\\xF1a!\",\n    \"Your passwords do not match!\": \"\\xA1Sus contrase\\xF1as no coinciden!\",\n    \"ZAR -  South African rand\": \"ZAR - Rand sudafricano\",\n    \"ZMW -  Zambian kwacha\": \"ZMW - kwacha de Zambia\",\n    \"Zip or postal Code\": \"C\\xF3digo postal\",\n    \"after\": \"despu\\xE9s\",\n    \"and\": \"y\",\n    \"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under \\u201COur Warranties\\u201D above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\": \"y (c) brindarnos toda asistencia razonable, a costa nuestra. En caso que exista una Demanda en su contra, o si razonablemente creemos que los Servicios pueden violar o malversar los derechos de propiedad intelectual, podemos, a nuestra discreci\\xF3n y sin ning\\xFAn costo para usted (i) modificar los Servicios para que no violen o malversen derechos de propiedad intelectual, sin incumplir con las garant\\xEDas descritas en la secci\\xF3n \\\"Nuestras garant\\xEDas\\\" u (ii) obtener una licencia para la continuaci\\xF3n del uso de los Servicios en concordancia con este Acuerdo.\",\n    \"and select a package with the appropriate number of employees. Your first 30 days are free. If you have any questions, please feel free to contact customer service at 856-287-9287.\": \"Seleccione un paquete con la \\t\\t\\tcantidad apropiada de empleados. Los primeros 30 d\\xEDas son gratis. Si tiene alguna pregunta, por favor ponerse en contacto con el servicio de atenci\\xF3n al cliente al 856-287-9287.\",\n    \"back\": \"atr\\xE1s\",\n    \"busybusy Headers\": \"Encabezados busybusy\",\n    \"busybusy Payroll\": \"N\\xF3mina busybusy\",\n    \"click here\": \"haga clic aqu\\xED\",\n    \"clocked-in\": \"Fich\\xF3 entrada\",\n    \"file for QuickBooks Web Connector.\": \"archivo para el QuickBooks Web Connector.\",\n    \"go back\": \"volver atr\\xE1s\",\n    \"hours\": \"horas\",\n    \"hrs \": \"horas \",\n    \"less than $1\": \"menos de $1\",\n    \"less than 1 hour\": \"menos de 1 hora\",\n    \"means all electronic data or information submitted by You to the Services.\": \"quiere decir todos los datos o informaci\\xF3n electr\\xF3nicos presentados por usted a los servicios.\",\n    \"means the busybusy.com company described in Section 12.\": \"significa la empresa busybusy-com descrita en la Secci\\xF3n 12.\",\n    \"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\": \"significa virus, gusanos, bombas de tiempo, troyanos o cualquier otro c\\xF3digo maligno, archivos, secuencias de comandos, agentes o programas.\",\n    \"message\": \"Mensaje\",\n    \"mins\": \"minutos\",\n    \"next\": \"siguiente\",\n    \"no mapping found\": \"Ningun mapeo fue encontrado \",\n    \"none\": \"ninguno\",\n    \"not set\": \"No establecido\",\n    \"or call our customer service\": \"o llame a nuestro servicio de atenci\\xF3n al cliente\",\n    \"please contact us at legal@busybusy.com\": \"por favor, p\\xF3ngase en contacto con nosotros a legal@busybusy.com\",\n    \"previous\": \"anterior\",\n    \"projects successfully!\": \"proyectos exitosamente\",\n    \"select a sync log from the drop down\": \"Seleccione un registro de sincronizaci\\xF3n de la lista desplegable\",\n    \"subprojects\": \"Subproyectos\",\n    \"subscription\": \"Suscripci\\xF3n\",\n    \"terms & conditions\": \"t\\xE9rminos y condiciones\",\n    \"these cost codes\": \"estos c\\xF3digos de costo\",\n    \"these employees\": \"estos empleados\",\n    \"to busybusy\": \"Para busybusy\",\n    \"to see the required headers.\": \"para ver los encabezados requeridos.\",\n    \"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"para actualizar su cuenta. Si tiene alguna duda, p\\xF3ngase en contacto con nuestro servicio de atenci\\xF3n al cliente al 855-287-9287.\",\n    \"to upgrade your subscription. If you have any questions, please feel free to contact our customer service at 855-287-9287.\": \"para actualizar su suscripci\\xF3n. Si tiene alguna duda, p\\xF3ngase en contacto con nuestro servicio de atenci\\xF3n al cliente al 855-287-9287.\",\n    \"wage x\": \"salario X\",\n    \"with the description\": \"Con la descripci\\xF3n\"\n  };\n});","define('busy-app/loc', ['exports', '@busy-web/utils/loc'], function (exports, _loc) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _loc.default;\n    }\n  });\n});","define('busy-app/local-storage', ['exports', '@busy-web/utils/local-storage'], function (exports, _localStorage) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _localStorage.default;\n    }\n  });\n});","define('busy-app/locale', ['exports', '@busy-utils/utils/locale'], function (exports, _locale) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _locale.default;\n    }\n  });\n});","define('busy-app/mixins/check-permission', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\tpermissions: null,\n\t\tpermissionStatement: null,\n\n\t\tabortTransition: function abortTransition(transition) {\n\t\t\ttransition.abort();\n\t\t\tthis.transitionTo('index');\n\t\t},\n\t\thasPermission: function hasPermission(authPosition) {\n\t\t\tvar hasPermission = true;\n\t\t\tif (!Ember.isNone(this.get('permissions'))) {\n\t\t\t\tthis.get('permissions').forEach(function (permission) {\n\t\t\t\t\tif (!authPosition.get(permission)) {\n\t\t\t\t\t\thasPermission = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (!Ember.isNone(this.get('permissionStatement'))) {\n\t\t\t\tvar statements = this.get('permissionStatement').split(' ');\n\t\t\t\tvar truthy = false;\n\t\t\t\tvar compare = null;\n\t\t\t\tstatements.forEach(function (permission) {\n\t\t\t\t\tif (['||', '&&'].indexOf(permission) === -1) {\n\t\t\t\t\t\tvar val = !!authPosition.get(permission);\n\t\t\t\t\t\tif (!compare) {\n\t\t\t\t\t\t\ttruthy = val;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (compare === '||') {\n\t\t\t\t\t\t\t\ttruthy = truthy || val;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttruthy = truthy && val;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcompare = permission;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thasPermission = truthy;\n\t\t\t}\n\t\t\treturn hasPermission;\n\t\t},\n\n\n\t\tbeforeModel: function beforeModel(transition) {\n\t\t\tif (this.get('features.serverOutage')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(this.get('permissions')) || !Ember.isEmpty(this.get('permissionStatement'))) {\n\t\t\t\tvar auth = this.modelFor('application');\n\t\t\t\tif (Ember.isNone(auth.member) || Ember.isNone(auth.positions)) {\n\t\t\t\t\tthis.abortTransition(transition);\n\t\t\t\t} else {\n\t\t\t\t\tvar authPosition = auth.positions.findBy('id', auth.member.get('positionId'));\n\t\t\t\t\tif (!this.hasPermission(authPosition)) {\n\t\t\t\t\t\tthis.abortTransition(transition);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/mixins/controller-filter', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\t_qpDelegate: function _qpDelegate() {},\n\n\t\t/**\n   * filter list converts into a queryParams list\n   * for the route.\n   *\n   * @property _filterParams\n   * @type computed\n   */\n\t\t_filterParams: null,\n\n\t\tpage: 1,\n\t\tpage_size: Ember.computed(function () {\n\t\t\treturn this._pageSize();\n\t\t}),\n\n\t\troutePath: Ember.computed(function () {\n\t\t\treturn this.toString().replace(/[^:]*:([^:]*)::[\\s\\S]*/, '$1').replace(/\\//, '.');\n\t\t}),\n\n\t\tinit: function init() {\n\t\t\t// setup filters before calling _super\n\t\t\tthis._setupFilters();\n\t\t\tthis._super.apply(this, arguments);\n\t\t},\n\t\t_pageSize: function _pageSize() {\n\t\t\treturn _utils.LocalStorage.getWithDefault('member-pagination-size', 30);\n\t\t},\n\t\t_setupFilters: function _setupFilters() {\n\t\t\tvar _this = this;\n\n\t\t\tvar queryParams = Ember.get(this, 'queryParams') || [];\n\t\t\tvar filterParams = {};\n\t\t\tqueryParams.forEach(function (key) {\n\t\t\t\tEmber.set(filterParams, key, Ember.get(_this, key));\n\t\t\t});\n\t\t\tEmber.set(this, '_filterParams', filterParams);\n\t\t},\n\n\n\t\t/**\n   * Validates different combinations of filter queries.\n   *\n   * @public\n   * @method validateFilters\n   * @param {object} options keyed object of queryParams and the values to set\n   * @returns {viod}\n   */\n\t\tvalidateFilters: function validateFilters() /*options*/{\n\t\t\t_logger.default.warn(\"validateFilters should be overridden to handle filter combinations\");\n\t\t\treturn true;\n\t\t},\n\t\tsendFilter: function sendFilter(options) {\n\t\t\toptions = options || {};\n\t\t\tif (this.validateFilters(options)) {\n\t\t\t\tthis.setProperties(options);\n\t\t\t\tvar path = Ember.get(this, 'routePath');\n\t\t\t\tthis.transitionToRoute(path, { queryParams: options });\n\t\t\t}\n\t\t},\n\t\tsendResetFilters: function sendResetFilters() {\n\t\t\tthis.sendFilter(this.resetFilters());\n\t\t},\n\t\tresetFilters: function resetFilters() {\n\t\t\tvar filterParams = Ember.get(this, '_filterParams');\n\t\t\tfor (var key in filterParams) {\n\t\t\t\tif (filterParams.hasOwnProperty(key)) {\n\t\t\t\t\tif (key === 'page_size') {\n\t\t\t\t\t\tEmber.set(filterParams, key, this._pageSize());\n\t\t\t\t\t}\n\t\t\t\t\tEmber.set(this, key, Ember.get(filterParams, key));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn filterParams;\n\t\t}\n\t});\n});","define('busy-app/mixins/draggable', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create(Ember.Evented, {\n\t\tclassNames: ['busy-drag-mixin'],\n\t\tclassNameBindings: ['model.isDragging:drag', 'disabled'],\n\n\t\tisDragging: false,\n\n\t\tattributeBindings: ['draggable'],\n\n\t\tdragContainer: null,\n\t\tdraggable: true,\n\t\tdisabled: false,\n\n\t\tmodel: null,\n\n\t\tsetDragging: function setDragging(isDrag) {\n\t\t\tif (Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.set('model', Ember.Object.create({}));\n\t\t\t}\n\t\t\tthis.set('model.isDragging', isDrag);\n\t\t},\n\t\tisDraggable: function isDraggable(evt) {\n\t\t\tvar draggable = true;\n\t\t\tif (evt !== undefined && !Ember.isNone(this.get('dragContainer'))) {\n\t\t\t\tvar clickable = this.$(this.get('dragContainer'));\n\t\t\t\t(true && !(clickable.length > 0) && Ember.assert('The dragContainer was not found in the DOM', clickable.length > 0));\n\n\n\t\t\t\tvar left = clickable.position().left;\n\t\t\t\tvar right = left + clickable.width();\n\t\t\t\tvar click = evt.originalEvent.offsetX + Ember.$(evt.target).position().left;\n\t\t\t\tif (click < left || click > right) {\n\t\t\t\t\tdraggable = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn draggable;\n\t\t},\n\n\n\t\t/**\n   * drag start event handler\n   *\n   * @public\n   */\n\t\tdragStart: function dragStart(event) {\n\t\t\tif (this.isDraggable(event) && !this.get('disabled')) {\n\t\t\t\tthis.setDragging(true);\n\t\t\t\tvar dataTransfer = event.originalEvent.dataTransfer;\n\t\t\t\tdataTransfer.setData('Text', this.get('elementId'));\n\t\t\t\tthis.trigger('dragStartEvent', event);\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * drag end event handler\n   *\n   * @public\n   */\n\t\tdragEnd: function dragEnd(event) {\n\t\t\tthis.setDragging(false);\n\t\t\tthis.trigger('dragEndEvent', event);\n\t\t\tif (this.get('disabled')) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/mixins/droppable', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create(Ember.Evented, {\n\t\tclassNames: ['busy-drop-mixin'],\n\t\tclassNameBindings: ['model.isDragOver:drop', 'disabled'],\n\t\tattributeBindings: ['droppable'],\n\n\t\tisDragOver: false,\n\t\tdroppable: true,\n\t\tdisabled: false,\n\n\t\tmodel: null,\n\n\t\tsetDragOver: function setDragOver(isDrag) {\n\t\t\tif (Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.set('model', Ember.Object.create({}));\n\t\t\t}\n\t\t\tthis.set('model.isDragOver', isDrag);\n\t\t},\n\t\tdragEnter: function dragEnter(event) {\n\t\t\tevent.preventDefault();\n\t\t\tif (!this.get('disabled') && !this.get('isDragOver')) {\n\t\t\t\tthis.setDragOver(true);\n\t\t\t\tthis.trigger('dragEnterEvent', event);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * drag over event handler\n   *\n   * @public\n   */\n\t\tdragOver: function dragOver(event) {\n\t\t\tevent.preventDefault();\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * drag leave event handler\n   *\n   * @public\n   */\n\t\tdragLeave: function dragLeave(event) {\n\t\t\tevent.preventDefault();\n\t\t\tif (Ember.$(event.target).parents('.busy-drop-mixin').attr('id') !== this.$().attr('id')) {\n\t\t\t\tthis.setDragOver(false);\n\t\t\t\tthis.trigger('dragLeaveEvent', event);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * drop event handler\n   *\n   * @public\n   */\n\t\tdrop: function drop(event) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.setDragOver(false);\n\t\t\tthis.trigger('dropEvent', event);\n\t\t\treturn false;\n\t\t}\n\t});\n});","define('busy-app/mixins/model-loader', ['exports', 'busy-app/mixins/scroll-loader', 'busy-app/utils/settings'], function (exports, _scrollLoader, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\texports.default = Ember.Mixin.create(_scrollLoader.default, {\n\t\t/**\n   * Data Service Class to load data\n   *\n   * @public\n   * @property store\n   * @type DS.Store\n   */\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * Data retireved from the load query\n   *\n   * @public\n   * @property model\n   * @type DS.Model\n   */\n\t\tmodel: null,\n\n\t\t/**\n   * Public property to check if there is data\n   * loadding currently.\n   *\n   * @public\n   * @property isLoading\n   * @type boolean\n   */\n\t\tisLoading: false,\n\n\t\t/**\n   * Private property to hole the last\n   * queries meta data.\n   *\n   * @private\n   * @property __meta\n   * @type object\n   */\n\t\t__meta: null,\n\n\t\tautoLoad: true,\n\n\t\t/**\n   * Model loader method for loading models through a query.\n   * In this method the meta.next param will be used for future load more queries.\n   *\n   * @public\n   * @method load\n   * @param modelType {string} The model type string to load\n   * @param query {object} The query filter object\n   * @param replaceData {boolean} Replaces the model property rather than adds to it. default: true\n   * @returns {EmberPromise}\n   */\n\t\tload: function load(modelType) {\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tvar _this = this;\n\n\t\t\tvar replaceData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\t\tvar autoLoad = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n\t\t\t// enforce params are correct types\n\t\t\t(true && !(Ember.typeOf(modelType) === 'string') && Ember.assert('modelType in ModelLoader.load() must be of type string', Ember.typeOf(modelType) === 'string'));\n\t\t\t(true && !(Ember.typeOf(query) === 'object') && Ember.assert('query in ModelLoader.load() must be of type object', Ember.typeOf(query) === 'object'));\n\t\t\t(true && !(Ember.typeOf(replaceData) === 'boolean') && Ember.assert('replaceData in ModelLoader.load() must be of type boolean', Ember.typeOf(replaceData) === 'boolean'));\n\n\n\t\t\tthis.set('autoLoad', autoLoad);\n\n\t\t\t// set isLoading to true\n\t\t\tthis.set('isLoading', true);\n\n\t\t\t// load data\n\t\t\treturn this.get('store').query(modelType, query).then(function (model) {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\t// adds to the current model data or replaces the current data.\n\t\t\t\t\tvar data = _this._addData(model, replaceData);\n\n\t\t\t\t\t// trigger afterLoad event\n\t\t\t\t\t_this.trigger('afterLoad', model);\n\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}).finally(function () {\n\t\t\t\treturn _this.set('isLoading', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Retrieves the next set of results from the original load query results.\n   *\n   * @public\n   * @method loadMore\n   * @returns {EmberPromise}\n   */\n\t\tloadMore: function loadMore() {\n\t\t\t// get the next url from the previous load query\n\t\t\tvar next = this.get('__meta.next');\n\n\t\t\t// make sure there is a next\n\t\t\tif (!Ember.isNone(next)) {\n\t\t\t\t// parse the next url\n\t\t\t\tvar args = this._parseUrlString(next);\n\n\t\t\t\t// make sure there is a valid model type string\n\t\t\t\tif (args.modelType) {\n\t\t\t\t\t// load the next results and return the promisse\n\t\t\t\t\treturn this.load(args.modelType, args.query, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// return a place holder promise.\n\t\t\treturn Ember.RSVP.resolve(this.get('model') || []);\n\t\t},\n\n\n\t\t/**\n   * Handles adding or replacing the model data\n   *\n   * @private\n   * @method _addData\n   * @param model {DS.RecordArray}\n   * @param replaceData {boolean}\n   * @returns {DS.RecordArray}\n   */\n\t\t_addData: function _addData(model) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar replaceData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t// set the model if it has not been set\n\t\t\t\t// else add objects to the model.\n\t\t\t\tif (replaceData || Ember.isNone(this.get('model'))) {\n\t\t\t\t\tthis.set('model', null);\n\t\t\t\t\tthis.set('model', model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\t\t_this2.get('model').pushObject(item);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.set('__meta', model.get('meta'));\n\t\t\t}\n\n\t\t\treturn this.get('model');\n\t\t},\n\n\n\t\t/**\n   * Handles parsing the next or previous url from the busybusy api\n   *\n   * @private\n   * @method _parseUrlString\n   * @param url {string}\n   * @returns {object} key:value with modelType:string, query:object\n   */\n\t\t_parseUrlString: function _parseUrlString(url) {\n\t\t\tvar query = {};\n\n\t\t\t// remove the api url\n\t\t\turl = url.replace(_settings.default.get('api_url') + '/', '');\n\n\t\t\t// split the model from the args\n\n\t\t\tvar _url$split = url.split('?'),\n\t\t\t    _url$split2 = _slicedToArray(_url$split, 2),\n\t\t\t    modelType = _url$split2[0],\n\t\t\t    queryString = _url$split2[1];\n\n\t\t\tif (queryString) {\n\t\t\t\tvar searchParams = new URLSearchParams(queryString);\n\n\t\t\t\tsearchParams.forEach(function (value, key) {\n\t\t\t\t\tquery[key] = value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// return the modelType and query.\n\t\t\treturn { modelType: modelType, query: query };\n\t\t}\n\t});\n});","define('busy-app/mixins/model-sync', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Mixins\n  *\n  */\n\tvar INTERVAL = 10000;\n\n\t/**\n  * `Mixin/ModelSync`\n  *\n  * Mixin class that adds a sync method to a DS.Model for syncing joined models according\n  * to a sync property - like `model.updatedOn`\n  *\n  * @class ModelSync\n  * @namespace Mixins\n  * @extends Mixin\n  */\n\texports.default = Ember.Mixin.create({\n\t\t/**\n   * The property to check for the syncstamp\n   *\n   * @property syncName\n   * @type string\n   * @default updatedOn\n   */\n\t\tsyncName: 'updatedOn',\n\n\t\t/**\n   * Calls update or reload record every second until the model\n   * most up to date model is retrieved\n   *\n   * This method has no return. Models will update when the sync is done\n   * and can be accessed like normal on this model.\n   *\n   * @public\n   * @method sync\n   * @param type {string} path to joined model on this model\n   */\n\t\tsync: function sync(type, expectModel) {\n\t\t\tvar syncname = this.get('syncName');\n\t\t\tif (!Ember.isEmpty(type) && typeof this.get(syncname) === 'number') {\n\t\t\t\t__sync.call(this, type, syncname, expectModel);\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/**\n  * Calls the reload or update method on the adapterPopulated model\n  * then checks the sync property to see if it is after the sync property\n  * passed in\n  *\n  * @private\n  * @method __syncModel\n  * @param record {DS.AdapterPopulatedRecord}\n  * @param syncstamp {number} the time to check the sync against\n  * @param syncname {string} the name of the property to compare\n  * @param expectModel {boolean} true if the sync expects to search until it finds a model\n  * @return {EmberPromise|boolean}\n  */\n\tfunction __syncModel(record, syncstamp, syncname, expectModel) {\n\t\t// return model is in sync when no timestamp is found\n\t\tif (Ember.isNone(syncstamp)) {\n\t\t\treturn Ember.RSVP.resolve(true);\n\t\t}\n\n\t\t// set defualt promise if the record does not have reload or update method\n\t\tvar promise = Ember.RSVP.resolve(null);\n\n\t\tif (record && record.reload) {\n\t\t\t// reload for a single record\n\t\t\tpromise = record.reload();\n\t\t} else if (record && record.update && !record.get('isUpdating')) {\n\t\t\t// update for an array of records\n\t\t\tpromise = record.update().then(function (model) {\n\t\t\t\treturn model.sortBy(syncname).reverse().get('firstObject');\n\t\t\t});\n\t\t}\n\n\t\t// promise will return true if the data is synced and\n\t\t// it will return false if the data is out of sync\n\t\treturn promise.then(function (item) {\n\t\t\t// default to in sync when item is null or undefiend or empty string or empty array\n\t\t\tif (Ember.isEmpty(item)) {\n\t\t\t\treturn expectModel ? false : true;\n\t\t\t}\n\n\t\t\t// check if syncstamp is greater than item syncstamp\n\t\t\tif (syncstamp > item.get(syncname)) {\n\t\t\t\treturn false; // false for not in sync\n\t\t\t} else {\n\t\t\t\treturn true; // true for in sync\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n  * calls the __syncModel method every second until it returns a truthy value\n  *\n  * @private\n  * @method __sync\n  * @param type {string} the name of the joined model to get from the this model\n  * @param syncname {string} the name of the property to compare for this model and the joined model\n  * @param expectModel {boolean} true if the sync expects to run until a model is found\n  */\n\tfunction __sync(type, syncname, expectModel) {\n\t\tvar _this = this;\n\n\t\tvar tries = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n\t\tif (tries > 30) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar record = this.get(type + '.content') || this.get(type);\n\t\tvar syncstamp = this.get(syncname);\n\t\t__syncModel(record, syncstamp, syncname, expectModel).then(function (isSync) {\n\t\t\tif (!isSync) {\n\t\t\t\tEmber.run.later(_this, function () {\n\t\t\t\t\t__sync.call(this, type, syncname, expectModel, tries + 1);\n\t\t\t\t}, INTERVAL);\n\t\t\t}\n\t\t});\n\t}\n});","define('busy-app/mixins/open-up-down', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Mixin.create({});\n});","define('busy-app/mixins/pay-period-loader', ['exports', 'busy-app/mixins/scroll-loader', '@busy-web/utils', 'busy-app/utils/settings'], function (exports, _scrollLoader, _utils, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create(_scrollLoader.default, {\n\t\t/**\n   * Data Service Class to load data\n   *\n   * @public\n   * @property store\n   * @type DS.Store\n   */\n\t\tstore: Ember.inject.service('store'),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\n\t\t/**\n   * Data retireved from the load query\n   *\n   * @public\n   * @property model\n   * @type DS.Model\n   */\n\t\tmodel: null,\n\n\t\t/**\n   * Public property to check if there is data\n   * loadding currently.\n   *\n   * @public\n   * @property isLoading\n   * @type boolean\n   */\n\t\tisLoading: false,\n\n\t\tautoLoad: true,\n\t\toldestEntry: null,\n\n\t\t/**\n   * Model loader method for loading models through a query.\n   * In this method the meta.next param will be used for future load more queries.\n   *\n   * @public\n   * @method load\n   * @param modelType {string} The model type string to load\n   * @param query {object} The query filter object\n   * @param replaceData {boolean} Replaces the model property rather than adds to it. default: true\n   * @returns {EmberPromise}\n   */\n\t\tload: function load(memberId, offset, limit) {\n\t\t\tvar _this = this;\n\n\t\t\tvar replaceData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t\t\tvar autoLoad = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\n\t\t\tif (this.get('isDestroyed')) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tthis.set('autoLoad', autoLoad);\n\n\t\t\t// set isLoading to true\n\t\t\tthis.set('isLoading', true);\n\t\t\tthis.set('__offset', offset);\n\t\t\tthis.set('__limit', limit);\n\t\t\tthis.set('memberId', memberId);\n\n\t\t\treturn this._getPayPeriods(memberId, offset, limit).then(function (model) {\n\t\t\t\tif (!_this.get('isDestroyed')) {\n\t\t\t\t\tvar promise = Ember.RSVP.resolve(model);\n\n\t\t\t\t\tif (Ember.isNone(_this.get('oldestEntry'))) {\n\t\t\t\t\t\tpromise = _this.get('store').query('time-entry', { member_id: memberId, _asc: ['start_time'], page: 1, page_size: 1 }).then(function (entry) {\n\t\t\t\t\t\t\t_this.set('oldestEntry', entry.get('firstObject'));\n\n\t\t\t\t\t\t\t// return pay period promise model\n\t\t\t\t\t\t\treturn model;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn promise.then(function (model) {\n\t\t\t\t\t\t// adds to the current model data or replaces the current data.\n\t\t\t\t\t\tvar data = _this._addData(model, replaceData);\n\n\t\t\t\t\t\t// trigger afterLoad event\n\t\t\t\t\t\t_this.trigger('afterLoad', model);\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}).finally(function () {\n\t\t\t\treturn !_this.get('isDestroyed') && _this.set('isLoading', false);\n\t\t\t});\n\t\t},\n\t\t_getPayPeriods: function _getPayPeriods(memberId, offset, limit) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar results = limit * (offset + 1);\n\t\t\tvar payPeriods = this.get('payPeriod').getPayPeriodRange(_utils.Time.timestamp(), results).slice(limit * offset, results);\n\n\t\t\t// first getPayPeriods call will not have an oldestEntry set\n\t\t\t// so always load the first set of results\n\t\t\tif (!Ember.isNone(this.get('oldestEntry'))) {\n\t\t\t\tvar endPeriod = this.endPayPeriodTime();\n\n\t\t\t\t// load first ten pay periods and any periods that are not older than the endPeriod\n\t\t\t\tpayPeriods = payPeriods.filter(function (item, index) {\n\t\t\t\t\treturn index < 9 || item.get('start') >= endPeriod;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// if payPeriods length is greater than 0 then load the actual pay-period-member-seconds models\n\t\t\tif (payPeriods.get('length') > 0) {\n\t\t\t\tvar query = {\n\t\t\t\t\tmember_id: memberId,\n\t\t\t\t\t_gte: { start_time: payPeriods.get('lastObject.start') },\n\t\t\t\t\t_lte: { end_time: payPeriods.get('firstObject.end') }\n\t\t\t\t};\n\n\t\t\t\treturn this.get('store').query('pay-period-member-seconds', query).then(function (data) {\n\t\t\t\t\tvar generated = [];\n\t\t\t\t\tpayPeriods.forEach(function (item) {\n\t\t\t\t\t\tvar model = data.findBy('startTime', item.get('start'));\n\t\t\t\t\t\tif (Ember.isNone(model)) {\n\t\t\t\t\t\t\tmodel = _this2._createPeriod(memberId, item.get('start'), item.get('end'));\n\t\t\t\t\t\t\tgenerated.pushObject(model._internalModel);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tdata.pushObjects(generated);\n\t\t\t\t\treturn data.sortBy('startTime').reverse();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\t\t_createPeriod: function _createPeriod(memberId, start, end) {\n\t\t\t// matchup with expected properties\n\t\t\tvar model = this.get('store').createRecord('pay-period-member-seconds', {\n\t\t\t\tstartTime: start,\n\t\t\t\tendTime: end,\n\t\t\t\tregularSeconds: 0,\n\t\t\t\tovertimeSeconds: 0,\n\t\t\t\tdoubletimeSeconds: 0,\n\t\t\t\tmemberId: memberId\n\t\t\t});\n\n\t\t\treturn model;\n\t\t},\n\n\n\t\t/**\n   * Retrieves the next set of results from the original load query results.\n   *\n   * @public\n   * @method loadMore\n   * @returns {EmberPromise}\n   */\n\t\tloadMore: function loadMore() {\n\t\t\t// make sure there is more\n\t\t\tif (this.get('hasLoadMore')) {\n\t\t\t\treturn this.load(this.get('memberId'), this.get('__offset') + 1, this.get('__limit'), false);\n\t\t\t}\n\t\t\t// return a place holder promise.\n\t\t\treturn Ember.RSVP.resolve(this.get('model') || []);\n\t\t},\n\t\tcanLoadMore: function canLoadMore() {\n\t\t\tif (!Ember.isNone(this.get('member.id'))) {\n\t\t\t\tvar start = this.get('model.lastObject.startTime');\n\t\t\t\tvar end = this.endPayPeriodTime();\n\n\t\t\t\tif (!Ember.isNone(start) && start > end) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tendPayPeriodTime: function endPayPeriodTime() {\n\t\t\tvar end = this.get('oldestEntry.startTime');\n\t\t\tif (Ember.isNone(end) || end > this.get('member.createdOn')) {\n\t\t\t\tend = this.get('member.createdOn');\n\t\t\t}\n\t\t\treturn end;\n\t\t},\n\n\n\t\t/**\n   * Handles adding or replacing the model data\n   *\n   * @private\n   * @method _addData\n   * @param model {DS.RecordArray}\n   * @param replaceData {boolean}\n   * @returns {DS.RecordArray}\n   */\n\t\t_addData: function _addData(model) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar replaceData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tif (!this.get('isDestroyed')) {\n\t\t\t\t// set the model if it has not been set\n\t\t\t\t// else add objects to the model.\n\t\t\t\tif (replaceData || Ember.isNone(this.get('model'))) {\n\t\t\t\t\tthis.set('model', null);\n\t\t\t\t\tthis.set('model', model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\t\t_this3.get('model').pushObject(item);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.canLoadMore()) {\n\t\t\t\t\tthis.set('hasLoadMore', true);\n\t\t\t\t} else {\n\t\t\t\t\tthis.set('hasLoadMore', false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.get('model');\n\t\t},\n\n\n\t\t/**\n   * Handles parsing the next or previous url from the busybusy api\n   *\n   * @private\n   * @method _parseUrlString\n   * @param url {string}\n   * @returns {object} key:value with modelType:string, query:object\n   */\n\t\t_parseUrlString: function _parseUrlString(url) {\n\t\t\t// remove the api url\n\t\t\turl = url.replace(_settings.default.get('api_url') + '/', '');\n\n\t\t\t// split the model from the args\n\t\t\tvar urlComponents = url.split('?');\n\n\t\t\t// set the modelType\n\t\t\tvar modelType = urlComponents[0];\n\n\t\t\tvar query = {};\n\t\t\tif (urlComponents[1] !== undefined) {\n\t\t\t\t// separate the the query params\n\t\t\t\tvar argComponents = urlComponents[1].split('&');\n\n\t\t\t\t// loop through the query params to create\n\t\t\t\t// key value pairs\n\t\t\t\targComponents.forEach(function (item) {\n\t\t\t\t\t// separate the key from the value\n\t\t\t\t\tvar parts = item.split('=');\n\n\t\t\t\t\t// add the key:value pair to the args list\n\t\t\t\t\tquery[parts[0]] = parts[1];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// return the modelType and query.\n\t\t\treturn { modelType: modelType, query: query };\n\t\t}\n\t});\n});","define('busy-app/mixins/process-options', ['exports', 'ember-google-maps/mixins/process-options'], function (exports, _processOptions) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _processOptions.default;\n    }\n  });\n});","define('busy-app/mixins/register-events', ['exports', 'ember-google-maps/mixins/register-events'], function (exports, _registerEvents) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _registerEvents.default;\n    }\n  });\n});","define('busy-app/mixins/safety-signoff', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\tservice: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tverifySafetyAndSave: function verifySafetyAndSave(member, safetySignOff, safetySignOffRequired, callBackPromise) {\n\t\t\tvar _this = this;\n\n\t\t\t// show daily sign off if safety or accuracy is enabled on organization\n\t\t\tif (this.get('features.safetySignOff') && (this.get('auth.organization.safetySignature') || this.get('auth.organization.timeAccuracy'))) {\n\t\t\t\t// only show the safety signoff if it has not been completed\n\t\t\t\tif (!Ember.isNone(member) && member.id === this.get('auth.member.id')) {\n\t\t\t\t\tthis.set(safetySignOff, true);\n\t\t\t\t} else {\n\t\t\t\t\t// this will always be called when the org has signoff settings on\n\t\t\t\t\t// and a group entry is used.\n\t\t\t\t\tthis.set(safetySignOffRequired, true);\n\t\t\t\t}\n\n\t\t\t\t// create a promise to wait for the signoff trigger event to be fired.\n\t\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\t\t_this.on('safetySignOffComplete', function (result) {\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tcallBackPromise().then(function (model) {\n\t\t\t\t\t\t\t\treturn resolve(model);\n\t\t\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn callBackPromise();\n\t\t},\n\n\n\t\t/**\n   * call this method from save safety dialog action\n   *\n   */\n\t\tsaveSafetySignoff: function saveSafetySignoff() {\n\t\t\tthis.trigger('safetySignOffComplete', true);\n\t\t},\n\n\n\t\t/**\n   * call this method from the cancel save safety dialog action\n   *\n   */\n\t\tcancelSafetySignoff: function cancelSafetySignoff() {\n\t\t\tthis.trigger('safetySignOffComplete', false);\n\t\t}\n\t});\n});","define('busy-app/mixins/scroll-loader', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\t/**\n   * String path of the element to bind the scroll listener to.\n   *\n   * @public\n   * @property scrollElement\n   * @type srting\n   */\n\t\tscrollElement: null,\n\n\t\t/**\n   * Propperty to allow or unallow the auto loader\n   * to load data\n   *\n   * @public\n   * @property autoLoad\n   * @type boolean\n   */\n\t\tautoLoad: true,\n\n\t\t/**\n   * Private property to stop multiple loads triggered by\n   * the scroll.\n   *\n   * @private\n   * @property __canTrigger\n   * @type boolean\n   */\n\t\t__canTrigger: true,\n\n\t\t/**\n   * Generates a string for the class name this mixin gets associated with\n   *\n   * @private\n   * @method _classNameString\n   * @returns {string}\n   */\n\t\t_classNameString: function _classNameString() {\n\t\t\treturn this.toString().replace(/^</, '').replace(/::ember[\\d]*>$/, '');\n\t\t},\n\n\t\t/**\n   * Handles checking and dispatching the load more if the scroll is\n   * within the margins (scrollHeight-scrollPosition) <= 0\n   *\n   * @private\n   * @method _scrollHandler\n   * @param scrollPosition {number}\n   * @param scrollHeight {number}\n   */\n\t\t_scrollHandler: function _scrollHandler(scrollPosition, scrollHeight) {\n\t\t\t// __canTrigger is true and the scrollHeight - scrollPosition is <= 0.\n\t\t\tif (this.get('autoLoad') && this.__canTrigger && scrollHeight - scrollPosition <= 0) {\n\t\t\t\t// can trigger is false while the load is triggered\n\t\t\t\tthis.__canTrigger = false;\n\n\t\t\t\t//after loadMore than __canTrigger will be true again\n\t\t\t\tthis.trigger('loadMore');\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Sets up the jQuery bin listeners for scroll and element mutations\n   *\n   * @private\n   * @method _bindListeners\n   */\n\t\t_bindListeners: Ember.on('didInsertElement', function () {\n\t\t\tvar _this = this;\n\n\t\t\t// if the scrollElement in defined.\n\t\t\tif (!Ember.isNone(this.get('scrollElement'))) {\n\t\t\t\t// get the element specified by the scrollElement string\n\t\t\t\tvar scroller = Ember.$(this.get('scrollElement'));\n\n\t\t\t\t// require the scrollElement is set and has retireved a valid DOM object.\n\t\t\t\t(true && !(scroller.length > 0) && Ember.assert('The scrollElement could not be found in the DOM. Please check the path: ' + this.get('scrollElement'), scroller.length > 0));\n\n\t\t\t\t// unbind and rebind the scroll listener\n\n\t\t\t\tscroller.unbind('scroll.' + this._classNameString());\n\t\t\t\tscroller.bind('scroll.' + this._classNameString(), function (evt) {\n\t\t\t\t\t// scroll element\n\t\t\t\t\tvar el = Ember.$(evt.target);\n\n\t\t\t\t\t// call scroll handler\n\t\t\t\t\t_this._scrollHandler(el.scrollTop() + el.innerHeight(), el.get(0).scrollHeight);\n\t\t\t\t});\n\n\t\t\t\t// unbind and rebind the modified dom listener event\n\t\t\t\tscroller.unbind('DOMSubtreeModified.' + this._classNameString());\n\n\t\t\t\t// the element changed can trigger is true no\n\t\t\t\tscroller.bind('DOMSubtreeModified.' + this._classNameString(), function () {\n\t\t\t\t\treturn _this.__canTrigger = true;\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/mixins/target-name', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\t__controller: null,\n\t\ttargetName: null,\n\n\t\tsetController: Ember.on('setupController', function () {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.set('__controller', true);\n\t\t}),\n\n\t\t/**\n   * Gets the target routeName from the transition object\n   *\n   * @private\n   * @method getTarget\n   * @param transition {object}\n   */\n\t\tgetTarget: function getTarget(transition) {\n\t\t\tif (!Ember.isNone(transition)) {\n\t\t\t\tvar targetName = Ember.get(transition, 'targetName');\n\t\t\t\t// set the target routes name\n\t\t\t\tthis.set('targetName', targetName);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * Observer triggered on transition to change the pageTitle\n   *\n   * @public\n   * @method setTarget\n   */\n\t\tsetTarget: Ember.observer('targetName', '__controller', function () {\n\t\t\t// get the target route name\n\t\t\tvar targetName = this.get('targetName');\n\t\t\tif (!Ember.isEmpty(targetName) && this.get('__controller')) {\n\t\t\t\t// get the route name from the target name\n\t\t\t\tvar routeName = targetName.split('.')[1];\n\t\t\t\tif (!Ember.isEmpty(routeName)) {\n\t\t\t\t\t// format the route name\n\t\t\t\t\tvar title = this.formatTitle(routeName);\n\n\t\t\t\t\t// set the pageTitle to the formated route name.\n\t\t\t\t\tvar controller = this.controllerFor('time-card');\n\t\t\t\t\tcontroller.set('pageTitle', title);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Formats a title for the route name.\n   * This takes a dasherized string an adds spaces and capital letters for a title format.\n   *\n   * @public\n   * @method formatTitle\n   * @param routeName {string} Dasherized string\n   * @return {string}\n   */\n\t\tformatTitle: function formatTitle(routeName) {\n\t\t\t// split the name on the dashes\n\t\t\tvar titleParts = routeName.split('-');\n\n\t\t\t// loop the parts and clssify the strings\n\t\t\tvar title = [];\n\t\t\ttitleParts.forEach(function (item) {\n\t\t\t\treturn title.push(item.classify());\n\t\t\t});\n\n\t\t\t// return the strings joined with spaces\n\t\t\treturn title.join(' ');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tloading: function loading(transition) {\n\t\t\t\tthis.getTarget(transition);\n\t\t\t\tthis._super.apply(this, arguments);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/mixins/verified-account', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Mixin.create({\n\t\t// session: service('session'),\n\t\t//\n\t\t// beforeModel(transition) {\n\t\t// \tif(!this.get('session.session.authenticated.verifiedEmail')) {\n\t\t// \t\ttransition.abort();\n\t\t// \t\tthis.get('session').set('attemptedTransition', transition);\n\t\t// \t\tthis.transitionTo('verify-email');\n\t\t// \t} else {\n\t\t// \t\treturn this._super.apply(this, arguments);\n\t\t// \t}\n\t\t// }\n\t});\n});","define('busy-app/models/active-users', ['exports', 'ember-data', '@busy-web/data', '@busy-web/utils'], function (exports, _emberData, _data, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'usage-report',\n\t\t_methodName: 'get-most-recent-reports',\n\n\t\tendDay: _emberData.default.attr('number'),\n\t\ttotal: _emberData.default.attr('number'),\n\n\t\tendDayDate: Ember.computed('endDay', function () {\n\t\t\treturn _utils.Time.date(this.get('endDay'));\n\t\t})\n\t});\n});","define('busy-app/models/authoritative-signature', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tproxyMemberId: _emberData.default.attr('string'),\n\t\tcreatedOnOffset: _emberData.default.attr('number'),\n\t\tcreatedOnDST: _emberData.default.attr('boolean'),\n\t\tsignature: _emberData.default.attr('svg'),\n\t\tsignatureUrl: _emberData.default.attr('string'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tproxyMember: _emberData.default.belongsTo('member', { inverse: null, referenceKey: 'proxyMemberId', foreignKey: 'id' }),\n\n\t\tcreatedOnConverted: Ember.computed('createdOn', 'createdOnOffset', 'createdOnDST', function () {\n\t\t\treturn this.get('createdOn') + this.get('createdOnOffset');\n\t\t}),\n\n\t\thasProxySigner: Ember.computed('memberId', 'proxyMemberId', function () {\n\t\t\treturn this.get('proxyMemberId') && this.get('memberId') !== this.get('proxyMemberId');\n\t\t})\n\t});\n});","define('busy-app/models/busy-sign-in-question', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    questionTitle: _emberData.default.attr('string'),\n    questionDescription: _emberData.default.attr('string'),\n    questionPrompt: _emberData.default.attr('string'),\n    type: _emberData.default.attr('string'),\n    required: _emberData.default.attr('boolean'),\n    choices: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    archivedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    choicesArray: Ember.computed('choices', function () {\n      var choices = this.get('choices').replace('[', '').split('}, {');\n      var choiceArray = [];\n      choices.forEach(function (choice) {\n        if (choice.includes('Yes') && choice.includes('true')) {\n          var choiceObj = { choice: 'Yes', value: true };\n          choiceArray.push(choiceObj);\n        } else if (choice.includes('No') && choice.includes('false')) {\n          var _choiceObj = { choice: 'No', value: false };\n          choiceArray.push(_choiceObj);\n        }\n      });\n      return choiceArray;\n    })\n  });\n});","define('busy-app/models/chargify-customer-statement-pdf', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var Model = _emberData.default.Model,\n      attr = _emberData.default.attr;\n  exports.default = Model.extend(_data.RPCModelMixin, {\n    _clientName: 'statement-rpc',\n    _methodName: 'get-pdf-statement',\n\n    url: attr('string')\n  });\n});","define('busy-app/models/chargify-customer-statement', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'statement-rpc',\n\t\t_methodName: 'get-statements',\n\n\t\t// arguments\n\t\t// pageSize: attr('number', { defaultValue: 6 }),\n\t\t// pageNum: attr('number', { defaultValue: 1 }),\n\n\t\tusage: attr('number'), // number of active users\n\t\tamount: attr('number'),\n\t\tcreatedOnDate: attr('number'),\n\t\tpaidOnDate: attr('number'),\n\t\tperiodStartDate: attr('number'),\n\t\tperiodEndDate: attr('number'),\n\n\t\tamountString: Ember.computed('amount', function () {\n\t\t\tif (!Ember.isNone(this.get('amount'))) {\n\t\t\t\tvar amount = this.get('amount') / 100;\n\t\t\t\tamount = amount.toFixed(2);\n\t\t\t\treturn '$' + amount;\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/client-time-entry-break-log', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kLocationValidTime = 150;\n\n\t/**\n  * `Model/ClientTimeEntryBreakLog`\n  *\n  * @class ClientTimeEntryBreakLog\n  * @namespace Models\n  * @extends DS.Model\n  */\n\t/**\n  * @module Models\n  *\n  */\n\texports.default = _emberData.default.Model.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tclientTimeEntryLogId: _emberData.default.attr('string'),\n\t\toriginalTimeEntryBreakId: _emberData.default.attr('string'),\n\t\tmergedTimeEntryBreakId: _emberData.default.attr('string'),\n\t\tupdaterMemberId: _emberData.default.attr('string'),\n\t\ttimeEntryBreakId: _emberData.default.attr('string'),\n\t\ttimeEntryId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tstartMetaOffset: _emberData.default.attr('number'),\n\t\tpaidBreak: _emberData.default.attr('boolean'),\n\t\tstartTimeDst: _emberData.default.attr('boolean'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tendMetaOffset: _emberData.default.attr('number'),\n\t\tendTimeDst: _emberData.default.attr('boolean'),\n\t\tactionType: _emberData.default.attr('number'),\n\t\ttimeEntryBreakCreatedOn: _emberData.default.attr('number'),\n\t\ttimeEntryBreakDeletedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tdeviceType: _emberData.default.attr('string'),\n\t\tstartLocationId: _emberData.default.attr('string'),\n\t\tendLocationId: _emberData.default.attr('string'),\n\t\tstartDeviceTime: _emberData.default.attr('number'),\n\t\tendDeviceTime: _emberData.default.attr('number'),\n\t\tstartTimeTrusted: _emberData.default.attr('number'),\n\t\tendTimeTrusted: _emberData.default.attr('number'),\n\n\t\tupdaterMember: _emberData.default.belongsTo('member'),\n\t\tstartLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'startLocationId', foreignKey: 'id' }),\n\t\tendLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'endLocationId', foreignKey: 'id' }),\n\n\t\trangeString: Ember.computed('startTime', 'endTime', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('startTime'), 'h:mm A') + ' - ' + _utils.Time.timeFormat(this.get('endTime'), 'h:mm A');\n\t\t}),\n\n\t\ttotalTime: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('endTime'))) {\n\t\t\t\ttotal = (this.get('endTime') || 0) - (this.get('startTime') || 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\trangeTotalString: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar start = _utils.Time.timeFormat(this.get('startTime'), 'h:mm A');\n\t\t\tvar end = _utils.Time.timeFormat(this.get('endTime'), 'h:mm A');\n\t\t\tvar total = _utils.Time.convertSeconds(this.get('endTime') - this.get('startTime'), true);\n\t\t\treturn start + ' - ' + end + ' (' + total.hours + ':' + total.minutes + ')';\n\t\t}),\n\n\t\tcreatedOnString: Ember.computed('createdOn', function () {\n\t\t\t// created on is in utc time so convert to local time.\n\t\t\tvar time = this.get('createdOn') + _utils.Time.timezone(this.get('createdOn'));\n\t\t\treturn _utils.Time.timeFormat(time, 'h:mm A MM/DD/YYYY');\n\t\t}),\n\n\t\tactionTypeString: Ember.computed('actionType', function () {\n\t\t\tvar modelType = this.get('actionType');\n\t\t\tvar actionString = '';\n\t\t\tif (modelType === 10) {\n\t\t\t\tactionString = (0, _utils.loc)(\"Break start\");\n\t\t\t} else if (modelType === 20) {\n\t\t\t\tactionString = (0, _utils.loc)(\"Break end\");\n\t\t\t} else if (modelType === 30 || modelType === 50) {\n\t\t\t\tactionString = (0, _utils.loc)(\"Manual break\");\n\t\t\t} else if (modelType === 40 || modelType === 60) {\n\t\t\t\tactionString = (0, _utils.loc)(\"Edited break\");\n\t\t\t} else if (modelType === 80) {\n\t\t\t\tactionString = (0, _utils.loc)('Break conflict resolution');\n\t\t\t} else if (modelType === 90) {\n\t\t\t\tactionString = (0, _utils.loc)('Break deleted');\n\t\t\t} else if (modelType === 100) {\n\t\t\t\tactionString = (0, _utils.loc)('Break deleted by conflict resolution');\n\t\t\t}\n\t\t\treturn actionString;\n\t\t}),\n\n\t\tvalidLocationTime: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n\t\t\tvar validLocTime = kLocationValidTime;\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\tvalidLocTime = kLocationValidTime + this.get('auth.organization.timeRoundingInterval');\n\t\t\t}\n\t\t\treturn validLocTime;\n\t\t}),\n\n\t\tisStartLocationValid: Ember.computed('startLocation.createdOn', 'startLocationId', 'startTime', 'timeEntry.offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('startLocation.createdOn'))) {\n\t\t\t\tvar locCreatedOn = this.get('startLocation.createdOn') + this.get('timeEntry.offset');\n\t\t\t\tif (locCreatedOn >= this.get('startTime') - validLocTime && locCreatedOn <= this.get('startTime') + validLocTime) {\n\t\t\t\t\tisValid = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\tisEndLocationValid: Ember.computed('endLocation.createdOn', 'endLocationId', 'endTime', 'timeEntry.offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('endLocation.createdOn')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar locCreatedOn = this.get('endLocation.createdOn') + this.get('timeEntry.offset');\n\t\t\t\tif (locCreatedOn >= this.get('endTime') - validLocTime && locCreatedOn <= this.get('endTime') + validLocTime) {\n\t\t\t\t\tisValid = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the start of the break\n   *\n   */\n\t\tstartString: Ember.computed('startTime', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('startTime'), 'h:mm A M/D/YY');\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the end of the break\n   *\n   */\n\t\tendString: Ember.computed('endTime', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('endTime'), 'h:mm A M/D/YY');\n\t\t}),\n\n\t\t/**\n   * checks to see if the break is manual\n   *\n   */\n\t\tisManualBreak: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 30 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if its the start of a time break\n   *\n   */\n\t\tisBreakStart: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 10 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if its the end of a time break\n   *\n   */\n\t\tisBreakEnd: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 20 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if its an edit of the break\n   *\n   */\n\t\teditBreak: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 40 ? true : false;\n\t\t}),\n\n\t\t/**\n   * string of date/time from beginnging to end of the break\n   *\n   */\n\t\tdateString: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('startTime'), 'h:mm A M/D/YY') + ' - ' + _utils.Time.timeFormat(this.get('endTime'), 'h:mm A M/D/YY');\n\t\t\t}\n\t\t\treturn date;\n\t\t})\n\t});\n});","define('busy-app/models/client-time-entry-log', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/time-entry'], function (exports, _emberData, _utils, _timeEntry) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Models\n  *\n  */\n\tvar kLocationValidTime = 150;\n\n\t/**\n  * `Model/ClientTimeEntryLog`\n  *\n  * @class ClientTimeEntryLog\n  * @namespace Models\n  * @extends DS.Model\n  *\n  * @property updaterMemberId {string}\n  * @property originalTimeEntryId {string}\n  * @property mergedTimeEntryId {string}\n  * @property timeEntryId {string}\n  */\n\texports.default = _emberData.default.Model.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tupdaterMemberId: _emberData.default.attr('string'),\n\t\toriginalTimeEntryId: _emberData.default.attr('string'),\n\t\tmergedTimeEntryId: _emberData.default.attr('string'),\n\t\ttimeEntryId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\toffset: _emberData.default.attr('number'),\n\t\tmetaOffset: _emberData.default.attr('number'),\n\t\tdaylightSavingTime: _emberData.default.attr('boolean'),\n\t\tmetaDaylightSavingTime: _emberData.default.attr('boolean'),\n\t\tdescription: _emberData.default.attr('string'),\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcostCodeId: _emberData.default.attr('string'),\n\t\tequipmentId: _emberData.default.attr('string'),\n\t\tactionType: _emberData.default.attr('number'),\n\t\ttimeEntryCreatedOn: _emberData.default.attr('number'),\n\t\ttimeEntryDeletedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tdeviceType: _emberData.default.attr('string'),\n\t\tstartLocationId: _emberData.default.attr('string'),\n\t\tendLocationId: _emberData.default.attr('string'),\n\t\tstartDeviceTime: _emberData.default.attr('number'),\n\t\tendDeviceTime: _emberData.default.attr('number'),\n\t\tstartTimeTrusted: _emberData.default.attr('number'),\n\t\tendTimeTrusted: _emberData.default.attr('number'),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\t\tupdaterMember: _emberData.default.belongsTo('member', { referenceKey: 'updaterMemberId', foreignKey: 'id' }),\n\t\tproject: _emberData.default.belongsTo('project'),\n\t\tcostCode: _emberData.default.belongsTo('cost-code'),\n\t\tequipment: _emberData.default.belongsTo('equipment'),\n\n\t\tbreakLog: _emberData.default.belongsTo('client-time-entry-break-log'),\n\t\taddBreaks: _emberData.default.hasMany('client-time-entry-break-log'),\n\t\teditBreaks: _emberData.default.hasMany('client-time-entry-break-log'),\n\t\tprevEditBreaks: _emberData.default.hasMany('client-time-entry-break-log'),\n\t\ttimeEntryBreaks: _emberData.default.hasMany('client-time-entry-break-log'),\n\n\t\tstartLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'startLocationId', foreignKey: 'id' }),\n\t\tendLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'endLocationId', foreignKey: 'id' }),\n\n\t\tstartTimeString: Ember.computed('startTime', function () {\n\t\t\treturn _timeEntry.default.startTimeString(this, 'h:mm A');\n\t\t}),\n\n\t\tendTimeString: Ember.computed('endTime', function () {\n\t\t\treturn _timeEntry.default.endTimeString(this, 'h:mm A');\n\t\t}),\n\n\t\tcreatedOnString: Ember.computed('createdOn', function () {\n\t\t\t// created on is in utc time so convert to local time.\n\t\t\tvar time = this.get('createdOn') + _utils.Time.timezone(this.get('createdOn'));\n\t\t\treturn _utils.Time.timeFormat(time, 'h:mm A MM/DD/YY');\n\t\t}),\n\n\t\tactionTypeString: Ember.computed('actionType', 'breakLog.actionTypeString', function () {\n\t\t\tvar modelType = this.get('actionType');\n\t\t\tvar actionString = '';\n\t\t\tif (modelType === 10) {\n\t\t\t\tactionString = (0, _utils.loc)('Clock in');\n\t\t\t} else if (modelType === 20) {\n\t\t\t\tactionString = (0, _utils.loc)('Clock out');\n\t\t\t} else if (modelType === 30) {\n\t\t\t\tactionString = (0, _utils.loc)('Clock in at');\n\t\t\t} else if (modelType === 40) {\n\t\t\t\tactionString = (0, _utils.loc)('Clock out at');\n\t\t\t} else if (modelType === 50) {\n\t\t\t\tactionString = (0, _utils.loc)('Manual entry');\n\t\t\t} else if (modelType === 60) {\n\t\t\t\tactionString = (0, _utils.loc)('Edit');\n\t\t\t} else if (modelType === 70) {\n\t\t\t\tif (!Ember.isNone(this.get('breakLog.actionTypeString'))) {\n\t\t\t\t\tactionString = this.get('breakLog.actionTypeString');\n\t\t\t\t} else {\n\t\t\t\t\tactionString = (0, _utils.loc)('Edit No Changes Made');\n\t\t\t\t}\n\t\t\t} else if (modelType === 80) {\n\t\t\t\tactionString = (0, _utils.loc)('Conflict resolution');\n\t\t\t} else if (modelType === 90) {\n\t\t\t\tactionString = (0, _utils.loc)('Deleted');\n\t\t\t} else if (modelType === 100) {\n\t\t\t\tactionString = (0, _utils.loc)('Deleted by conflict resolution');\n\t\t\t}\n\t\t\treturn actionString;\n\t\t}),\n\n\t\tvalidLocationTime: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n\t\t\tvar validLocTime = kLocationValidTime;\n\t\t\tif (this.get('auth.organization.timeRounding')) {\n\t\t\t\tvalidLocTime = kLocationValidTime + this.get('auth.organization.timeRoundingInterval');\n\t\t\t}\n\t\t\treturn validLocTime;\n\t\t}),\n\n\t\tisStartLocationValid: Ember.computed('startLocation.createdOn', 'startLocationId', 'startTime', 'offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('startLocation.createdOn'))) {\n\t\t\t\tvar locCreatedOn = this.get('startLocation.createdOn') + this.get('offset');\n\t\t\t\tif (locCreatedOn >= this.get('startTime') - validLocTime && locCreatedOn <= this.get('startTime') + validLocTime) {\n\t\t\t\t\tisValid = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\tisEndLocationValid: Ember.computed('endLocation.createdOn', 'endLocationId', 'endTime', 'offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('endLocation.createdOn')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar locCreatedOn = this.get('endLocation.createdOn') + this.get('offset');\n\t\t\t\tif (locCreatedOn >= this.get('endTime') - validLocTime && locCreatedOn <= this.get('endTime') + validLocTime) {\n\t\t\t\t\tisValid = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\t/**\n   * checks to see if the time-entry-log is a clock in/ clocked in at\n   *\n   */\n\t\tisClockIn: Ember.computed('actionType', 'startTime', function () {\n\t\t\treturn this.get('actionType') === 10 || this.get('actionType') === 30 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if the time-entry-log is a clock out/ clocked out at\n   *\n   */\n\t\tisClockOut: Ember.computed('actionType', 'endTime', function () {\n\t\t\treturn this.get('actionType') === 20 || this.get('actionType') === 40 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if the time-entry-log is manually done\n   *\n   */\n\t\tisManualEntry: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 50 ? true : false;\n\t\t}),\n\n\t\t/**\n   * checks to see if the time-entry-log has been edited\n   *\n   */\n\t\tisEditEntry: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 60 || this.get('actionType') === 70 && Ember.isNone(this.get('breakLog.id')) ? true : false;\n\t\t}),\n\n\t\tisConflictResolution: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') === 80;\n\t\t}),\n\n\t\tisBreakStart: Ember.computed('breakLog.isBreakStart', function () {\n\t\t\treturn this.get('breakLog.isBreakStart') ? true : false;\n\t\t}),\n\n\t\tisBreakEnd: Ember.computed('breakLog.isBreakEnd', function () {\n\t\t\treturn this.get('breakLog.isBreakEnd') ? true : false;\n\t\t}),\n\n\t\tstartEndCheck: Ember.computed('actionType', function () {\n\t\t\treturn this.get('actionType') !== 60 && this.get('actionType') !== 70 ? true : false;\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the clock in/ clock in at\n   *\n   */\n\t\tstartString: Ember.computed('startTime', function () {\n\t\t\treturn _timeEntry.default.startTimeString(this, 'h:mm A M/D/YY');\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the clock out/ clock out at\n   *\n   */\n\t\tendString: Ember.computed('endTime', function () {\n\t\t\treturn _timeEntry.default.endTimeString(this, 'h:mm A M/D/YY');\n\t\t})\n\t});\n});","define('busy-app/models/cost-code-annual-cost', ['exports', 'ember-data', 'busy-app/models/cost-code-day-cost'], function (exports, _emberData, _costCodeDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _costCodeDayCost.default.extend({\n    // used to differentiate uid for annual and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/cost-code-annual-seconds', ['exports', 'ember-data', 'busy-app/models/cost-code-day-seconds'], function (exports, _emberData, _costCodeDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _costCodeDaySeconds.default.extend({\n    // used to differentiate uid for annual and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/cost-code-day-cost', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'costCodeId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tcostCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\n\t\tcostCode: _emberData.default.belongsTo('cost-code'),\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularCost: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalCost: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/cost-code-day-seconds', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'costCodeId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tcostCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tcostCode: _emberData.default.belongsTo('cost-code'),\n\n\t\tcost: null,\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularSeconds: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeSeconds: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalSeconds: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/cost-code-group', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    groupName: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    costCodes: _emberData.default.hasMany('cost-code')\n  });\n});","define('busy-app/models/cost-code-month-cost', ['exports', 'ember-data', 'busy-app/models/cost-code-day-cost'], function (exports, _emberData, _costCodeDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _costCodeDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/cost-code-month-seconds', ['exports', 'ember-data', 'busy-app/models/cost-code-day-seconds'], function (exports, _emberData, _costCodeDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _costCodeDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/cost-code', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\ttitle: _emberData.default.attr('string'),\n\t\tcostCode: _emberData.default.attr('string'),\n\t\tunitTitle: _emberData.default.attr('string'),\n\t\tcostCodeGroupId: _emberData.default.attr('string'),\n\t\tinsuranceGroupId: _emberData.default.attr('string'),\n\t\tgeneralLiabilityId: _emberData.default.attr('string'),\n\t\tworkersCompId: _emberData.default.attr('string'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tarchivedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tworkersComp: _emberData.default.belongsTo('workers-comp'),\n\t\tgeneralLiability: _emberData.default.belongsTo('general-liability'),\n\t\tcostCodeGroup: _emberData.default.belongsTo('cost-code-group'),\n\t\tprojectCostCodeLinks: _emberData.default.hasMany('project-cost-code-link'),\n\n\t\tcostCodeLabel: Ember.computed('costCode', 'titleFormatted', function () {\n\t\t\treturn this.get('costCode') + '&nbsp;&nbsp;' + this.get('titleFormatted');\n\t\t}),\n\n\t\ttitleFormatted: Ember.computed('title', function () {\n\t\t\treturn '<i>' + (this.get('title') || '') + '</i>';\n\t\t}),\n\n\t\tgetChildren: function getChildren() {\n\t\t\tif (!Ember.isNone(this.get('workersCompId'))) {\n\t\t\t\tthis._getWorkersComp();\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('generalLiabilityId'))) {\n\t\t\t\tthis._getGeneralLiability();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t_getWorkersComp: function _getWorkersComp() {\n\t\t\tvar _this = this;\n\n\t\t\t(true && !(!Ember.isNone(this.get('workersCompId'))) && Ember.assert('workersCompId must be set to a valid workers-comp model id before calling getWorkersComp', !Ember.isNone(this.get('workersCompId'))));\n\n\n\t\t\treturn this.store.findRecord('workers-comp', this.get('workersCompId')).then(function (model) {\n\t\t\t\t_this.set('workersComp', model);\n\t\t\t\treturn model;\n\t\t\t});\n\t\t},\n\t\t_getGeneralLiability: function _getGeneralLiability() {\n\t\t\tvar _this2 = this;\n\n\t\t\t(true && !(!Ember.isNone(this.get('generalLiabilityId'))) && Ember.assert('generalLiabilityId must be set to a valid general-liability model id before calling getGeneralLiability', !Ember.isNone(this.get('generalLiabilityId'))));\n\n\n\t\t\treturn this.store.findRecord('general-liability', this.get('generalLiabilityId')).then(function (model) {\n\t\t\t\t_this2.set('generalLiability', model);\n\t\t\t\treturn model;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/models/employee-payroll-item-connector', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tpayrollItemWageId: _emberData.default.attr('string'),\n\t\tmemberConnectorId: _emberData.default.attr('string'),\n\t\twageRate: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tquickbooksPayrollItemWage: null,\n\t\temployeeWageTypes: null,\n\n\t\twageType: Ember.computed('quickbooksPayrollItemWage.wageType', function () {\n\t\t\treturn this.get('quickbooksPayrollItemWage.wageType');\n\t\t}),\n\n\t\twageTypeFormatted: Ember.computed('quickbooksPayrollItemWage.wageTypeFormatted', function () {\n\t\t\treturn this.get('quickbooksPayrollItemWage.wageTypeFormatted');\n\t\t}),\n\n\t\twageName: Ember.computed('quickbooksPayrollItemWage.wageItemName', function () {\n\t\t\treturn this.get('quickbooksPayrollItemWage.wageItemName');\n\t\t}),\n\n\t\tregularWageType: Ember.computed('employeeWageTypes.@each.payrollType', function () {\n\t\t\treturn this.get('employeeWageTypes').filterBy('payrollType', 10);\n\t\t}),\n\n\t\tisRegular: Ember.computed('regularWageType', function () {\n\t\t\treturn this.get('regularWageType.length') > 0;\n\t\t}),\n\n\t\tovertimeWageType: Ember.computed('employeeWageTypes.@each.payrollType', function () {\n\t\t\treturn this.get('employeeWageTypes').filterBy('payrollType', 20);\n\t\t}),\n\n\t\tisOverttime: Ember.computed('overtimeWageType', function () {\n\t\t\treturn this.get('overtimeWageType.length') > 0;\n\t\t}),\n\n\t\tdoubletimeWageType: Ember.computed('employeeWageTypes.@each.payrollType', function () {\n\t\t\treturn this.get('employeeWageTypes').filterBy('payrollType', 30);\n\t\t}),\n\n\t\tisDoubletime: Ember.computed('doubletimeWageType', function () {\n\t\t\treturn this.get('doubletimeWageType.length') > 0;\n\t\t}),\n\n\t\tsalaryWageType: Ember.computed('employeeWageTypes.@each.payrollType', function () {\n\t\t\treturn this.get('employeeWageTypes').filterBy('payrollType', 40);\n\t\t}),\n\n\t\tisSalary: Ember.computed('salaryWageType', function () {\n\t\t\treturn this.get('salaryWageType.length') > 0;\n\t\t})\n\t});\n});","define('busy-app/models/employee-wage-type', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    employeePayrollItemConnectorId: _emberData.default.attr('string'),\n    payrollType: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/equipment-annual-cost', ['exports', 'ember-data', 'busy-app/models/equipment-day-cost'], function (exports, _emberData, _equipmentDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _equipmentDayCost.default.extend({\n    // used to differentiate uid for annual and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/equipment-annual-seconds', ['exports', 'ember-data', 'busy-app/models/equipment-day-seconds'], function (exports, _emberData, _equipmentDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _equipmentDaySeconds.default.extend({\n    // used to differentiate uid for annual and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/equipment-category', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\ttitle: _emberData.default.attr('string'),\n\t\tequipmentTypeId: _emberData.default.attr('string'),\n\t\timage: _emberData.default.attr('file'),\n\t\timageUrl: _emberData.default.attr('string'),\n\t\timageThumbUrl: _emberData.default.attr('string'),\n\t\treview: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number')\n\t});\n});","define('busy-app/models/equipment-day-cost', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'equipmentId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tequipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\n\t\tequipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } }),\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularCost: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalCost: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/equipment-day-seconds', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'equipmentId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tequipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tequipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } }),\n\n\t\tcost: null,\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularSeconds: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeSeconds: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalSeconds: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/equipment-location', ['exports', 'ember-data', 'moment', '@busy-web/utils'], function (exports, _emberData, _moment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tequipmentId: _emberData.default.attr('string'),\n\t\tlongitude: _emberData.default.attr('number'),\n\t\tlatitude: _emberData.default.attr('number'),\n\t\taltitude: _emberData.default.attr('number'),\n\t\tsource: _emberData.default.attr('string'),\n\t\tutc: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tlastSync: Ember.computed('utc', function () {\n\t\t\treturn _moment.default.utc(this.get('utc') * 1000).fromNow();\n\t\t}),\n\n\t\tsourceLocalized: Ember.computed('source', function () {\n\t\t\tif (this.get('source') === 'VisionLink') {\n\t\t\t\treturn this.get('source');\n\t\t\t} else if (this.get('source') === 'Verified by beacon') {\n\t\t\t\treturn (0, _utils.loc)(\"Verified by beacon\");\n\t\t\t} else if (this.get('source') === 'Operator') {\n\t\t\t\treturn (0, _utils.loc)(\"Operator location\");\n\t\t\t}\n\t\t}),\n\n\t\tverifiedByBacon: Ember.computed('source', function () {\n\t\t\tif (this.get('source') === 'Verified by beacon') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tnoLocation: Ember.computed('longitude', 'latitude', function () {\n\t\t\tif (Math.round(this.get('longitude')) === 0 && Math.round(this.get('latitude')) === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t})\n\t});\n});","define('busy-app/models/equipment-make', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\ttitle: _emberData.default.attr('string'),\n\t\timage: _emberData.default.attr('file'),\n\t\timageUrl: _emberData.default.attr('string'),\n\t\timageThumbUrl: _emberData.default.attr('string'),\n\t\tunknown: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number')\n\t});\n});","define('busy-app/models/equipment-model', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\ttitle: _emberData.default.attr('string'),\n\t\tmodelNumber: _emberData.default.attr('string'),\n\t\tyear: _emberData.default.attr('number'),\n\t\tequipmentMakeId: _emberData.default.attr('string'),\n\t\tequipmentCategoryId: _emberData.default.attr('string'),\n\t\tunknown: _emberData.default.attr('boolean'),\n\t\timage: _emberData.default.attr('file'),\n\t\timageUrl: _emberData.default.attr('string'),\n\t\timageThumbUrl: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tequipmentMake: Ember.computed('equipmentMakeId', function () {\n\t\t\tif (!Ember.isNone(this.get('equipmentMakeId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('equipment-make', this.get('equipmentMakeId'))\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tequipmentCategory: Ember.computed('equipmentCategoryId', function () {\n\t\t\tif (!Ember.isNone(this.get('equipmentCategoryId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('equipment-category', this.get('equipmentCategoryId'))\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/equipment-month-cost', ['exports', 'ember-data', 'busy-app/models/equipment-day-cost'], function (exports, _emberData, _equipmentDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _equipmentDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/equipment-month-seconds', ['exports', 'ember-data', 'busy-app/models/equipment-day-seconds'], function (exports, _emberData, _equipmentDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _equipmentDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/equipment', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tequipmentGroupId: _emberData.default.attr('string'),\n\t\timage: _emberData.default.attr('file'),\n\t\timageUrl: _emberData.default.attr('string'),\n\t\timageThumbUrl: _emberData.default.attr('string'),\n\t\tequipmentName: _emberData.default.attr('string'),\n\t\tequipmentModelId: _emberData.default.attr('string'),\n\t\tserialNumber: _emberData.default.attr('string'),\n\t\ttrackImoId: _emberData.default.attr('number'),\n\t\timportType: _emberData.default.attr('string'),\n\t\tfuelCapacity: _emberData.default.attr('string'),\n\t\tlastLocationId: _emberData.default.attr('string'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tarchivedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tequipmentModel: Ember.computed('equipmentModelId', function () {\n\t\t\tif (!Ember.isNone(this.get('equipmentModelId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.queryRecord('equipment-model', {\n\t\t\t\t\t\tid: this.get('equipmentModelId'),\n\t\t\t\t\t\tdeleted_on: '_-DISABLE-_'\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tequipmentJoins: Ember.computed('equipmentModelId', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('equipmentModelId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.queryRecord('equipment-model', {\n\t\t\t\t\t\tid: Ember.get(this, 'equipmentModelId'),\n\t\t\t\t\t\tdeleted_on: '_-DISABLE-_'\n\t\t\t\t\t}).then(function (model) {\n\t\t\t\t\t\tvar category = Ember.RSVP.resolve(null);\n\t\t\t\t\t\tif (!Ember.isNone(model) && !Ember.isNone(Ember.get(model, 'equipmentCategoryId'))) {\n\t\t\t\t\t\t\tcategory = _this.store.queryRecord('equipment-category', {\n\t\t\t\t\t\t\t\tid: Ember.get(model, 'equipmentCategoryId'),\n\t\t\t\t\t\t\t\tdeleted_on: '_-DISABLE-_'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar make = Ember.RSVP.resolve(null);\n\t\t\t\t\t\tif (!Ember.isNone(model) && !Ember.isNone(Ember.get(model, 'equipmentMakeId'))) {\n\t\t\t\t\t\t\tmake = _this.store.queryRecord('equipment-make', {\n\t\t\t\t\t\t\t\tid: Ember.get(model, 'equipmentMakeId'),\n\t\t\t\t\t\t\t\tdeleted_on: '_-DISABLE-_'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Ember.RSVP.hash({ model: model, category: category, make: make });\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tisVisionLink: Ember.computed('importType', function () {\n\t\t\treturn this.get('importType') === 'VisionLink';\n\t\t}),\n\n\t\tfullName: Ember.computed('equipmentName', 'equipmentModel.{title,equipmentMake.title}', function () {\n\t\t\tvar name = this.get('equipmentName') || '';\n\t\t\tvar make = this.get('equipmentModel.equipmentMake.title') || '';\n\t\t\tvar model = this.get('equipmentModel.title') || '';\n\n\t\t\tif (model.toLowerCase() === 'unknown') {\n\t\t\t\tmodel = '';\n\t\t\t}\n\n\t\t\tif (make.toLowerCase() === 'unknown') {\n\t\t\t\tmake = '';\n\t\t\t}\n\n\t\t\tif (name.toLowerCase() === 'unknown') {\n\t\t\t\tname = '';\n\t\t\t}\n\n\t\t\tvar title = (name + ' ' + make + ' ' + model).trim();\n\t\t\treturn title.length ? title : (0, _utils.loc)('Unknown');\n\t\t}),\n\n\t\tmakeModel: Ember.computed('equipmentModel.{title,equipmentMake.title}', function () {\n\t\t\tvar make = this.get('equipmentModel.equipmentMake.title') || '';\n\t\t\tvar model = this.get('equipmentModel.title') || '';\n\n\t\t\t// prevents the title from saying `unknown unknown`\n\t\t\tif (model.toLowerCase() === 'unknown' && make.toLowerCase() === 'unknown') {\n\t\t\t\treturn (0, _utils.loc)('Unknown');\n\t\t\t} else {\n\t\t\t\treturn (make + ' ' + model).trim();\n\t\t\t}\n\t\t}),\n\n\t\tequipmentCategory: Ember.computed('equipmentModel.equipmentCategory', function () {\n\t\t\treturn this.get('equipmentModel.equipmentCategory.title');\n\t\t}),\n\n\t\tequipmentImage: Ember.computed('imageUrl', 'equipmentModel.{imageUrl,equipmentMake.imageUrl,equipmentCategory.imageUrl}', function () {\n\t\t\tif (Ember.isNone(this.get('imageUrl')) && Ember.isNone(this.get('equipmentModel.imageUrl')) && Ember.isNone(this.get('equipmentModel.equipmentMake.imageUrl')) && Ember.isNone(this.get('equipmentModel.equipmentCategory.imageUrl'))) {\n\t\t\t\treturn '/images/80x80.png';\n\t\t\t} else if (Ember.isNone(this.get('imageUrl')) && Ember.isNone(this.get('equipmentModel.imageUrl')) && Ember.isNone(this.get('equipmentModel.equipmentCategory.imageUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.equipmentMake.imageUrl');\n\t\t\t} else if (Ember.isNone(this.get('imageUrl')) && Ember.isNone(this.get('equipmentModel.imageUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.equipmentCategory.imageUrl');\n\t\t\t} else if (Ember.isNone(this.get('imageUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.imageUrl');\n\t\t\t} else {\n\t\t\t\treturn this.get('imageUrl');\n\t\t\t}\n\t\t}),\n\n\t\tequipmentThumb: Ember.computed('imageThumbUrl', 'equipmentModel.{imageThumbUrl,equipmentMake.imageThumbUrl,equipmentCategory.imageThumbUrl}', function () {\n\t\t\tif (Ember.isNone(this.get('imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.equipmentMake.imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.equipmentCategory.imageThumbUrl'))) {\n\t\t\t\treturn '/images/80x80.png';\n\t\t\t} else if (Ember.isNone(this.get('imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.equipmentCategory.imageThumbUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.equipmentMake.imageThumbUrl');\n\t\t\t} else if (Ember.isNone(this.get('imageThumbUrl')) && Ember.isNone(this.get('equipmentModel.imageThumbUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.equipmentCategory.imageThumbUrl');\n\t\t\t} else if (Ember.isNone(this.get('imageThumbUrl'))) {\n\t\t\t\treturn this.get('equipmentModel.imageThumbUrl');\n\t\t\t} else {\n\t\t\t\treturn this.get('imageThumbUrl');\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/general-liability', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    title: _emberData.default.attr('string'),\n    organizationId: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n\n    type: 'General Liability',\n    typeKey: 'general-liability'\n  });\n});","define('busy-app/models/insurance-group', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({});\n});","define('busy-app/models/integration-attempt', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n\n    startTime: _emberData.default.attr('number'),\n    endTime: _emberData.default.attr('number'),\n    progress: _emberData.default.attr('number'),\n    success: _emberData.default.attr('boolean'),\n    errorType: _emberData.default.attr('string'),\n    errorMessage: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    organizationIntegrationId: _emberData.default.attr('string'),\n\n    organizationIntegration: _emberData.default.belongsTo('organization-integration', { inverse: null, referenceKey: 'id', foreignKey: 'organizationIntegrationId' }),\n    integrationLogs: _emberData.default.hasMany('integration-log'),\n\n    /**\n     * Cache object for holding shared promises\n     *\n     * @property resources\n     * @type EmberObject\n     * @private\n     */\n    resources: Ember.Object.create(),\n\n    getIntegrationLogs: function getIntegrationLogs() {\n      // return this.getMockIntegrationLogs(this.get('id'));\n      return this.get('store').findAll('integration-log', this.get('id'));\n    },\n\n\n    /**\n     * Linked Resource Lookups\n    *\n    * @public\n    * @method getLogResource\n    * @param resourceType {string}\n    * @param resourceId {string}\n    * @return {EmberPromise}\n     */\n    getLogResource: function getLogResource(resourceType, resourceId) {\n      var _this = this;\n\n      (true && !(!Ember.isNone(resourceType)) && Ember.assert('integration-attempt :: getLogResource :: \\'resourceType\\' is a required parameter', !Ember.isNone(resourceType)));\n      (true && !(!Ember.isNone(resourceId)) && Ember.assert('integration-attempt :: getLogResource :: \\'resourceId\\' is a required parameter', !Ember.isNone(resourceId)));\n\n      // pools promises so that each resource only gets looked up once\n\n      var cacheKey = 'resources.' + resourceType + '-' + resourceId;\n\n      var resource = this.get(cacheKey);\n\n      if (Ember.isNone(resource)) {\n        resource = new Ember.RSVP.Promise(function (resolve) {\n          var resourceGetters = {\n            'employee': function employee() {\n              return _this.getLogResourceEmployee(resourceId);\n            },\n            'project': function project() {\n              return _this.getLogResourceProject(resourceId);\n            },\n            'costcode': function costcode() {\n              return _this.getLogResourceCostCode(resourceId);\n            }\n          };\n\n          if (resourceGetters.hasOwnProperty(resourceType)) {\n            return resolve(resourceGetters[resourceType]());\n          } else {\n            throw resourceType + ' is not a supported resourceType';\n          }\n        });\n\n        this.set(cacheKey, resource);\n      }\n\n      return resource;\n    },\n    getLogResourceByModel: function getLogResourceByModel(resourceId, modelType, modelKey) {\n      (true && !(!Ember.isNone(resourceId)) && Ember.assert('integration-attempt :: getLogResourceByModel :: \\'resourceId\\' is a required parameter', !Ember.isNone(resourceId)));\n      (true && !(!Ember.isNone(modelType)) && Ember.assert('integration-attempt :: getLogResourceByModel :: \\'modelType\\' is a required parameter', !Ember.isNone(modelType)));\n      (true && !(!Ember.isNone(modelKey)) && Ember.assert('integration-attempt :: getLogResourceByModel :: \\'modelKey\\' is a required parameter', !Ember.isNone(modelKey)));\n\n\n      return this.get('store').findRecord(modelType, resourceId).then(function (model) {\n        if (!Ember.isNone(model)) {\n          return Ember.Object.create({ name: model.get(modelKey) });\n        } else {\n          return Ember.Object.create();\n        }\n      });\n    },\n    getLogResourceEmployee: function getLogResourceEmployee(resourceId) {\n      (true && !(!Ember.isNone(resourceId)) && Ember.assert('integration-attempt :: getLogResourceEmployee :: \\'resourceId\\' is a required parameter', !Ember.isNone(resourceId)));\n\n\n      return this.getLogResourceByModel(resourceId, 'member', 'fullName');\n    },\n    getLogResourceProject: function getLogResourceProject(resourceId) {\n      (true && !(!Ember.isNone(resourceId)) && Ember.assert('integration-attempt :: getLogResourceProject :: \\'resourceId\\' is a required parameter', !Ember.isNone(resourceId)));\n\n\n      return this.getLogResourceByModel(resourceId, 'project', 'title');\n    },\n    getLogResourceCostCode: function getLogResourceCostCode(resourceId) {\n      (true && !(!Ember.isNone(resourceId)) && Ember.assert('integration-attempt :: getLogResourceCostCode :: \\'resourceId\\' is a required parameter', !Ember.isNone(resourceId)));\n\n\n      return this.getLogResourceByModel(resourceId, 'cost-code', 'costCodeLabel');\n    }\n  });\n});","define('busy-app/models/integration-log', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    timeStamp: _emberData.default.attr('number'),\n    resourceType: _emberData.default.attr('string'),\n    resourceId: _emberData.default.attr('string'),\n    action: _emberData.default.attr('string'),\n\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    integrationAttemptId: _emberData.default.attr('string'),\n    integrationAttempt: _emberData.default.belongsTo('integration-attempt')\n  });\n});","define('busy-app/models/media-collection', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\ttitle: _emberData.default.attr('string'),\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcreatedBy: _emberData.default.attr('string'),\n\t\tdescription: _emberData.default.attr('string'),\n\t\tassignedTo: _emberData.default.attr('string'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\n\t\tmember: _emberData.default.belongsTo('member', { referenceKey: 'createdBy', foreignKey: 'id' }),\n\t\tproject: _emberData.default.belongsTo('project'),\n\t\tmediaEntries: null,\n\n\t\tsubmittedTime: Ember.computed('submittedOn', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('submittedOn'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('submittedOn') + _utils.Time.timezone(this.get('submittedOn')), 'MMM. DD, h:mm A');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tprojectTitle: Ember.computed('project.title', function () {\n\t\t\tvar title = '';\n\t\t\tif (!Ember.isNone(this.get('project'))) {\n\t\t\t\ttitle = this.get('project.title');\n\t\t\t}\n\t\t\treturn title;\n\t\t}),\n\n\t\tmoreEntries: Ember.computed('mediaEntries.{@each.id,[]}', function () {\n\t\t\tvar count = this.get('mediaEntries.length') || 0;\n\t\t\tif (count > 4) {\n\t\t\t\tcount = count - 4;\n\t\t\t} else {\n\t\t\t\tcount = 0;\n\t\t\t}\n\t\t\treturn count;\n\t\t}),\n\n\t\tdeleteRecord: function deleteRecord() {\n\t\t\tthis.set('deletedOn', _utils.Time.utcTimestamp());\n\t\t\treturn this;\n\t\t}\n\t});\n});","define('busy-app/models/media-entry', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmediaCollectionId: _emberData.default.attr('string'),\n\t\tfile: _emberData.default.attr('file'),\n\t\tfileUrl: _emberData.default.attr('string'),\n\t\tfileThumbUrl: _emberData.default.attr('string'),\n\t\tcreatedBy: _emberData.default.attr('string'),\n\t\tcaptureDate: _emberData.default.attr('number'),\n\t\tcomment: _emberData.default.attr('string'),\n\t\tentryType: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\n\t\tmediaCollection: _emberData.default.belongsTo('media-collection'),\n\t\tmember: _emberData.default.belongsTo('member', { referenceKey: 'createdBy', foreignKey: 'id' }),\n\n\t\tsinceCreated: Ember.computed('createdOn', function () {\n\t\t\tvar time = '';\n\t\t\tif (!Ember.isNone(this.get('createdOn'))) {\n\t\t\t\ttime = _utils.Time.date(this.get('createdOn')).fromNow();\n\t\t\t}\n\t\t\treturn time;\n\t\t}),\n\n\t\tcaptureDateString: Ember.computed('captureDate', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('captureDate'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('captureDate'), 'M/D/YYYY [@] h:mm A');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\timageSet: Ember.observer('file', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.get('file'))) {\n\t\t\t\tvar reader = new window.FileReader();\n\t\t\t\treader.onload = function (data) {\n\t\t\t\t\t_this.set('fileThumbUrl', data.target.result);\n\t\t\t\t\t_this.set('fileUrl', data.target.result);\n\t\t\t\t};\n\t\t\t\treader.readAsDataURL(this.get('file.file'));\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/member-annual-cost', ['exports', 'ember-data', 'busy-app/models/member-day-cost'], function (exports, _emberData, _memberDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/member-annual-seconds', ['exports', 'ember-data', 'busy-app/models/member-day-seconds'], function (exports, _emberData, _memberDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/member-connector', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tmemberConnectorId: _emberData.default.attr('string'),\n\t\tsyncTimeEntries: _emberData.default.attr('boolean'),\n\t\tlastTimeEntrySyncDate: _emberData.default.attr('number'),\n\t\tmappingConfirmation: _emberData.default.attr('boolean'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tmember: null,\n\t\temployeePayrollItemConnectors: null,\n\n\t\tregularItems: Ember.computed('employeePayrollItemConnectors.@each.wageType', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').filterBy('wageType', 'HourlyRegular');\n\t\t}),\n\n\t\tovertimeItems: Ember.computed('employeePayrollItemConnectors.@each.wageType', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').filterBy('wageType', 'HourlyOvertime');\n\t\t}),\n\n\t\tsalaryItems: Ember.computed('employeePayrollItemConnectors.@each.wageType', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').filterBy('wageType', 'SalaryRegular');\n\t\t}),\n\n\t\thasHourlyItems: Ember.computed('regularItems', 'overtimeItems', function () {\n\t\t\tif (this.get('regularItems.length') > 0 || this.get('overtimeItems.length') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasSalaryItems: Ember.computed('salaryItems', function () {\n\t\t\treturn this.get('salaryItems.length') > 0;\n\t\t}),\n\n\t\thasPayrollItems: Ember.computed('hasHourlyItems', 'hasSalaryItems', function () {\n\t\t\treturn this.get('hasHourlyItems') || this.get('hasSalaryItems');\n\t\t}),\n\n\t\tregularWageType: Ember.computed('employeePayrollItemConnectors.@each.isRegular', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').findBy('isRegular', true);\n\t\t}),\n\n\t\tregularWageTypeName: Ember.computed('regularWageType.wageName', function () {\n\t\t\treturn this.get('regularWageType.wageName');\n\t\t}),\n\n\t\tovertimeWageType: Ember.computed('employeePayrollItemConnectors.@each.isOverttime', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').findBy('isOverttime', true);\n\t\t}),\n\n\t\tovertimeWageTypeName: Ember.computed('overtimeWageType.wageName', function () {\n\t\t\treturn this.get('overtimeWageType.wageName');\n\t\t}),\n\n\t\tdoubletimeWageType: Ember.computed('employeePayrollItemConnectors.@each.doubletime', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').findBy('isDoubletime', true);\n\t\t}),\n\n\t\tdoubletimeWageTypeName: Ember.computed('doubletimeWageType.wageName', function () {\n\t\t\treturn this.get('doubletimeWageType.wageName');\n\t\t}),\n\n\t\tsalaryWageType: Ember.computed('employeePayrollItemConnectors.@each.isSalary', function () {\n\t\t\treturn this.get('employeePayrollItemConnectors').findBy('isSalary', true);\n\t\t}),\n\n\t\tsalaryWageTypeName: Ember.computed('salaryWageType.wageName', function () {\n\t\t\treturn this.get('salaryWageType.wageName');\n\t\t})\n\t});\n});","define('busy-app/models/member-cost-code-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-cost'], function (exports, _emberData, _uniqueId, _memberCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'costCodeId'),\n\n    // override attrs\n    costCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\n    // override model injections\n    costCode: _emberData.default.belongsTo('cost-code', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-cost-code-equipment-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-cost-code-cost'], function (exports, _emberData, _uniqueId, _memberCostCodeCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberCostCodeCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'costCodeId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-cost-code-equipment-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-cost-code-seconds'], function (exports, _emberData, _uniqueId, _memberCostCodeSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberCostCodeSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'costCodeId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-cost-code-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-seconds'], function (exports, _emberData, _uniqueId, _memberSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'costCodeId'),\n\n    // override attrs\n    costCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\n    // override model injections\n    costCode: _emberData.default.belongsTo('cost-code', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id'], function (exports, _emberData, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId'),\n\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true }),\n\t\tendDate: _emberData.default.attr('date', { sortable: true }),\n\t\tregularCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tmember: _emberData.default.belongsTo('member', { query: { deleted_on: '_-DISABLE-_' } }),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/member-day-cost', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'memberId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'], reverseSort: true }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularCost: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalCost: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/member-day-seconds', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'memberId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\n\t\tcost: null,\n\n\t\tendDate: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('day').unix();\n\t\t}),\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularSeconds: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeSeconds: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalSeconds: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/member-equipment-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-cost'], function (exports, _emberData, _uniqueId, _memberCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-equipment-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-seconds'], function (exports, _emberData, _uniqueId, _memberSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-group', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    groupName: _emberData.default.attr('string'),\n    updatedOn: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    members: _emberData.default.hasMany('member')\n  });\n});","define('busy-app/models/member-location', ['exports', '@busy-web/utils', 'ember-data'], function (exports, _utils, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tlongitude: _emberData.default.attr('number'),\n\t\tlatitude: _emberData.default.attr('number'),\n\t\thorizontalAccuracy: _emberData.default.attr('number'),\n\t\taltitude: _emberData.default.attr('number'),\n\t\tverticalAccuracy: _emberData.default.attr('number'),\n\t\ttimeGmt: _emberData.default.attr('number'),\n\t\ttimeLocal: _emberData.default.attr('number'),\n\t\ttimeZoneOffset: _emberData.default.attr('number'),\n\t\ttimeDst: _emberData.default.attr('boolean'),\n\t\tarchivedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\n\t\thasLocation: Ember.computed('longitude', 'latitude', function () {\n\t\t\tif (!Ember.isNone(this.get('longitude')) && !Ember.isNone(this.get('latitude'))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\ttimeLocalString: Ember.computed('timeLocal', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('timeLocal'), 'h:mm A');\n\t\t})\n\t});\n});","define('busy-app/models/member-lock', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\n\t\t/**\n   * UUID of this Member.\n   *   Required to create, not used in updates.\n   *\n   * @property memberId\n   * @type {DS.String}\n   */\n\t\tmemberId: _emberData.default.attr('string'),\n\n\t\t/**\n   * UUID of the Member who lasted changed the lock date\n   *\n   * @property updaterMemberId\n   * @type {DS.String}\n   */\n\t\tupdaterMemberId: _emberData.default.attr('string'),\n\n\t\t/**\n   * Epoch date indicating the end of the locked period\n   *\t\tDate is inclusive and should end with 23:59:59\n   *\t\t`_-NULL-_` to indicate a lock is not used for the member\n   *\n   * @property effectiveDate\n   * @type {DS.Number}\n   */\n\t\teffectiveDate: _emberData.default.attr('number'),\n\n\t\t/**\n   * Epoch date created on the server\n   *\n   * @property updatedOn\n   * @type {DS.Number}\n   */\n\t\tupdatedOn: _emberData.default.attr('number'),\n\n\t\t/**\n   * Epoch date created on the server\n   *\n   * @property createdOn\n   * @type {DS.Number}\n   */\n\t\tcreatedOn: _emberData.default.attr('number'),\n\n\t\t/**\n   * Epoch date created on the server\n   *\n   * @property submittedOn\n   * @type {DS.Number}\n   */\n\t\tsubmittedOn: _emberData.default.attr('number')\n\n\t\t// member: DS.belongsTo('member'),\n\t\t// updaterMember: DS.belongsTo('member'),\n\t});\n});","define('busy-app/models/member-month-cost', ['exports', 'ember-data', 'busy-app/models/member-day-cost'], function (exports, _emberData, _memberDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/member-month-seconds', ['exports', 'ember-data', 'busy-app/models/member-day-seconds'], function (exports, _emberData, _memberDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/member-overtime-period', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tchangeDate: _emberData.default.attr('number'),\n\t\tadhereToOrg: _emberData.default.attr('boolean'),\n\t\tweeklyOvertime: _emberData.default.attr('number'),\n\t\tdailyOvertime: _emberData.default.attr('number'),\n\t\tdailyDoubletime: _emberData.default.attr('number'),\n\t\tseventhDayOvertime: _emberData.default.attr('boolean'),\n\t\tseventhDayDoubletime: _emberData.default.attr('number'),\n\t\tsaturdayMultiplier: _emberData.default.attr('number'),\n\t\tsundayMultiplier: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\torgOvertime: _emberData.default.belongsTo('organization-overtime-period', { query: { _desc: ['start_time'] } }),\n\n\t\tstartTime: Ember.computed('changeDate', 'adhereToOrg', 'orgOvertime.startTime', function () {\n\t\t\tif (!Ember.isNone(this.get('orgOvertime.startTime'))) {\n\t\t\t\tvar day = _utils.Time.date(this.get('changeDate')).day();\n\t\t\t\tvar eday = _utils.Time.date(this.get('orgOvertime.startTime')).day();\n\t\t\t\tvar offset = eday - day;\n\t\t\t\tif (offset < 0) {\n\t\t\t\t\toffset = 7 + offset;\n\t\t\t\t}\n\n\t\t\t\treturn _utils.Time.date(this.get('changeDate')).add(offset, 'days').unix();\n\t\t\t}\n\t\t}),\n\n\t\tformattedDate: Ember.computed('changeDate', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('changeDate'))) {\n\t\t\t\t// hides the Jan 7 1970 and shows\n\t\t\t\t// beginning\n\t\t\t\tif (this.get('changeDate') === 345600 || _utils.Time.timeFormat(this.get('changeDate'), 'YYYY') === '1970') {\n\t\t\t\t\tdate = (0, _utils.loc)(\"Beginning\");\n\t\t\t\t} else {\n\t\t\t\t\tdate = _utils.Time.timeFormat(this.get('changeDate'), 'ddd. MMM Do, YYYY');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tformattedUpdatedOn: Ember.computed('udpatedOn', function () {\n\t\t\treturn _utils.Time.timeFormat(this.get('updatedOn'), 'MMM Do, YYYY');\n\t\t}),\n\n\t\tovertimePeriod: Ember.computed('orgOvertime.overtimePeriod', function () {\n\t\t\treturn this.get('orgOvertime.overtimePeriod');\n\t\t}),\n\n\t\teffective: Ember.computed('orgOvertime.startTime', 'changeDate', function () {\n\t\t\tvar date = this.get('changeDate');\n\t\t\tif (!Ember.isNone(this.get('orgOvertime.startTime'))) {\n\t\t\t\tvar day = _utils.Time.date(this.get('changeDate')).day();\n\t\t\t\tvar eday = _utils.Time.date(this.get('orgOvertime.startTime')).day();\n\t\t\t\tvar offset = eday - day;\n\t\t\t\tif (offset < 0) {\n\t\t\t\t\toffset = 7 + offset;\n\t\t\t\t}\n\n\t\t\t\tdate = _utils.Time.date(this.get('changeDate')).add(offset, 'days').unix();\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\teffectiveDate: Ember.computed('effective', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('effective'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('effective'));\n\t\t\t\tif (date.unix() === 345600 || date.format('YYYY') === '1970') {\n\t\t\t\t\tdate = (0, _utils.loc)(\"Beginning\");\n\t\t\t\t} else {\n\t\t\t\t\tdate = date = date.format('ddd. MMM Do, YYYY');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tovertimePreference: Ember.computed('adhereToOrg', 'weeklyOvertime', 'dailyOvertime', 'dailyDoubletime', 'seventhDayOvertime', 'seventhDayDoubletime', 'saturdayMultiplier', 'sundayMultiplier', function () {\n\t\t\tvar weekly = this.get('weeklyOvertime');\n\t\t\tvar daily = this.get('dailyOvertime');\n\t\t\tvar dailyDouble = this.get('dailyDoubletime');\n\t\t\tvar sevenOne = this.get('seventhDayOvertime');\n\t\t\tvar sevenTwo = this.get('seventhDayDoubletime');\n\t\t\tvar saturday = this.get('saturdayMultiplier');\n\t\t\tvar sunday = this.get('sundayMultiplier');\n\n\t\t\tvar pref = \"\";\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tpref = (0, _utils.loc)(\"Follow Company Settings\");\n\t\t\t} else if (weekly === 40 && daily === 8 && dailyDouble === 12 && sevenOne === true && sevenTwo === 8 && saturday === null && sunday === null) {\n\t\t\t\tpref = (0, _utils.loc)(\"California Settings\");\n\t\t\t} else if (weekly === 40 && daily === null && dailyDouble === null && sevenOne === false && sevenTwo === null && saturday === null && sunday === null) {\n\t\t\t\tpref = (0, _utils.loc)(\"Standard Settings\");\n\t\t\t} else {\n\t\t\t\tpref = (0, _utils.loc)(\"Custom Settings\");\n\t\t\t}\n\t\t\treturn pref;\n\t\t}),\n\n\t\tweeklyOvertimeString: Ember.computed('weeklyOvertime', function () {\n\t\t\tvar weeklyOvertime = this.get('weeklyOvertime');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tweeklyOvertime = this.get('orgOvertime.weeklyOvertime');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(weeklyOvertime)) {\n\t\t\t\treturn (0, _utils.loc)('after %@ hours', [weeklyOvertime]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tdailyOvertimeString: Ember.computed('dailyOvertime', function () {\n\t\t\tvar dailyOvertime = this.get('dailyOvertime');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tdailyOvertime = this.get('orgOvertime.dailyOvertime');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(dailyOvertime)) {\n\t\t\t\treturn (0, _utils.loc)('after %@ hours', [dailyOvertime]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tdailyDoubletimeString: Ember.computed('dailyDoubletime', function () {\n\t\t\tvar dailyDoubletime = this.get('dailyDoubletime');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tdailyDoubletime = this.get('orgOvertime.dailyDoubletime');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(dailyDoubletime)) {\n\t\t\t\treturn (0, _utils.loc)('after %@ hours', [dailyDoubletime]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tseventhDayOvertimeString: Ember.computed('seventhDayOvertime', function () {\n\n\t\t\tvar seventhDayOvertime = this.get('seventhDayOvertime');\n\t\t\tif (this.get('adhereToOrg')) {\n\n\t\t\t\tseventhDayOvertime = this.get('orgOvertime.seventhDayOvertime');\n\t\t\t}\n\n\t\t\tif (seventhDayOvertime) {\n\n\t\t\t\treturn seventhDayOvertime.toString();\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tseventhDayDoubletimeString: Ember.computed('seventhDayDoubletime', function () {\n\t\t\tvar seventhDayDoubletime = this.get('seventhDayDoubletime');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tseventhDayDoubletime = this.get('orgOvertime.seventhDayDoubletime');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(seventhDayDoubletime)) {\n\t\t\t\treturn (0, _utils.loc)('after %@ hours', [seventhDayDoubletime]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tsaturdayMultiplierString: Ember.computed('saturdayMultiplier', function () {\n\t\t\tvar saturdayMultiplier = this.get('saturdayMultiplier');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tsaturdayMultiplier = this.get('orgOvertime.saturdayMultiplier');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(saturdayMultiplier)) {\n\t\t\t\treturn (0, _utils.loc)('wage x %@', [saturdayMultiplier]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t}),\n\n\t\tsundayMultiplierString: Ember.computed('sundayMultiplier', function () {\n\t\t\tvar sundayMultiplier = this.get('sundayMultiplier');\n\t\t\tif (this.get('adhereToOrg')) {\n\t\t\t\tsundayMultiplier = this.get('orgOvertime.sundayMultiplier');\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(sundayMultiplier)) {\n\t\t\t\treturn (0, _utils.loc)('wage x %@', [sundayMultiplier]);\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('N/A');\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/member-project-cost-code-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-cost'], function (exports, _emberData, _uniqueId, _memberProjectCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberProjectCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'costCodeId'),\n\n    // override attrs\n    costCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\n    // override model injections\n    costCode: _emberData.default.belongsTo('cost-code', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-cost-code-equipment-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-cost-code-cost'], function (exports, _emberData, _uniqueId, _memberProjectCostCodeCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberProjectCostCodeCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'costCodeId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-cost-code-equipment-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-cost-code-seconds'], function (exports, _emberData, _uniqueId, _memberProjectCostCodeSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberProjectCostCodeSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'costCodeId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-cost-code-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-seconds'], function (exports, _emberData, _uniqueId, _memberProjectSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberProjectSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'costCodeId'),\n\n    // override attrs\n    costCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'] }),\n\n    // override model injections\n    costCode: _emberData.default.belongsTo('cost-code', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/project-cost'], function (exports, _emberData, _uniqueId, _projectCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId'),\n\n    // override attrs\n    memberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\n    // override model injections\n    member: _emberData.default.belongsTo('member', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-equipment-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-cost'], function (exports, _emberData, _uniqueId, _memberProjectCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _memberProjectCost.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'equipmentId'),\n\n    // override attrs\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-project-equipment-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/member-project-seconds'], function (exports, _emberData, _uniqueId, _memberProjectSeconds) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _memberProjectSeconds.default.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId', 'equipmentId'),\n\n\t\t// override attrs\n\t\tequipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n\t\t// override model injections\n\t\tequipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } }),\n\n\t\t/**\n   * override computed properties\n   */\n\t\tshowChildren: false,\n\n\t\ttotalSecondsPlusChildren: Ember.computed('totalSeconds', 'childrenTotalSeconds', function () {\n\t\t\treturn this.get('totalSeconds') + this.get('childrenTotalSeconds');\n\t\t}),\n\n\t\tisTopLevel: Ember.computed('projectId', '_project.id', function () {\n\t\t\tif (this.get('project.isTopLevelProject')) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}),\n\n\t\tprojectTitle: Ember.computed('project', function () {\n\t\t\treturn this.get('project.title');\n\t\t}),\n\n\t\tequipmentTitle: Ember.computed('equipment', function () {\n\t\t\treturn this.get('equipment.equipmentName');\n\t\t})\n\t});\n});","define('busy-app/models/member-project-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/project-seconds'], function (exports, _emberData, _uniqueId, _projectSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId', 'projectId'),\n\n    // override attrs\n    memberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\n    // override model injections\n    member: _emberData.default.belongsTo('member', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/member-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id'], function (exports, _emberData, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('startDate', 'endDate', 'memberId'),\n\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true }),\n\t\tendDate: _emberData.default.attr('date', { sortable: true }),\n\t\tregularSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tmember: _emberData.default.belongsTo('member', { query: { deleted_on: '_-DISABLE-_' } }),\n\n\t\tcost: null,\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/member-sign-in-answer', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    memberId: _emberData.default.attr('id'),\n    localTime: _emberData.default.attr('number'),\n    description: _emberData.default.attr('string'),\n    answer: _emberData.default.attr('string'),\n    questionTitle: _emberData.default.attr('string'),\n    questionDescription: _emberData.default.attr('string'),\n    questionPrompt: _emberData.default.attr('string'),\n    flagged: _emberData.default.attr('boolean'),\n    memberSignInSubmissionId: _emberData.default.attr('id'),\n    resolvedOn: _emberData.default.attr('number'),\n    resolverId: _emberData.default.attr('id'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    archivedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/member-sign-in-submission', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    memberId: _emberData.default.attr('id'),\n    proxyMemberId: _emberData.default.attr('id'),\n    localTime: _emberData.default.attr('number'),\n    createdOnOffset: _emberData.default.attr('number'),\n    createdOnDst: _emberData.default.attr('boolean'),\n    signatureId: _emberData.default.attr('id'),\n    deviceType: _emberData.default.attr('string'),\n    flagged: _emberData.default.attr('boolean'),\n    resolvedOn: _emberData.default.attr('number'),\n    resolverId: _emberData.default.attr('id'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    archivedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/member-time-document', ['exports', 'ember-data', '@busy-web/utils/time', '@busy-web/utils/assert'], function (exports, _emberData, _time, _assert) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = _emberData.default.Model.extend({\n\t\t// store: service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\torganization: Ember.computed.alias('auth.organization.content'),\n\n\t\tmemberId: _emberData.default.attr('string'),\n\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\n\t\tselfSignatureId: _emberData.default.attr('string'),\n\t\tauthoritativeSignatureId: _emberData.default.attr('string'),\n\n\t\tcanceled: _emberData.default.attr('number'),\n\t\tedited: _emberData.default.attr('number'),\n\n\t\tregularSeconds: _emberData.default.attr('number'),\n\t\tovertimeSeconds: _emberData.default.attr('number'),\n\t\tdoubletimeSeconds: _emberData.default.attr('number'),\n\t\twage: _emberData.default.attr('number'),\n\t\twageRate: _emberData.default.attr('number'),\n\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\t/**\n   * signature references\n   *\n   */\n\t\tselfSignature: null,\n\t\tauthoritativeSignature: null,\n\n\t\t// must be set externally\n\t\thasPreviousSelfSignature: null,\n\t\thasPreviousAuthoritativeSignature: null,\n\n\t\t/**\n   * Convenience property transforms\n   *\n   */\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.getWithDefault('regularSeconds', 0) + this.getWithDefault('overtimeSeconds', 0) + this.getWithDefault('doubletimeSeconds', 0);\n\t\t}),\n\n\t\tisSelfSigned: Ember.computed.bool('selfSignatureId'),\n\t\tisAuthoritativeSigned: Ember.computed.bool('authoritativeSignatureId'),\n\t\tisCanceled: Ember.computed.bool('canceled'),\n\t\tisEdited: Ember.computed.bool('edited'),\n\n\t\tisInvalid: Ember.computed.or('isCanceled', 'isEdited'),\n\t\tisValid: Ember.computed.not('isInvalid'),\n\t\thasPreviousInvalidation: Ember.computed.or('hasPreviousSelfSignature', 'hasPreviousAuthoritativeSignature'),\n\n\t\thasValidSelfSignature: Ember.computed.and('isSelfSigned', 'isValid'),\n\t\tneedsSelfSignature: Ember.computed.not('hasValidSelfSignature'),\n\t\tneedsSelfSignatureResign: Ember.computed.and('needsSelfSignature', 'hasPreviousInvalidation'),\n\n\t\thasValidAuthoritativeSignature: Ember.computed.and('isAuthoritativeSigned', 'isValid'),\n\t\tneedsAuthoritativeSignature: Ember.computed.not('hasValidAuthoritativeSignature'),\n\t\tneedsAuthoritativeSignatureResign: Ember.computed.and('needsAuthoritativeSignature', 'hasPreviousInvalidation'),\n\n\t\thasBothValidSignatures: Ember.computed.and('hasValidSelfSignature', 'hasValidAuthoritativeSignature'),\n\t\tneedsEitherSignature: Ember.computed.or('needsSelfSignature', 'needsAuthoritativeSignature'),\n\t\tneedsBothSignature: Ember.computed.and('needsSelfSignature', 'needsAuthoritativeSignature'),\n\n\t\tneedsEitherSignatureResign: Ember.computed.or('needsSelfSignatureResign', 'needsAuthoritativeSignatureResign'),\n\t\tneedsBothSignatureResign: Ember.computed.and('needsSelfSignatureResign', 'needsAuthoritativeSignatureResign'),\n\n\t\tstartDateTime: Ember.computed('startTime', function () {\n\t\t\tvar dateTime = this.get('startTime');\n\n\t\t\treturn Ember.isNone(dateTime) ? null : _time.default.date(dateTime);\n\t\t}),\n\n\t\tendDateTime: Ember.computed('endTime', function () {\n\t\t\tvar dateTime = this.get('endTime');\n\n\t\t\treturn Ember.isNone(dateTime) ? null : _time.default.date(dateTime);\n\t\t}),\n\n\t\t/**\n   * Returns a cached signature if available, otherwise looks up the related signature\n   *\n   * @public\n   * @method getSelfSignature\n   * @return {EmberPromise}\n   */\n\t\tgetSelfSignature: function getSelfSignature() {\n\t\t\tvar _this = this;\n\n\t\t\tvar signatureId = this.get('selfSignatureId');\n\t\t\tvar signature = this.get('selfSignature');\n\n\t\t\tif (!Ember.isNone(signature) && signatureId === signature.get('id')) {\n\t\t\t\treturn Ember.RSVP.resolve(signature);\n\t\t\t} else if (Ember.isNone(signatureId)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t} else {\n\t\t\t\t_assert.default.isUUID(signatureId);\n\t\t\t\treturn this.get('store').findRecord('self-signature', signatureId).then(function (signature) {\n\t\t\t\t\t_this.set('selfSignature', signature);\n\n\t\t\t\t\treturn signature;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Returns a cached signature if available, otherwise looks up the related signature\n   *\n   * @public\n   * @method getSelfSignature\n   * @return {EmberPromise}\n   */\n\t\tgetAuthoritativeSignature: function getAuthoritativeSignature() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar signatureId = this.get('authoritativeSignatureId');\n\t\t\tvar signature = this.get('authoritativeSignature');\n\n\t\t\tif (!Ember.isNone(signature) && signatureId === signature.get('id')) {\n\t\t\t\treturn Ember.RSVP.resolve(signature);\n\t\t\t} else if (Ember.isNone(signatureId)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t} else {\n\t\t\t\t_assert.default.isUUID(signatureId);\n\t\t\t\treturn this.get('store').findRecord('authoritative-signature', signatureId).then(function (signature) {\n\t\t\t\t\t_this2.set('authoritativeSignature', signature);\n\n\t\t\t\t\treturn signature;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tsiblings: Ember.computed('memberId', 'startDate', 'endDate', 'edited', function () {\n\t\t\tvar params = {\n\t\t\t\t// excude self\n\t\t\t\t_not_equal: { id: this.get('id') },\n\n\t\t\t\t// retrieve *all* other docs matching exactly this time period for this member\n\t\t\t\tmember_id: this.get('memberId'),\n\t\t\t\tstart_time: this.get('startTime'),\n\t\t\t\tend_time: this.get('endTime'),\n\t\t\t\tpage_size: 999999,\n\n\t\t\t\t_desc: ['submitted_on']\n\t\t\t};\n\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.get('store').query('member-time-document', params)\n\t\t\t});\n\t\t}),\n\n\t\tsiblingHasSelfSignature: Ember.computed('siblings', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\tvar siblings;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\treturn this.get('siblings');\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tsiblings = _context.sent;\n\t\t\t\t\t\t\treturn _context.abrupt('return', Ember.isNone(siblings) ? false : siblings.toArray().any(function (doc) {\n\t\t\t\t\t\t\t\treturn doc.get('isSelfSigned');\n\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}))),\n\n\t\tsiblingHasAuthoritativeSignature: Ember.computed('siblings', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n\t\t\tvar siblings;\n\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context2.next = 2;\n\t\t\t\t\t\t\treturn this.get('siblings');\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tsiblings = _context2.sent;\n\t\t\t\t\t\t\treturn _context2.abrupt('return', Ember.isNone(siblings) ? false : siblings.toArray().any(function (doc) {\n\t\t\t\t\t\t\t\treturn doc.get('isAuthoritativeSigned');\n\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee2, this);\n\t\t}))),\n\n\t\tsiblingHasInvalidated: Ember.computed('siblings', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n\t\t\tvar siblings;\n\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context3.next = 2;\n\t\t\t\t\t\t\treturn this.get('siblings');\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tsiblings = _context3.sent;\n\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.isNone(siblings) ? false : siblings.toArray().any(function (doc) {\n\t\t\t\t\t\t\t\treturn doc.get('isEdited');\n\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee3, this);\n\t\t})))\n\n\t});\n});","define('busy-app/models/member-wage-history', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({});\n});","define('busy-app/models/member', ['exports', '@busy-web/utils', 'busy-app/utils/round-time', 'busy-app/utils/time-entry', 'ember-data', 'moment'], function (exports, _utils, _roundTime, _timeEntry, _emberData, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    auth: Ember.inject.service('auth'),\n    features: Ember.inject.service('features'),\n\n    username: _emberData.default.attr('string'),\n    password: _emberData.default.attr('password'),\n    pinCode: _emberData.default.attr('password'),\n    firstName: _emberData.default.attr('string', { sortable: true }),\n    lastName: _emberData.default.attr('string', { sortable: true }),\n    // email: DS.attr('string'),\n    pendingEmail: _emberData.default.attr('string'), // don't enable pendingEmail or certifiedEmail until/unless we deprecate the email attribute\n    certifiedEmail: _emberData.default.attr('string'),\n    image: _emberData.default.attr('file'),\n    imageUrl: _emberData.default.attr('string'),\n    imageThumbUrl: _emberData.default.attr('string'),\n    organizationId: _emberData.default.attr('string'),\n    memberGroupId: _emberData.default.attr('string'),\n    positionId: _emberData.default.attr('string'),\n    memberNumber: _emberData.default.attr('string'),\n    phone: _emberData.default.attr('string'),\n    verifiedEmail: _emberData.default.attr('boolean'),\n    emailVerificationRequired: _emberData.default.attr('boolean'),\n    usernameUnique: _emberData.default.attr('boolean'),\n    archivedOn: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    sendEmail: _emberData.default.attr('boolean'),\n    sendText: _emberData.default.attr('boolean'),\n\n    // allowed values are 'AUTO', 'YES', and 'NO'.\n    // 'AUTO' is backwards compatible, indicating GPS should be provided when available\n    timeLocationRequired: _emberData.default.attr('string', { defaultValue: 'AUTO' }),\n\n    position: _emberData.default.belongsTo('position'),\n    memberGroup: _emberData.default.belongsTo('member-group'),\n    wageHistory: _emberData.default.hasMany('wage-history', { inverse: 'member', query: { _desc: ['start_time'] } }),\n    memberLock: _emberData.default.belongsTo('member-lock', { inverse: null, referenceKey: 'id', foreignKey: 'memberId' }),\n\n    currentWageHistory: _emberData.default.belongsTo('wage-history', { inverse: null, query: { member_id: 'self.id', _desc: ['change_date', 'created_on'] } }),\n    //currentOvertimeRules: DS.belongsTo('member-overtime-period', { query: {member_id: 'self.id', _desc: ['change_date', 'created_on'], _lte: { change_date: Time.timestamp() }} }),\n    //scheduledOvertimePeriod: DS.belongsTo('member-overtime-period', { query: {member_id: 'self.id', _desc: ['change_date', 'created_on'], _gt: { change_date: Time.timestamp() }} }),\n    currentOrgOvertimeRules: _emberData.default.belongsTo('organization-overtime-period', { inverse: null, query: { _desc: ['start_time', 'created_on'], _lte: { start_time: _utils.Time.timestamp() } } }),\n\n    currentOvertimeRules: Ember.computed('_overtimePeriods.@each.changeDate', function () {\n\n      if (this.get('_overtimePeriods.length') === 1) {\n        return this.get('_overtimePeriods.firstObject');\n      } else if (this.get('_overtimePeriods.length') > 1) {\n        if (this.get('_overtimePeriods.firstObject.changeDate') > _utils.Time.timestamp()) {\n          return this.get('_overtimePeriods.lastObject');\n        }\n        return this.get('_overtimePeriods.firstObject');\n      }\n      return null;\n    }),\n\n    scheduledOvertimePeriod: Ember.computed('_overtimePeriods.@each.changeDate', function () {\n      if (this.get('_overtimePeriods.length') > 1 && this.get('_overtimePeriods.firstObject.changeDate') > _utils.Time.timestamp()) {\n        return this.get('_overtimePeriods.firstObject');\n      }\n      return null;\n    }),\n\n    _overtimePeriods: Ember.computed('id', function () {\n      return _emberData.default.PromiseArray.create({\n        promise: this.store.query('member-overtime-period', { member_id: this.id, deleted_on: '_-NULL-_', _desc: ['change_date', 'created_on'], page_size: 2 })\n      });\n    }),\n\n    timeEntries: null, //DS.hasMany('time-entry'),\n    timeOffEntries: null, //DS.hasMany('time-off'),\n    wage: null, //DS.hasMany('wage-history'),\n\n    fullName: Ember.computed('firstName', 'lastName', function () {\n      return this.get('firstName') + ' ' + this.get('lastName');\n    }),\n\n    imagePlaceholder: '/images/imageplaceholder.png',\n\n    positionName: Ember.computed('position.title', function () {\n      var title = '';\n      if (!Ember.isNone(this.get('position.title'))) {\n        title = this.get('position.title');\n      }\n      return title;\n    }),\n\n    openEntry: null,\n    todaysTimeOff: null,\n\n    lockDate: Ember.computed('memberLock.effectiveDate', 'features.locks', function () {\n      var lockDate = _utils.Time.date().subtract(89, 'days').startOf('day').unix();\n      if (this.get('features.locks')) {\n        lockDate = this.get('memberLock.effectiveDate');\n        if (Ember.isNone(lockDate)) {\n          lockDate = _utils.Time.date().subtract(30, 'years').startOf('day').unix();\n        } else {\n          lockDate = _utils.Time.date(lockDate).add(1, 'days').startOf('day').unix();\n        }\n      }\n      return lockDate;\n    }),\n\n    /**\n     * returns the current elapsed time or current elapsed break time\n     * for the open entry.\n     *\n     */\n    totalTimeString: Ember.computed('openEntry.elapsedTimeString', function () {\n      var total = '00:00';\n      if (!Ember.isNone(this.get('openEntry.elapsedTimeString'))) {\n        total = this.get('openEntry.elapsedTimeString');\n      }\n      return total;\n    }),\n\n    /*\n    *\tregular clocked in time aggregators\n    */\n\n    /**\n     * returns the total time for the open entry for today.\n     *\n     */\n    openRegularTime: Ember.computed('openEntry.totalTime', function () {\n      var dayStart = _utils.Time.date().startOf('day').unix();\n      var dayEnd = _utils.Time.date().endOf('day').unix();\n      var openEntry = this.get('openEntry');\n\n      if (Ember.isNone(openEntry)) {\n        return 0;\n      } else {\n        var time = _timeEntry.default.timeByRange(openEntry, dayStart, dayEnd, true);\n        return time.endTime - time.startTime - time.breakTime;\n      }\n    }),\n\n    /**\n     * returns the total closed time entry time for today.\n     *\n     */\n    closedRegularTime: Ember.computed('timeEntries.@each.segmentTotalSeconds', function () {\n      var dayStart = _utils.Time.date().startOf('day').unix();\n      var dayEnd = _utils.Time.date().endOf('day').unix();\n      //let time = 0;\n      //this.getWithDefault('timeEntries').forEach(entry => {\n      //\ttime += entry.get('segments')\n      //\t\t\t\t\t\t.filter(s => s.get('startTime') >= dayStart && s.get('endTime') <= dayEnd)\n      //\t\t\t\t\t\t.reduce((a, b) => a + b.get('totalSeconds'), 0);\n      //});\n\n      //return time;\n\n      return this.getWithDefault('timeEntries', []).reduce(function (acc, timeEntry) {\n        var time = _timeEntry.default.timeByRange(timeEntry, dayStart, dayEnd, true);\n        return acc + (time.endTime - time.startTime - time.breakTime);\n      }, 0);\n    }),\n\n    /**\n     * returns the total open and closed time for today.\n     *\n     */\n    combinedRegularTime: Ember.computed('closedRegularTime', 'openRegularTime', function () {\n      var closedTotal = this.getWithDefault('closedRegularTime', 0);\n      var openTotal = this.getWithDefault('openRegularTime', 0);\n      return closedTotal + openTotal;\n    }),\n\n    openRegularTimeString: Ember.computed('openRegularTime', function () {\n      var timeInSeconds = this.getWithDefault('openRegularTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    closedRegularTimeString: Ember.computed('closedRegularTime', function () {\n      var timeInSeconds = this.getWithDefault('closedRegularTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    combinedRegularTimeString: Ember.computed('combinedRegularTime', function () {\n      var timeInSeconds = this.getWithDefault('combinedRegularTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    /*\n    *\tBreak time aggregators\n    */\n\n    /**\n     * Gets the total break time of the open entry including open break time.\n     *\n     */\n    openBreakTime: Ember.computed('clockedIn', 'openEntry.{breakTime,elapsedTime}', function () {\n      var dayStart = _utils.Time.date().startOf('day').unix();\n      var dayEnd = _utils.Time.date().endOf('day').unix();\n      var total = 0;\n      if (!Ember.isNone(this.get('openEntry'))) {\n        var time = _timeEntry.default.timeByRange(this.get('openEntry'), dayStart, dayEnd, true);\n        total = time.breakTime;\n      }\n      return total;\n    }),\n\n    /**\n     * Gets the total break time of all the closed entries\n     *\n     */\n    closedBreakTime: Ember.computed('timeEntries.@each.breakTime', function () {\n      var dayStart = _utils.Time.date().startOf('day').unix();\n      var dayEnd = _utils.Time.date().endOf('day').unix();\n      var breaksOnClosedEntries = this.getWithDefault('timeEntries', []).reduce(function (acc, timeEntry) {\n        var time = _timeEntry.default.timeByRange(timeEntry, dayStart, dayEnd, true);\n        return acc + time.breakTime;\n      }, 0);\n      return breaksOnClosedEntries;\n    }),\n\n    /**\n     * returns the total break time for open and closed breaks.\n     *\n     */\n    combinedBreakTime: Ember.computed('closedBreakTime', 'openBreakTime', function () {\n      var closedTotal = this.getWithDefault('closedBreakTime', 0);\n      var openTotal = this.getWithDefault('openBreakTime', 0);\n      return closedTotal + openTotal;\n    }),\n\n    openBreakTimeString: Ember.computed('openBreakTime', function () {\n      var timeInSeconds = this.getWithDefault('openBreakTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    closedBreakTimeString: Ember.computed('closedBreakTime', function () {\n      var timeInSeconds = this.getWithDefault('closedBreakTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    combinedBreakTimeString: Ember.computed('combinedBreakTime', function () {\n      var timeInSeconds = this.getWithDefault('combinedBreakTime', 0);\n      return this.secondsToFormattedString(timeInSeconds);\n    }),\n\n    /**\n     *\tstateful aggregators\n     *\t\treturns break time when `onBreak`\n     * \t\treturn regular time when NOT `onBreak`\n     */\n    openElapsedTime: Ember.computed('onBreak', 'openRegularTime', 'openBreakTime', function () {\n      if (this.get('onBreak')) {\n        return this.getWithDefault('openBreakTime', 0);\n      } else {\n        return this.getWithDefault('openRegularTime', 0);\n      }\n    }),\n\n    closedElapsedTime: Ember.computed('onBreak', 'closedRegularTime', 'closedBreakTime', function () {\n      if (this.get('onBreak')) {\n        return this.getWithDefault('closedBreakTime', 0);\n      } else {\n        return this.getWithDefault('closedRegularTime', 0);\n      }\n    }),\n\n    combinedElapsedTime: Ember.computed('closedElapsedTime', 'openElapsedTime', function () {\n      var closedTotal = this.getWithDefault('closedElapsedTime', 0);\n      var openTotal = this.getWithDefault('openElapsedTime', 0);\n      return closedTotal + openTotal;\n    }),\n\n    openElapsedTimeString: Ember.computed('openElapsedTime', function () {\n      var elapsedTime = this.getWithDefault('openElapsedTime', 0);\n      return this.secondsToFormattedString(elapsedTime);\n    }),\n\n    closedElapsedTimeString: Ember.computed('closedElapsedTime', function () {\n      var elapsedTime = this.getWithDefault('closedElapsedTime', 0);\n      return this.secondsToFormattedString(elapsedTime);\n    }),\n\n    combinedElapsedTimeString: Ember.computed('combinedElapsedTime', function () {\n      var elapsedTime = this.getWithDefault('combinedElapsedTime', 0);\n      return this.secondsToFormattedString(elapsedTime);\n    }),\n\n    secondsToFormattedString: function secondsToFormattedString(seconds) {\n      var _Time$convertSeconds = _utils.Time.convertSeconds(seconds, true),\n          hours = _Time$convertSeconds.hours,\n          minutes = _Time$convertSeconds.minutes;\n\n      return hours + ':' + minutes;\n    },\n\n\n    latestTimeEntry: Ember.computed('timeEntries', 'openEntry', function () {\n      if (!Ember.isNone(this.get('openEntry'))) {\n        return this.get('openEntry');\n      } else if (!Ember.isEmpty(this.get('timeEntries'))) {\n        return this.get('timeEntries.lastObject');\n      }\n    }),\n\n    paidTimeOffEntries: Ember.computed.filterBy('timeOffEntries', 'paid'),\n    paidTimeOffEntriesSeconds: Ember.computed.mapBy('paidTimeOffEntries', 'seconds'),\n    paidTimeOffEntriesTotalSeconds: Ember.computed.sum('paidTimeOffEntriesSeconds'),\n\n    timeOffEntriesTypesCollapsed: Ember.computed('timeOffEntries.[]', function () {\n      var timeOffEntries = this.get('timeOffEntries') || Ember.A();\n      if (timeOffEntries.get('length') === 0) {\n        return '';\n      } else if (timeOffEntries.get('length') === 1) {\n        return timeOffEntries.get('firstObject.getType');\n      } else {\n        return (0, _utils.loc)('Time Off');\n      }\n    }),\n\n    timeOffEntriesTypesFull: Ember.computed('timeOffEntries', function () {\n      return this.getWithDefault('timeOffEntries', []).mapBy('getType').join(' / ');\n    }),\n\n    onBreak: Ember.computed('clockedIn', 'openEntry.onBreak', function () {\n      return this.get('openEntry.onBreak') || false;\n    }),\n\n    clockedIn: Ember.computed('openEntry', function () {\n      return Ember.isNone(this.get('openEntry')) ? false : true;\n    }),\n\n    hasLocation: Ember.computed('clockedIn', 'openEntry.{isStartLocationValid,isEndLocationValid}', function () {\n      return this.get('openEntry.isStartLocationValid') || this.get('openEntry.isEndLocationValid');\n    }),\n\n    dailyOvertime: Ember.computed('currentOvertimeRules', 'currentOrgOvertimeRules', function () {\n      var dailyOvertime = null;\n      var currentRules = this.get('currentOvertimeRules');\n\n      if (!Ember.isNone(currentRules) && currentRules.get('adhereToOrg')) {\n        currentRules = this.get('currentOrgOvertimeRules');\n      }\n\n      if (!Ember.isNone(currentRules)) {\n        dailyOvertime = currentRules.get('dailyOvertime');\n      }\n      return dailyOvertime;\n    }),\n\n    weeklyOvertime: Ember.computed('currentOvertimeRules', 'currentOrgOvertimeRules', function () {\n      var weeklyOvertime = null;\n      var currentRules = this.get('currentOvertimeRules');\n\n      if (!Ember.isNone(currentRules) && currentRules.get('adhereToOrg')) {\n        currentRules = this.get('currentOrgOvertimeRules');\n      }\n\n      if (!Ember.isNone(currentRules)) {\n        weeklyOvertime = currentRules.get('weeklyOvertime');\n      }\n      return weeklyOvertime;\n    }),\n\n    overtimePreference: Ember.computed('currentOvertimeRules.overtimePreference', function () {\n      var pref = '';\n      var currentRules = this.get('currentOvertimeRules');\n      if (!Ember.isNone(currentRules)) {\n        pref = currentRules.get('overtimePreference');\n      }\n      return pref;\n    }),\n\n    // when timeLocationRequired is set to 'YES', users cannot perform clock actions on themselves\n    // memberGpsSetting is the LD pro flag controlling if the GPS setting can be changed,\n    //   even when it is disabled, the last set value is still valid and should be used\n    // memberGpsSettingDevelopment controls if the feature code is active\n    isTimeLocationRequired: Ember.computed('timeLocationRequired', 'id', 'auth.member.id', 'features.memberGpsSettingDevelopment', function () {\n      return this.get('features.memberGpsSettingDevelopment') && this.get('timeLocationRequired') === 'YES' && this.get('id') === this.get('auth.member.id');\n    }),\n\n    timeLocationRequiredDescription: Ember.computed('timeLocationRequired', function () {\n      var map = {\n        'AUTO': (0, _utils.loc)('Not Required'),\n        'YES': (0, _utils.loc)('Required'),\n        'NO': (0, _utils.loc)('Off')\n      };\n\n      return map[this.get('timeLocationRequired')];\n    }),\n\n    /**\n     * Clock in a new time entry\n     *\n     * @public\n     * @method clockIn\n     * @param projectId {string} Project model id\n     * @param costCodeId {string} CostCode model id\n     * @param description {string} description for the timecard\n     * @return {EmberPromise}\n     */\n    clockIn: function clockIn(projectId, costCodeId, description, equipmentId, startLocation) {\n      var forceSave = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n      var validateOnly = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n      var isSwitch = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n      var signInAnswers = arguments[8];\n      var authMember = arguments[9];\n\n      var _this = this;\n\n      var covidRestricted = arguments[10];\n      var isFreeAccount = arguments[11];\n\n      var startTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), _utils.Time.nistTimestamp(), { isStart: true, isSwitch: isSwitch });\n\n      if (this.get('isTimeLocationRequired')) {\n        _utils.Assert.test('A location is required for this member to self clockIn', !Ember.isNone(startLocation));\n      }\n\n      var params = {\n        memberId: this.id,\n        actionType: 10,\n        startTime: startTime\n      };\n\n      if (!Ember.isNone(projectId)) {\n        params.projectId = projectId;\n      }\n\n      if (!Ember.isNone(costCodeId)) {\n        params.costCodeId = costCodeId;\n      }\n\n      if (!Ember.isNone(description) && !Ember.isEmpty(description)) {\n        description = description.trim();\n        params.description = description;\n      }\n\n      if (!Ember.isNone(equipmentId)) {\n        params.equipmentId = equipmentId;\n      }\n\n      if (!Ember.isNone(startLocation)) {\n        params.startLocation = startLocation;\n      }\n\n      var record = this.store.createRecord('time-entry', params);\n      if (validateOnly) {\n        return record.validate(false, signInAnswers, authMember, covidRestricted, isFreeAccount).finally(function () {\n          return record.destroy();\n        });\n      } else {\n        return record.save(forceSave, signInAnswers, authMember, covidRestricted, isFreeAccount).then(function (model) {\n          _this.set('openEntry', model);\n          return model;\n        });\n      }\n    },\n    clockInAt: function clockInAt(startTime, projectId, costCodeId, description, equipmentId) {\n      var _this2 = this;\n\n      var forceSave = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n\n      _utils.Assert.funcNumArgs(arguments, 6);\n\n      _utils.Assert.test('A startTime must be provided to clockInAt', typeof startTime === 'number');\n\n      var params = {\n        memberId: this.id,\n        actionType: 30,\n        startTime: (0, _roundTime.roundOrgTime)(this.get('auth.organization'), startTime, { isStart: true })\n      };\n\n      if (!Ember.isNone(projectId)) {\n        params.projectId = projectId;\n      }\n\n      if (!Ember.isNone(costCodeId)) {\n        params.costCodeId = costCodeId;\n      }\n\n      if (!Ember.isNone(description) && !Ember.isEmpty(description)) {\n        params.description = description;\n      }\n\n      if (!Ember.isNone(equipmentId)) {\n        params.equipmentId = equipmentId;\n      }\n\n      return this.store.createRecord('time-entry', params).save(forceSave).then(function (model) {\n        _this2.set('openEntry', model);\n        return model;\n      });\n    },\n    clockOut: function clockOut() {\n      var _this3 = this;\n\n      var isSwitch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var endLocation = arguments[1];\n\n      var endTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), _utils.Time.nistTimestamp(), { isEnd: true, isSwitch: isSwitch });\n\n      if (this.get('isTimeLocationRequired')) {\n        _utils.Assert.test('A location is required for this member to self clockout', !Ember.isNone(endLocation));\n      }\n\n      if (Ember.isNone(this.get('timeEntries'))) {\n        this.set('timeEntries', []);\n      }\n\n      if (this.get('openEntry.hasDirtyAttributes')) {\n        this.get('openEntry').rollbackAttributes();\n      }\n\n      _utils.Assert.test(\"You must have an open entry to call clockOut\", !Ember.isNone(this.get('openEntry')));\n\n      this.set('openEntry.actionType', 20);\n      this.set('openEntry.endTime', endTime);\n      this.get('openEntry').populate();\n\n      return this.get('openEntry')._save().then(function (model) {\n        _this3.set('openEntry', null);\n        _this3.get('timeEntries').pushObject(model._internalModel);\n        return model;\n      });\n    },\n    clockOutAt: function clockOutAt(endTime) {\n      var forceSave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var validateOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      var _this4 = this;\n\n      var endLocation = arguments[3];\n      var isClockOut = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      if (Ember.isNone(this.get('timeEntries'))) {\n        this.set('timeEntries', []);\n      }\n\n      if (isClockOut && this.get('isTimeLocationRequired')) {\n        _utils.Assert.test('A location is required for this member to self clockout', !Ember.isNone(endLocation));\n      }\n\n      _utils.Assert.test('An endTime must be provided to clockOutAt', typeof endTime === 'number');\n      _utils.Assert.test(\"You must have an open entry to call clockOut\", !Ember.isNone(this.get('openEntry')));\n\n      this.set('openEntry.endTime', (0, _roundTime.roundOrgTime)(this.get('organization.id'), endTime, { isEnd: true }));\n      this.set('openEntry.actionType', 40);\n\n      if (validateOnly) {\n        return this.get('openEntry').validate(forceSave === true ? false : true);\n      }\n\n      return this.get('openEntry').save(forceSave).then(function (model) {\n        _this4.set('openEntry', null);\n        _this4.get('timeEntries').pushObject(model._internalModel);\n        return model;\n      });\n    },\n    createTimeEntry: function createTimeEntry(startTime, endTime) {\n      _utils.Assert.test('A startTime must be provided to manualTimeEntry', typeof startTime === 'number');\n      _utils.Assert.test('An endTime must be provided to manualTimeEntry', typeof endTime === 'number');\n\n      if (Ember.isNone(this.get('timeEntries'))) {\n        this.set('timeEntries', []);\n      }\n\n      var params = {\n        id: _utils.UUID.generate(),\n        memberId: this.id,\n        actionType: 50,\n        startTime: startTime,\n        endTime: endTime\n      };\n\n      var entry = this.store.createRecord('time-entry', params);\n      entry.set('member', this);\n\n      this.get('timeEntries').pushObject(entry);\n      return entry;\n    },\n    createTimeOffEntry: function createTimeOffEntry(datestamp, type, isMulti, seconds, isPaid, description) {\n      var _this5 = this;\n\n      var forceSave = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n\n      _utils.Assert.test('A datestamp must be provided to newTimeOff', typeof datestamp === 'number');\n\n      if (Ember.isEmpty(this.get('timeOffEntries'))) {\n        this.set('timeOffEntries', []);\n      }\n\n      var offset = _utils.Time.timezone(this.get('date'));\n      var isDST = _utils.Time.isDST(this.get('dateStamp'));\n      var date = _utils.Time.date().unix();\n\n      if (!Ember.isNone(description) && !Ember.isEmpty(description)) {\n        description = description.trim();\n      }\n\n      var params = {\n        id: _utils.UUID.generate(),\n        dateStamp: datestamp,\n        memberId: this.id,\n        type: type,\n        seconds: seconds,\n        paid: isPaid,\n        description: description,\n        createdOnDaylightSavingTime: isDST,\n        createdOnOffset: offset,\n        submitterMemberId: this.get('auth.member.id'),\n        submittedOn: date\n      };\n\n      return this.store.createRecord('time-off', params).save(forceSave, isMulti).then(function (model) {\n        _this5.get('timeOffEntries').pushObject(model._internalModel);\n        return model;\n      });\n    },\n    manualTimeEntry: function manualTimeEntry(startTime, endTime, projectId, costCodeId, description, equipmentId) {\n      var _this6 = this;\n\n      _utils.Assert.funcNumArgs(arguments, 6);\n      _utils.Assert.isNumber(startTime);\n      _utils.Assert.isNumber(endTime);\n\n      if (Ember.isNone(this.get('timeEntries'))) {\n        this.set('timeEntries', []);\n      }\n\n      var params = {\n        memberId: this.id,\n        actionType: 50,\n        startTime: startTime,\n        endTime: endTime\n      };\n\n      if (!Ember.isNone(projectId)) {\n        params.projectId = projectId;\n      }\n\n      if (!Ember.isNone(costCodeId)) {\n        params.costCodeId = costCodeId;\n      }\n\n      if (!Ember.isNone(description) && !Ember.isEmpty(description)) {\n        description = description.trim();\n        params.description = description;\n      }\n\n      if (!Ember.isNone(equipmentId)) {\n        params.equipmentId = equipmentId;\n      }\n\n      return this.store.createRecord('time-entry', params).save().then(function (model) {\n        _this6.get('timeEntries').pushObject(model._internalModel);\n        return model;\n      });\n    },\n    startBreak: function startBreak(paidBreak, override, startLocation) {\n      _utils.Assert.test('You must be clocked in before you can start a break!', !Ember.isNone(this.get('openEntry')));\n\n      if (this.get('isTimeLocationRequired')) {\n        _utils.Assert.test('A location is required for this member to self startBreak', !Ember.isNone(startLocation));\n      }\n\n      return this.get('openEntry').startBreak(paidBreak, override, startLocation);\n    },\n    stopBreak: function stopBreak(override, endLocation) {\n      _utils.Assert.test('You must be clocked in before you can stop a break!', !Ember.isNone(this.get('openEntry')));\n\n      if (this.get('isTimeLocationRequired')) {\n        _utils.Assert.test('A location is required for this member to self stopBreak', !Ember.isNone(endLocation));\n      }\n\n      return this.get('openEntry').stopBreak(override, endLocation);\n    },\n\n\n    /**\n     * Query the API for the `member-lock` for this `member`\n     *\n     * @method getMemberLock\n     * @async\n     * @chainable\n     * @return {Models.MemberLock}\n     *\n     */\n    getMemberLock: function getMemberLock() {\n      return this.get('memberLock');\n    },\n\n\n    /**\n     * Cache the result of `this.getMemberLock()` to `this.memberLock`\n     *\n     * @method setMemberLock\n     * @async\n     * @chainable\n     * @return {Models.MemberLock}\n     *\n     */\n    setMemberLock: function setMemberLock() {\n      _utils.Assert.test(\"memberLock can no longer be set with this method. Just use `member.get('memberLock')`\", {});\n      return this.get('memberLock');\n    },\n\n\n    /**\n     * Update the effective date and push the new 'member-lock' to the API.\n     * `effectiveDate` property must be either an epoch timestamp or `_-NULL-_`\n     *\n     * @method setMemberLock\n     * @property effectiveDate {number|string}\n     * @async\n     * @chainable\n     * @return {Models.MemberLock}\n     *\n     */\n    updateMemberLock: function updateMemberLock(effectiveDate) {\n      var _this7 = this;\n\n      var updaterMemberId = this.get('auth.member.id');\n      var _memberLock = this.get('memberLock');\n\n      _utils.Assert.isUUID(updaterMemberId);\n\n      // fix NULL to use `_-NULL-_` string\n      if (Ember.isNone(effectiveDate)) {\n        effectiveDate = null;\n      }\n\n      // make sure the effectiveDate is a valid epoch\n      if (effectiveDate !== null && effectiveDate !== '_-NULL-_') {\n        _utils.Assert.isInteger(effectiveDate);\n\n        // ensure the effectiveDate is clamped to 23:59:59\n        effectiveDate = _utils.Time.date(effectiveDate).endOf('day').unix();\n      }\n\n      // if memberLock isn't set, get it\n      var promisedMemberLock = !Ember.isNone(_memberLock) ? Ember.RSVP.resolve(_memberLock) : this.getMemberLock();\n      return promisedMemberLock.then(function (memberLock) {\n        if (Ember.isNone(memberLock)) {\n          memberLock = _this7.get('store').createRecord('member-lock', { memberId: _this7.get('id'), effectiveDate: effectiveDate, updaterMemberId: updaterMemberId });\n        } else {\n          if (effectiveDate === memberLock.get('effectiveDate')) {\n            return memberLock;\n          }\n          memberLock.setProperties({ effectiveDate: effectiveDate, updaterMemberId: updaterMemberId });\n        }\n        return memberLock.save().then(function () {\n          _this7.set('memberLock', memberLock);\n        });\n      });\n    },\n\n\n    /**\n     * Compares `member.memberLock.effectiveDate` to the provided date\n     *\n     * @method isDateLocked\n     * @param member {Models.Member}\n     * @return {Boolean}\n     *\n     */\n    isDateLocked: function isDateLocked(compareDate) {\n      var lockDate = this.get('memberLock.effectiveDate');\n      if (Ember.isNone(lockDate)) {\n        return false;\n      } else {\n        compareDate = _moment.default.isMoment(compareDate) ? compareDate.unix() : compareDate;\n        return compareDate <= lockDate;\n      }\n    },\n\n\n    email: Ember.computed('pendingEmail', 'certifiedEmail', function () {\n      var _EmberGetProperties = Ember.getProperties(this, ['pendingEmail', 'certifiedEmail']),\n          pendingEmail = _EmberGetProperties.pendingEmail,\n          certifiedEmail = _EmberGetProperties.certifiedEmail;\n\n      return certifiedEmail || pendingEmail;\n    }),\n\n    latestEmail: Ember.computed('pendingEmail', 'certifiedEmail', function () {\n      var _EmberGetProperties2 = Ember.getProperties(this, ['pendingEmail', 'certifiedEmail']),\n          pendingEmail = _EmberGetProperties2.pendingEmail,\n          certifiedEmail = _EmberGetProperties2.certifiedEmail;\n\n      return pendingEmail || certifiedEmail;\n    })\n\n  });\n});","define('busy-app/models/organization-cancel-detail', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n\n    organizationId: _emberData.default.attr('string'),\n    memberId: _emberData.default.attr('string'),\n    cancelReason: _emberData.default.attr('string'),\n    updatedOn: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('string')\n  });\n});","define('busy-app/models/organization-info', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tphone: _emberData.default.attr('string'),\n\t\taddress1: _emberData.default.attr('string'),\n\t\taddress2: _emberData.default.attr('string'),\n\t\temployeeMin: _emberData.default.attr('number'),\n\t\temployeeMax: _emberData.default.attr('number'),\n\t\tcity: _emberData.default.attr('string'),\n\t\tcounty: _emberData.default.attr('string'),\n\t\tstate: _emberData.default.attr('string'),\n\t\tpostalCode: _emberData.default.attr('string'),\n\t\tcurrencyCode: _emberData.default.attr('string'),\n\t\tcountry: _emberData.default.attr('string'),\n\t\tlongitude: _emberData.default.attr('number'),\n\t\tlatitude: _emberData.default.attr('number'),\n\t\tlocationRadius: _emberData.default.attr('number'),\n\t\treminder: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tcityStateString: Ember.computed('city', 'state', 'postalCode', function () {\n\t\t\tvar str = '';\n\t\t\tif (!Ember.isNone(this.get('city'))) {\n\t\t\t\tstr += this.get('city') + ', ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('state'))) {\n\t\t\t\tstr += this.get('state') + ' ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('postalCode'))) {\n\t\t\t\tstr += this.get('postalCode');\n\t\t\t}\n\t\t\treturn str.replace(/,? ?$/, '');\n\t\t})\n\t});\n});","define('busy-app/models/organization-integration', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    integrationName: _emberData.default.attr('string'),\n    enabled: _emberData.default.attr('boolean'),\n    frequency: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    organizationId: _emberData.default.attr('string'),\n    lastAttemptId: _emberData.default.attr('string'),\n\n    organization: _emberData.default.belongsTo('organization'),\n    lastAttempt: _emberData.default.belongsTo('integration-attempt', { inverse: null, referenceKey: 'id', foreignKey: 'lastAttemptId' }),\n    integrationAttempts: _emberData.default.hasMany('integration-attempt'),\n\n    getIntegrationAttempt: function getIntegrationAttempt(id) {\n      _utils.Assert.funcNumArgs(arguments, 1, true);\n      _utils.Assert.isString(id);\n      _utils.Assert.isUUID(id);\n\n      return this.get('store').findRecord('integration-attempt', id);\n    },\n    getLastAttempt: function getLastAttempt() {\n      var lastAttemptId = this.get('lastAttemptId');\n      return !Ember.isNone(lastAttemptId) ? this.getIntegrationAttempt(lastAttemptId) : Ember.RSVP.resolve(null);\n    },\n\n\n    // setLastAttempt() {\n    //   return this.getLastAttempt().then((lastAttempt) => {\n    //     return this.set('lastAttempt', lastAttempt);\n    //   });\n    // },\n\n    queryIntegrationAttempts: function queryIntegrationAttempts() {\n      var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      Ember.deprecate('untested', false, { id: 'organization-integration.queryIntegrationAttempts', until: '5.0.0' });\n      var organization_integration_id = this.get('id');\n      var mergedQuery = Ember.merge(query, { organization_integration_id: organization_integration_id });\n      return this.get('store').query('integration-attempt', mergedQuery);\n    }\n  });\n});","define('busy-app/models/organization-notification-preferences', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    memberId: _emberData.default.attr('string'),\n    injuryReport: _emberData.default.attr('number'),\n    inaccurateTimeReport: _emberData.default.attr('number'),\n    breakReport: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/organization-overtime-period', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    startTime: _emberData.default.attr('number'),\n    lengthInDays: _emberData.default.attr('number'),\n    weeklyOvertime: _emberData.default.attr('number'),\n    dailyOvertime: _emberData.default.attr('number'),\n    dailyDoubletime: _emberData.default.attr('number'),\n    seventhDayOvertime: _emberData.default.attr('boolean'),\n    seventhDayDoubletime: _emberData.default.attr('number'),\n    saturdayMultiplier: _emberData.default.attr('number'),\n    sundayMultiplier: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n\n    effectiveDate: Ember.computed('startTime', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startTime'))) {\n        // hides the Jan 7 1970 and shows begining\n        if (this.get('startTime') === 345600) {\n          date = (0, _utils.loc)(\"Beginning\");\n        } else {\n          date = _utils.Time.timeFormat(this.get('startTime'), 'ddd. MMM Do, YYYY');\n        }\n      }\n      return date;\n    }),\n\n    effectiveDateShort: Ember.computed('startTime', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startTime'))) {\n        // hides the Jan 7 1970 and shows begining\n        if (this.get('startTime') === 345600) {\n          date = (0, _utils.loc)(\"Beginning\");\n        } else {\n          date = _utils.Time.timeFormat(this.get('startTime'), 'MMM Do, YYYY');\n        }\n      }\n      return date;\n    }),\n\n    editDate: Ember.computed('updatedOn', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('updatedOn'))) {\n        date = _utils.Time.timeFormat(this.get('updatedOn'), 'MMM Do, YYYY');\n      }\n      return date;\n    }),\n\n    overtimePeriod: Ember.computed('startTime', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startTime'))) {\n        date = _utils.Time.timeFormat(this.get('startTime'), 'dddd') + ' - ' + _utils.Time.dateFormat(_utils.Time.date(this.get('startTime')).add(6, 'days'), 'dddd');\n      }\n      return date;\n    }),\n\n    overtimePreference: Ember.computed('weeklyOvertime', 'dailyOvertime', 'dailyDoubletime', 'seventhDayOvertime', 'seventhDayDoubletime', 'saturdayMultiplier', 'sundayMultiplier', function () {\n      var weekly = this.get('weeklyOvertime');\n      var daily = this.get('dailyOvertime');\n      var dailyDouble = this.get('dailyDoubletime');\n      var sevenOne = this.get('seventhDayOvertime');\n      var sevenTwo = this.get('seventhDayDoubletime');\n      var saturday = this.get('saturdayMultiplier');\n      var sunday = this.get('sundayMultiplier');\n\n      var pref = \"\";\n      if (weekly === 40 && daily === 8 && dailyDouble === 12 && sevenOne === true && sevenTwo === 8 && saturday === null && sunday === null) {\n        pref = (0, _utils.loc)(\"California Settings\");\n      } else if (weekly === 40 && daily === null && dailyDouble === null && (sevenOne === false || sevenOne === null) && sevenTwo === null && saturday === null && sunday === null) {\n        pref = (0, _utils.loc)(\"Standard Settings\");\n      } else {\n        pref = (0, _utils.loc)(\"Custom Settings\");\n      }\n      return pref;\n    }),\n\n    weeklyOvertimeString: Ember.computed('weeklyOvertime', function () {\n      if (!Ember.isNone(this.get('weeklyOvertime'))) {\n        return (0, _utils.loc)('after ') + this.get('weeklyOvertime') + (0, _utils.loc)(' hours');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    dailyOvertimeString: Ember.computed('dailyOvertime', function () {\n      if (!Ember.isNone(this.get('dailyOvertime'))) {\n        return (0, _utils.loc)('after ') + this.get('dailyOvertime') + (0, _utils.loc)(' hours');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    dailyDoubletimeString: Ember.computed('dailyDoubletime', function () {\n      if (!Ember.isNone(this.get('dailyDoubletime'))) {\n        return (0, _utils.loc)('after ') + this.get('dailyDoubletime') + (0, _utils.loc)(' hours');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    seventhDayOvertimeString: Ember.computed('seventhDayOvertime', function () {\n      if (this.get('seventhDayOvertime')) {\n        return this.get('seventhDayOvertime');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    seventhDayDoubletimeString: Ember.computed('seventhDayDoubletime', function () {\n      if (!Ember.isNone(this.get('seventhDayDoubletime'))) {\n        return (0, _utils.loc)('after ') + this.get('seventhDayDoubletime') + (0, _utils.loc)(' hours');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    saturdayMultiplierString: Ember.computed('saturdayMultiplier', function () {\n      if (!Ember.isNone(this.get('saturdayMultiplier'))) {\n        return (0, _utils.loc)('wage x ') + this.get('saturdayMultiplier');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    }),\n\n    sundayMultiplierString: Ember.computed('sundayMultiplier', function () {\n      if (!Ember.isNone(this.get('sundayMultiplier'))) {\n        return (0, _utils.loc)('wage x ') + this.get('sundayMultiplier');\n      } else {\n        return (0, _utils.loc)('N/A');\n      }\n    })\n  });\n});","define('busy-app/models/organization-pay-period', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    payPeriodType: _emberData.default.attr('number'),\n    startDate: _emberData.default.attr('number'),\n    dayOne: _emberData.default.attr('number'),\n    dayTwo: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    effectiveDate: Ember.computed('startDate', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startDate'))) {\n        // hides the Jan 7 1970 and shows begining\n        if (this.get('startDate') === 345600) {\n          date = (0, _utils.loc)(\"Beginning\");\n        } else {\n          date = _utils.Time.timeFormat(this.get('startDate'), 'ddd. MMM Do, YYYY');\n        }\n      }\n      return date;\n    }),\n\n    periodTypeString: Ember.computed('payPeriodType', function () {\n      var type = '';\n      if (!Ember.isNone(this.get('payPeriodType'))) {\n        type = this.get('payPeriodType');\n        if (type === 10) {\n          type = (0, _utils.loc)('Weekly');\n        } else if (type === 20) {\n          type = (0, _utils.loc)('Biweekly');\n        } else if (type === 30) {\n          type = (0, _utils.loc)('Semimonthly');\n        } else if (type === 40) {\n          type = (0, _utils.loc)('Monthly');\n        } else {\n          Ember.Error((0, _utils.loc)(\"Pay period type not found!\"));\n        }\n      }\n      return type;\n    }),\n\n    startOnString: Ember.computed('payPeriodType', 'dayOne', 'dayTwo', 'startDate', function () {\n      var start = '';\n      if (!Ember.isNone(this.get('payPeriodType')) && !Ember.isNone(this.get('dayOne'))) {\n        var dayOne = this.get('dayOne');\n        var type = this.get('payPeriodType');\n        if (type === 10) {\n          start = (0, _utils.loc)(\"Every %@\", [_utils.Time.dateFormat(_utils.Time.date().weekday(dayOne), 'dddd')]);\n        } else if (type === 20) {\n          if (!Ember.isNone(this.get('startDate'))) {\n            start = (0, _utils.loc)(\"Every other %@\", [_utils.Time.dateFormat(_utils.Time.date(this.get('startDate')).add(dayOne % 14, 'days'), 'dddd')]);\n          }\n        } else if (type === 30) {\n          if (!Ember.isNone(this.get('dayTwo'))) {\n            // set month to 4 which is May to get a month with 31 days so when the\n            // day is the 31st it will print the 31st.\n            var first = _utils.Time.dateFormat(_utils.Time.date().month(4).date(dayOne), 'Do');\n            var sec = _utils.Time.dateFormat(_utils.Time.date().month(4).date(this.get('dayTwo')), 'Do');\n            start = (0, _utils.loc)(\"The %@ and %@ of each month\", [first, sec]);\n          }\n        } else if (type === 40) {\n          start = (0, _utils.loc)(\"The %@ of each month\", [_utils.Time.dateFormat(_utils.Time.date().date(dayOne), 'Do')]);\n        }\n      }\n      return start;\n    })\n  });\n});","define('busy-app/models/organization-subscription-status', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tsubscriptionId: _emberData.default.attr('string'),\n\t\tcustomerId: _emberData.default.attr('string'),\n\t\tstatus: _emberData.default.attr('string'),\n\t\tperiodDay: _emberData.default.attr('number'),\n\t\tcardType: _emberData.default.attr('string'),\n\t\tcardLastFour: _emberData.default.attr('string'),\n\t\thasTrialed: _emberData.default.attr('boolean'),\n\t\ttrialEndedAt: _emberData.default.attr('number'),\n\t\tnextAssessmentAt: _emberData.default.attr('number'),\n\t\tproductHandle: _emberData.default.attr('string'),\n\t\tcouponCode: _emberData.default.attr('string'),\n\t\treferralCode: _emberData.default.attr('string'),\n\t\tannualSubscriptionDate: _emberData.default.attr('number'),\n\t\tannualSubscriptionCount: _emberData.default.attr('number'),\n\t\tannualSubscriptionPendingInvoiceId: _emberData.default.attr('number'),\n\t\tsubscriptionUpdatedAt: _emberData.default.attr('number'),\n\t\tuserCanceled: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\t// subscribedThroughProduct is set to true during the subscription.upgradeToPro RPC call\n\t\t// this property is to differentiate between subscriptions created in app versus those created directly in Chargify\n\t\tsubscribedThroughProduct: _emberData.default.attr('boolean', { defaultValue: false }),\n\n\t\thasCard: Ember.computed('cardType', 'cardLastFour', function () {\n\t\t\treturn !Ember.isNone(this.get('cardType')) && !Ember.isNone(this.get('cardLastFour'));\n\t\t}),\n\n\t\tcardFormatted: Ember.computed('hasCard', 'cardType', 'cardLastFour', function () {\n\t\t\tif (!this.get('hasCard')) {\n\t\t\t\treturn '';\n\t\t\t} else if (this.get('cardType') === 'amex') {\n\t\t\t\treturn this.get('cardType') + ' **** ****** ' + this.get('cardLastFour');\n\t\t\t} else {\n\t\t\t\treturn this.get('cardType') + ' **** **** **** ' + this.get('cardLastFour');\n\t\t\t}\n\t\t}),\n\n\t\tplanType: Ember.computed('productHandle', function () {\n\t\t\treturn (/pro|enterprise/.test(this.get('productHandle')) ? 'pro' : 'free'\n\t\t\t);\n\t\t}),\n\n\t\tplanTypeFormatted: Ember.computed('isProAccount', 'isFreeTrial', 'isAnnualPlan', function () {\n\t\t\tvar plan = (0, _utils.loc)('Free');\n\t\t\tif (this.get('isProAccount')) {\n\t\t\t\tif (this.get('isFreeTrial')) {\n\t\t\t\t\tplan = (0, _utils.loc)('Pro Free Trial');\n\t\t\t\t\t// } else if (this.get('isAnnualPlan')) {\n\t\t\t\t\t// \tplan = loc('Pro (Billed Yearly)');\n\t\t\t\t} else {\n\t\t\t\t\tplan = (0, _utils.loc)('Pro');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn plan;\n\t\t}),\n\n\t\tisFreeAccount: Ember.computed('planType', function () {\n\t\t\treturn this.get('planType') === 'free';\n\t\t}),\n\n\t\tisProAccount: Ember.computed('planType', function () {\n\t\t\treturn this.get('planType') === 'pro';\n\t\t}),\n\n\t\t// enterprise accounts pro accounts with an additional flag\n\t\tisEnterpriseAccount: Ember.computed('planType', function () {\n\t\t\treturn this.get('isProAccount') && /enterprise/.test(this.get('productHandle'));\n\t\t}),\n\n\t\tisFreeTrial: Ember.computed('isProAccount', 'trialEndedAt', 'status', function () {\n\t\t\tif (this.get('isProAccount')) {\n\t\t\t\tif (this.get('status') === 'trialing' && this.get('trialEndedAt') > _utils.Time.date().unix()) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t// account is in free trial, but payment information has been provided\n\t\tisFreeTrialUpgraded: Ember.computed('isFreeTrial', 'hasCard', function () {\n\t\t\treturn this.get('isFreeTrial') && this.get('hasCard');\n\t\t}),\n\n\t\tisTrialEnded: Ember.computed('hasTrialed', 'isFreeAccount', function () {\n\t\t\treturn this.get('hasTrialed') && this.get('isFreeAccount');\n\t\t}),\n\n\t\tisTrialAvailable: Ember.computed('hasTrialed', 'isFreeAccount', function () {\n\t\t\treturn !this.get('hasTrialed') && this.get('isFreeAccount');\n\t\t}),\n\n\t\tisPastDue: Ember.computed('isFreeAccount', 'status', function () {\n\t\t\treturn !this.get('isFreeTrial') && this.get('status') === 'past_due';\n\t\t}),\n\n\t\tisLockout: Ember.computed('isFreeAccount', 'status', function () {\n\t\t\treturn !this.get('isFreeTrial') && this.get('status') === 'canceled';\n\t\t}),\n\n\t\texpiresFromNow: Ember.computed('trialEndedAt', function () {\n\t\t\treturn _utils.Time.date(this.get('trialEndedAt')).local().fromNow();\n\t\t}),\n\n\t\tisAnnualPlan: Ember.computed.bool('annualSubscriptionCount'), // if annualSubscriptionCount has a value, the organization is using an annual plan\n\t\tisMonthlyPlan: Ember.computed.not('isAnnualPlan'),\n\t\tisInvoice: Ember.computed.bool('annualSubscriptionPendingInvoiceId'),\n\n\t\t// FIXME: This is wrong and does not work. Testing that updatedOn is newer than annualSubscriptionDate is not reliable\n\t\t// if `updatedOn` is newer than `annualSubscriptionDate`, the subscription has been modified since the subscription was started\n\t\thasAnnualSubscriptionChanged: Ember.computed('updatedOn', 'annualSubscriptionDate', function () {\n\t\t\tvar updatedOn = this.get('updatedOn');\n\t\t\tvar annSubDate = this.get('annualSubscriptionDate');\n\t\t\treturn !Ember.isEmpty(annSubDate) && annSubDate < updatedOn;\n\t\t}),\n\n\t\t/*\n   * WARNING: Magic numbers to calculate payment due\n   * \tcalculations assume a trial period of 1 month\n   *\n   */\n\n\t\t// when the first payment DID happen\n\t\tfirstPaymentDate: Ember.computed('isAnnualPlan', 'isInvoice', 'trialEndedAt', 'annualSubscriptionDate', 'nextAssessmentAt', 'isFreeTrial', function () {\n\t\t\tif (this.get('isAnnualPlan')) {\n\t\t\t\tif (this.get('isInvoice')) {\n\t\t\t\t\treturn _utils.Time.date(this.get('trialEndedAt')).add(1, 'months').unix();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.get('annualSubscriptionDate');\n\t\t\t\t}\n\t\t\t} else if (this.get('isFreeTrial')) {\n\t\t\t\treturn _utils.Time.date(this.get('trialEndedAt')).add(1, 'months').unix();\n\t\t\t}\n\n\t\t\treturn this.get('nextAssessmentAt');\n\t\t}),\n\n\t\t// when the next payment WILL happen\n\t\tnextPaymentDueDate: Ember.computed('isMonthlyPlan', 'firstPaymentDate', function () {\n\t\t\tif (this.get('isMonthlyPlan')) {\n\t\t\t\treturn this.get('firstPaymentDate');\n\t\t\t} else {\n\t\t\t\treturn _utils.Time.date(this.get('firstPaymentDate')).add(1, 'years').unix();\n\t\t\t}\n\t\t})\n\t});\n});","define('busy-app/models/organization', ['exports', '@busy-web/utils', 'ember-data', 'moment'], function (exports, _utils, _emberData, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    features: Ember.inject.service('features'),\n    subscription: Ember.inject.service('subscription'),\n\n    betaTester: _emberData.default.attr('boolean'),\n    disclaimer: _emberData.default.attr('string'),\n    image: _emberData.default.attr('file'),\n    imageUrl: _emberData.default.attr('string', { restrictSend: true }),\n    imageThumbUrl: _emberData.default.attr('string', { restrictSend: true }),\n    organizationName: _emberData.default.attr('string'),\n    overtimeFlag: _emberData.default.attr('boolean'),\n    ownedBy: _emberData.default.attr('string'),\n    requireCostCode: _emberData.default.attr('boolean'),\n    requireProject: _emberData.default.attr('boolean'),\n    stripeCustomerId: _emberData.default.attr('string'),\n    totalTimeFlag: _emberData.default.attr('number'),\n    trackCostCode: _emberData.default.attr('boolean'),\n    trackProject: _emberData.default.attr('boolean'),\n    trackPaidBreak: _emberData.default.attr('boolean'),\n    trackBudgets: _emberData.default.attr('boolean'),\n    trackEquipment: _emberData.default.attr('boolean'),\n    webGps: _emberData.default.attr('boolean'),\n    timeRounding: _emberData.default.attr('boolean'),\n    timeRoundingInterval: _emberData.default.attr('number'),\n    timeRoundingType: _emberData.default.attr('number'),\n    safetySignature: _emberData.default.attr('boolean'),\n    safetySignatureMessage: _emberData.default.attr('string'),\n    timeAccuracy: _emberData.default.attr('boolean'),\n    timeAccuracyMessage: _emberData.default.attr('string'),\n    defaultStartTime: _emberData.default.attr('duration-string', { defaultValue: '07:00:00' }),\n    defaultEndTime: _emberData.default.attr('duration-string', { defaultValue: '16:00:00' }),\n    defaultBreakDuration: _emberData.default.attr('duration-string'),\n    useProjectCostCodeScoping: _emberData.default.attr('boolean', { defaultValue: false }),\n    minimumAppVersion: _emberData.default.attr('string'),\n    breakPolicy: _emberData.default.attr('boolean'),\n    breakPolicyCalifornia: _emberData.default.attr('boolean'),\n    breakPolicyMessage: _emberData.default.attr('string'),\n    busySignInQuestion: _emberData.default.attr('boolean'),\n\n    signatureDate: _emberData.default.attr('number'), // Enable Digital Signatures\n    lockOnSelfSignature: _emberData.default.attr('boolean'), // Lock Time Card on Approval\n    authoritativeSignature: _emberData.default.attr('boolean', { defaultValue: false }), // Enable Supervisor Signatures\n\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    revokedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    organizationInfo: null, //DS.belongsTo('organization-info'),\n    projects: _emberData.default.hasMany('project'),\n    costCodes: _emberData.default.hasMany('cost-code'),\n    costCodeGroups: _emberData.default.hasMany('cost-code-group'),\n\n    // deprecations moved to Subscription service\n    trialAccount: Ember.computed.deprecatingAlias('subscription.isTrialAccount', { id: 'organization-trialAccount', until: '99.0.0' }),\n\n    isLinkedCostCodesEnabled: Ember.computed.and('features.projectCostCodes', '{trackCostCode,useProjectCostCodeScoping}'),\n\n    formattedDisclaimer: Ember.computed('disclaimer', function () {\n      var disclaimer = this.get('disclaimer');\n      disclaimer = disclaimer.replace(/(\\n|\\n\\r)/g, '<br />');\n      return Ember.String.htmlSafe(disclaimer);\n    }),\n\n    timeRoundingIntervalMinutes: Ember.computed('timeRoundingInterval', function () {\n      return this.get('timeRoundingInterval') / 60;\n    }),\n\n    setOvertimeFlag: Ember.observer('totalTimeFlag', function () {\n      if (this.get('totalTimeFlag') > 0) {\n        this.set('overtimeFlag', true);\n      } else {\n        this.set('overtimeFlag', false);\n      }\n    }),\n\n    createdOnDate: Ember.computed('createdOn', function () {\n      return _utils.Time.timeFormat(this.get('createdOn'), 'MM/DD/YYYY');\n    }),\n\n    getIntegration: function getIntegration(integrationName) {\n      (true && !(integrationName) && Ember.assert('organization :: getIntegration :: \\'integrationName\\' is a required parameter', integrationName));\n\n      return this.store.queryRecord('organization-integration', { integration_name: integrationName });\n    },\n    getIntegrationStatus: function getIntegrationStatus(integrationName) {\n      (true && !(integrationName) && Ember.assert('organization :: getIntegrationStatus :: \\'integrationName\\' is a required parameter', integrationName));\n\n\n      var status = Ember.Object.create({\n        errorType: null,\n        errorMessage: null,\n        isConnected: false,\n        progress: null,\n        isInProgress: false\n      });\n\n      //  not subscribed\n      if (!this.get('subscription.subscriptionStatus.isProAccount')) {\n        return Ember.RSVP.Promise.resolve(status);\n      }\n\n      return this.getIntegration(integrationName).then(function (organizationIntegration) {\n        // not connected\n        if (Ember.isNone(organizationIntegration) || !organizationIntegration.get('enabled')) {\n          return status;\n        }\n        status.set('isConnected', true);\n        return organizationIntegration.getLastAttempt().then(function (integrationAttempt) {\n          if (!Ember.isNone(integrationAttempt)) {\n            var isInProgress = Ember.isNone(integrationAttempt.get('endTime')) && !Ember.isNone(integrationAttempt.get('progress'));\n            status.set('endTime', integrationAttempt.get('endTime'));\n            status.set('progress', integrationAttempt.get('progress'));\n            status.set('isInProgress', isInProgress);\n            if (!integrationAttempt.get('success')) {\n              status.set('errorType', integrationAttempt.get('errorType'));\n              status.set('errorMessage', integrationAttempt.get('errorMessage'));\n            }\n          }\n          return status;\n        });\n      });\n    },\n\n\n    isSignaturesEnabled: Ember.computed.bool('signatureDate'),\n\n    signatureDateTime: Ember.computed('signatureDate', function () {\n      return this.get('isSignaturesEnabled') ? _utils.Time.date(this.get('signatureDate')) : null;\n    }),\n\n    breakDurationString: Ember.computed('breakTimeHours', 'breakTimeMinutes', function () {\n      var _getProperties = this.getProperties('breakTimeHours', 'breakTimeMinutes'),\n          breakTimeHours = _getProperties.breakTimeHours,\n          breakTimeMinutes = _getProperties.breakTimeMinutes;\n\n      return padTime(breakTimeHours) + ' ' + (0, _utils.loc)('hr') + ' ' + padTime(breakTimeMinutes) + ' ' + (0, _utils.loc)('min');\n    }),\n\n    startTimeString: Ember.computed('startTimeHours', 'startTimeMinutes', function () {\n      var hour = this.get('startTimeHours');\n      var meridian = 'AM';\n      if (hour > 12) {\n        meridian = 'PM';\n        hour = hour - 12;\n      }\n      var minute = this.get('startTimeMinutes');\n      return padTime(hour) + ':' + padTime(minute) + ' ' + meridian;\n    }),\n\n    endTimeString: Ember.computed('endTimeHours', 'endTimeMinutes', function () {\n      var hour = this.get('endTimeHours');\n      var meridian = 'AM';\n      if (hour > 12) {\n        meridian = 'PM';\n        hour = hour - 12;\n      }\n      var minute = this.get('endTimeMinutes');\n      return padTime(hour) + ':' + padTime(minute) + ' ' + meridian;\n    }),\n\n    startTimeHours: Ember.computed('defaultStartTime', function () {\n      var remaining = this.get('defaultStartTime');\n      return Math.floor(remaining / 3600);\n    }),\n\n    startTimeMinutes: Ember.computed('defaultStartTime', function () {\n      var remaining = this.get('defaultStartTime');\n      return Math.floor(remaining % 3600 / 60);\n    }),\n\n    endTimeHours: Ember.computed('defaultEndTime', function () {\n      var remaining = this.get('defaultEndTime');\n      return Math.floor(remaining / 3600);\n    }),\n\n    endTimeMinutes: Ember.computed('defaultEndTime', function () {\n      var remaining = this.get('defaultEndTime');\n      return Math.floor(remaining % 3600 / 60);\n    }),\n\n    defaultBreakDurationDefault: _moment.default.duration('00:30:00').asSeconds(),\n\n    defaultBreakDurationWithFallback: Ember.computed('defaultBreakDuration', function () {\n      return Ember.isNone(this.get('defaultBreakDuration')) ? this.get('defaultBreakDurationDefault') : this.get('defaultBreakDuration');\n    }),\n\n    breakTimeHours: Ember.computed('defaultBreakDuration', function () {\n      var defaultBreakDuration = this.get('defaultBreakDurationWithFallback');\n      var seconds = defaultBreakDuration;\n      return Math.floor(seconds / 3600);\n    }),\n\n    breakTimeMinutes: Ember.computed('defaultBreakDuration', function () {\n      var defaultBreakDuration = this.get('defaultBreakDurationWithFallback');\n      var remaining = defaultBreakDuration;\n      return Math.floor(remaining % 3600 / 60);\n    }),\n\n    breakDurationSeconds: Ember.computed('defaultBreakDuration', function () {\n      return this.get('defaultBreakDurationWithFallback');\n    }),\n\n    primaryAccountHolder: Ember.computed('ownedBy', function () {\n      return _emberData.default.PromiseObject.create({\n        promise: this.store.query('member', { id: this.get('ownedBy') }).then(function (data) {\n          return data.get('firstObject');\n        })\n      });\n    })\n  });\n\n\n  var padTime = function padTime(time) {\n    return time < 10 ? '0' + time : '' + time;\n  };\n});","define('busy-app/models/pay-period-member-cost', ['exports', 'ember-data', 'moment', '@busy-web/utils'], function (exports, _emberData, _moment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tregularCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tovertimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tdoubletimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', function () {\n\t\t\t// get start and end moment objects\n\t\t\tvar start = (0, _moment.default)(this.get('startTime') * 1000);\n\t\t\tvar end = (0, _moment.default)(this.get('endTime') * 1000);\n\n\t\t\t// format the moment objects to strings\n\t\t\tstart = start.format(_utils.Locale.format('MMM D', _moment.default.locale()));\n\t\t\tend = end.format(_utils.Locale.format('MMM D, YYYY', _moment.default.locale()));\n\n\t\t\t// return the string\n\t\t\treturn start + ' - ' + end;\n\t\t}),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed.alias('regularCost'),\n\t\ttotalOvertimeCost: Ember.computed.alias('overtimeCost'),\n\t\ttotalDoubletimeCost: Ember.computed.alias('doubletimeCost'),\n\t\ttotalTotalCost: Ember.computed.alias('totalCost'),\n\n\t\t/*** deprecated ****/\n\t\tregularCostString: Ember.computed('regularCost', function () {\n\t\t\treturn this.convertDollars(this.get('regularCost') || 0);\n\t\t}),\n\n\t\tovertimeCostString: Ember.computed('overtimeCost', function () {\n\t\t\treturn this.convertDollars(this.get('overtimeCost') || 0);\n\t\t}),\n\n\t\tdoubletimeCostString: Ember.computed('doubletimeCost', function () {\n\t\t\treturn this.convertDollars(this.get('doubletimeCost') || 0);\n\t\t}),\n\n\t\ttotalCostString: Ember.computed('totalCost', function () {\n\t\t\treturn this.convertDollars(this.get('totalCost'));\n\t\t}),\n\n\t\tconvertDollars: function convertDollars(total) {\n\t\t\treturn total.toFixed(2);\n\t\t}\n\t});\n});","define('busy-app/models/pay-period-member-project-cost-code-cost', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcostCodeId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tregularCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tovertimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tdoubletimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenRegularCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenOvertimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenDoubletimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('regularCost', 'childrenRegularCost', function () {\n\t\t\treturn (this.get('regularCost') || 0) + (this.get('childrenRegularCost') || 0);\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('overtimeCost', 'childrenOvertimeCost', function () {\n\t\t\treturn (this.get('overtimeCost') || 0) + (this.get('childrenOvertimeCost') || 0);\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('doubletimeCost', 'childrenDoubletimeCost', function () {\n\t\t\treturn (this.get('doubletimeCost') || 0) + (this.get('childrenDoubletimeCost') || 0);\n\t\t}),\n\n\t\ttotalTotalCost: Ember.computed('totalRegularCost', 'totalOvertimeCost', 'totalDoubletimeCost', function () {\n\t\t\treturn this.get('totalRegularCost') + this.get('totalOvertimeCost') + this.get('totalDoubletimeCost');\n\t\t})\n\t});\n});","define('busy-app/models/pay-period-member-project-cost-code-seconds', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcostCodeId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tregularSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tovertimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tdoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenRegularSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenOvertimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenDoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\ttotalRegularSeconds: Ember.computed('regularSeconds', 'childrenRegularSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('childrenRegularSeconds');\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('overtimeSeconds', 'childrenOvertimeSeconds', function () {\n\t\t\treturn this.get('overtimeSeconds') + this.get('childrenOvertimeSeconds');\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('doubletimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('doubletimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}),\n\n\t\ttotalTotalSeconds: Ember.computed('totalRegularSeconds', 'totalOvertimeSeconds', 'totalDoubletimeSeconds', function () {\n\t\t\treturn this.get('totalRegularSeconds') + this.get('totalOvertimeSeconds') + this.get('totalDoubletimeSeconds');\n\t\t})\n\t});\n});","define('busy-app/models/pay-period-member-project-cost', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tregularCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tovertimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tdoubletimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenRegularCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenOvertimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenDoubletimeCost: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tchildrenOverburden: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('regularCost', 'childrenRegularCost', function () {\n\t\t\treturn (this.get('regularCost') || 0) + (this.get('childrenRegularCost') || 0);\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('overtimeCost', 'childrenOvertimeCost', function () {\n\t\t\treturn (this.get('overtimeCost') || 0) + (this.get('childrenOvertimeCost') || 0);\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('doubletimeCost', 'childrenDoubletimeCost', function () {\n\t\t\treturn (this.get('doubletimeCost') || 0) + (this.get('childrenDoubletimeCost') || 0);\n\t\t}),\n\n\t\ttotalTotalCost: Ember.computed('totalRegularCost', 'totalOvertimeCost', 'totalDoubletimeCost', function () {\n\t\t\treturn this.get('totalRegularCost') + this.get('totalOvertimeCost') + this.get('totalDoubletimeCost');\n\t\t}),\n\n\t\tprojectName: Ember.computed('project.title', function () {\n\t\t\treturn this.get('project.title') || '';\n\t\t}),\n\n\t\t/*** deprecated methods ***/\n\t\ttotalNoChildrenCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}),\n\n\t\ttotalCostString: Ember.computed('totalCost', function () {\n\t\t\tvar total = this.get('totalCost');\n\t\t\treturn this.convertDollars(total);\n\t\t}),\n\n\t\ttotalNoChildrenCostString: Ember.computed('totalNoChildrenCost', function () {\n\t\t\tvar total = this.get('totalNoChildrenCost');\n\t\t\treturn this.convertDollars(total);\n\t\t}),\n\n\t\tconvertDollars: function convertDollars(total) {\n\t\t\treturn total.toFixed(2);\n\t\t}\n\t});\n});","define('busy-app/models/pay-period-member-project-seconds', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'] }),\n\t\tprojectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.title'], nested: 'project.parentProjectId' }),\n\t\tstartTime: _emberData.default.attr('date', { sortable: true }),\n\t\tendTime: _emberData.default.attr('date', { sortable: true }),\n\t\tregularSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenRegularSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOvertimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenDoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\t\tdeletedOn: _emberData.default.attr('date'),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar start = _utils.Time.date(this.get('startTime'));\n\t\t\tvar end = _utils.Time.date(this.get('endTime'));\n\t\t\tvar format = 'MMM D';\n\t\t\tif (start.year() !== end.year()) {\n\t\t\t\tformat = 'MMM D, YYYY';\n\t\t\t}\n\t\t\treturn _utils.Time.dateFormat(start, format) + ' - ' + _utils.Time.dateFormat(end, 'MMM D, YYYY');\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalSeconds: Ember.computed('childrenRegularSeconds', 'childrenOvertimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('childrenRegularSeconds') + this.get('childrenOvertimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalRegularSeconds: Ember.computed('regularSeconds', 'childrenRegularSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('childrenRegularSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOvertimeSeconds: Ember.computed('overtimeSeconds', 'childrenOvertimeSeconds', function () {\n\t\t\treturn this.get('overtimeSeconds') + this.get('childrenOvertimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('doubletimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('doubletimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalSeconds: Ember.computed('totalSeconds', 'childrenTotalSeconds', function () {\n\t\t\treturn this.get('totalSeconds') + this.get('childrenTotalSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalNoChildrenSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\ttotalChildrenSeconds: Ember.computed('childrenRegularSeconds', 'childrenOvertimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('childrenRegularSeconds') + this.get('childrenOvertimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}),\n\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar seconds = this.get('regularSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar seconds = this.get('overtimeSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar seconds = this.get('doubletimeSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tchildrenRegularTimeString: Ember.computed('childrenRegularSeconds', function () {\n\t\t\tvar seconds = this.get('childrenRegularSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tchildrenOvertimeTimeString: Ember.computed('childrenOvertimeSeconds', function () {\n\t\t\tvar seconds = this.get('childrenOvertimeSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tchildrenDoubletimeTimeString: Ember.computed('childrenDoubletimeSeconds', function () {\n\t\t\tvar seconds = this.get('childrenDoubletimeSeconds') || 0;\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalRegularTimeString: Ember.computed('totalRegularSeconds', function () {\n\t\t\tvar seconds = this.get('totalRegularSeconds');\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalOvertimeTimeString: Ember.computed('totalOvertimeSeconds', function () {\n\t\t\tvar seconds = this.get('totalOvertimeSeconds');\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalDoubletimeTimeString: Ember.computed('totalDoubletimeSeconds', function () {\n\t\t\tvar seconds = this.get('totalDoubletimeSeconds');\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalTotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar seconds = this.get('totalSeconds');\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalTotalNoChildrenTimeString: Ember.computed('totalNoChildrenSeconds', function () {\n\t\t\tvar seconds = this.get('totalNoChildrenSeconds');\n\t\t\tvar time = _utils.Time.convertSeconds(seconds, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t})\n\t});\n});","define('busy-app/models/pay-period-member-seconds', ['exports', 'ember-data', 'moment', '@busy-web/utils'], function (exports, _emberData, _moment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsignatures: Ember.inject.service('signature'),\n\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tregularSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tovertimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tdoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\ttotalRegularSeconds: Ember.computed.alias('regularSeconds'),\n\t\ttotalOvertimeSeconds: Ember.computed.alias('overtimeSeconds'),\n\t\ttotalDoubletimeSeconds: Ember.computed.alias('doubletimeSeconds'),\n\t\ttotalTotalSeconds: Ember.computed.alias('totalSeconds'),\n\n\t\thasSeconds: Ember.computed.bool('totalTotalSeconds'),\n\t\thasNoSeconds: Ember.computed.not('hasSeconds'),\n\n\t\tdateRange: Ember.computed('startTime', function () {\n\t\t\tvar start = (0, _moment.default)(this.get('startTime') * 1000).add(new Date(this.get('startTime') * 1000).getTimezoneOffset(), 'minutes');\n\t\t\tvar end = (0, _moment.default)(this.get('endTime') * 1000).add(new Date(this.get('endTime') * 1000).getTimezoneOffset(), 'minutes');\n\t\t\tvar format = _utils.Locale.format(\"MMM Do\", _moment.default.locale());\n\t\t\treturn start.format(format) + \" - \" + end.format(format);\n\t\t}),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar start = _utils.Time.date(this.get('startTime'));\n\t\t\tvar end = _utils.Time.date(this.get('endTime'));\n\t\t\tvar format = 'MMM D';\n\t\t\tif (start.year() !== end.year()) {\n\t\t\t\tformat = 'MMM D, YYYY';\n\t\t\t}\n\t\t\treturn _utils.Time.dateFormat(start, format) + ' - ' + _utils.Time.dateFormat(end, 'MMM D, YYYY');\n\t\t}),\n\n\t\tregularTimeString: Ember.computed('totalRegularSeconds', function () {\n\t\t\tvar seconds = this.get('totalRegularSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\tovertimeTimeString: Ember.computed('totalOvertimeSeconds', function () {\n\t\t\tvar seconds = this.get('totalOvertimeSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\tdoubletimeTimeString: Ember.computed('totalDoubletimeSeconds', function () {\n\t\t\tvar seconds = this.get('totalDoubletimeSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalRegularSeconds', 'totalOvertimeSeconds', 'totalDoubletimeSeconds', function () {\n\t\t\tvar seconds = this.get('totalRegularSeconds') + this.get('totalOvertimeSeconds') + this.get('totalDoubletimeSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\tconvertSeconds: function convertSeconds(seconds) {\n\t\t\tvar hours = Math.floor(seconds / 60 / 60);\n\t\t\tvar minutes = Math.floor((seconds - hours * 60 * 60) / 60);\n\t\t\treturn (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes);\n\t\t},\n\n\n\t\t/**\n  \t * Is the signing feature enabled, signing enabled on the organization, and is this payperiod eligible for signing.\n  \t * Assumes the pay period is attached to the organization of the curent logged in member.\n  \t *\n  \t * @public\n  \t * @method isSignable\n  \t * @return {boolean}\n  \t */\n\t\tisSignable: Ember.computed('features.signatures', 'auth.organization.{isSignaturesEnabled,signatureDate}', 'endTime', function () {\n\t\t\tif (!this.get('features.signatures') || !this.get('auth.organization.isSignaturesEnabled')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar signatureDate = this.get('auth.organization.signatureDate');\n\t\t\tvar payPeriodEndTime = this.get('endTime');\n\t\t\tvar startOfToday = _utils.Time.date().startOf('day').unix();\n\t\t\treturn payPeriodEndTime >= signatureDate && payPeriodEndTime < startOfToday;\n\t\t})\n\t});\n});","define('busy-app/models/pay-period-verification', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tsignatureId: _emberData.default.attr('string'),\n\t\tcanceled: _emberData.default.attr('boolean'),\n\t\tsignedOnLocal: _emberData.default.attr('number'),\n\t\tsignedOnGmt: _emberData.default.attr('number'),\n\t\tsignedOnOffset: _emberData.default.attr('number'),\n\t\tedited: _emberData.default.attr('boolean'),\n\t\tregularSeconds: _emberData.default.attr('number'),\n\t\tovertimeSeconds: _emberData.default.attr('number'),\n\t\tdoubletimeSeconds: _emberData.default.attr('number'),\n\t\tregularCost: _emberData.default.attr('number'),\n\t\tovertimeCost: _emberData.default.attr('number'),\n\t\tdoubletimeCost: _emberData.default.attr('number'),\n\t\twage: _emberData.default.attr('number'),\n\t\twageRate: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsignatureUrl: _emberData.default.attr('string'),\n\t\tsignatureThumbUrl: _emberData.default.attr('string'),\n\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar seconds = this.get('regularSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar seconds = this.get('overtimeSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('regularSeconds', 'overtimeSeconds', function () {\n\t\t\tvar seconds = this.get('regularSeconds') + this.get('overtimeSeconds');\n\t\t\treturn this.convertSeconds(seconds);\n\t\t}),\n\n\t\tdateRequested: Ember.computed('createdOn', function () {\n\t\t\treturn (0, _utils.loc)('Requested On %@', [_utils.Time.timeFormat(this.get('verification.createdOn'), 'MMM D, YYYY')]);\n\t\t}),\n\n\t\twageString: Ember.computed('wage', 'wageRate', function () {\n\t\t\tvar wageRate = this.get('wageRate');\n\t\t\tvar wageString = this.get('wage').toFixed(2);\n\t\t\tif (!Ember.isNone(this.get('wage'))) {\n\t\t\t\tif (wageRate === 10) {\n\t\t\t\t\twageString = '$' + wageString + (0, _utils.loc)('/hour');\n\t\t\t\t} else if (wageRate === 20) {\n\t\t\t\t\twageString = '$' + wageString + (0, _utils.loc)('/week');\n\t\t\t\t} else if (wageRate === 30) {\n\t\t\t\t\twageString = '$' + wageString + \" \" + (0, _utils.loc)('Semimonthly');\n\t\t\t\t} else if (wageRate === 40) {\n\t\t\t\t\twageString = '$' + wageString + \" \" + (0, _utils.loc)('Monthly');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn wageString;\n\t\t}),\n\n\t\tconvertSeconds: function convertSeconds(seconds) {\n\t\t\tvar hours = Math.floor(seconds / 60 / 60);\n\t\t\tvar minutes = Math.floor((seconds - hours * 60 * 60) / 60);\n\t\t\treturn (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes);\n\t\t}\n\t});\n});","define('busy-app/models/position', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\ttitle: _emberData.default.attr('string'),\n\t\tlevel: _emberData.default.attr('number'),\n\n\t\tcanEditPosition: _emberData.default.attr('boolean', { defaultValue: true }),\n\t\tmanageBudgets: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageProjects: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageProjectGroups: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageCostCodes: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tviewMemberExpenses: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tlockPayPeriods: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tviewProjectExpenses: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageCompanySettings: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageEmployeeGroups: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tviewEquipmentStatus: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tviewEquipmentDetails: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tmanageEquipment: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tviewAllActivityReport: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tscopeByGroup: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tdailyProjectPrompts: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tdailyProjectPromptsUseSubprojects: _emberData.default.attr('boolean', { defaultValue: false }),\n\n\t\tmanageMediaCollection: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\trequestSignatures: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tmanageEmployees: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\ttimeEvents: _emberData.default.attr('number', { defaultValue: 1 }),\n\t\tmanageTimeEntries: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tmemberLock: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tviewMemberActivityReport: _emberData.default.attr('number', { defaultValue: 1 }),\n\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tmembers: _emberData.default.hasMany('member', { query: { archived_on: null } }),\n\n\t\tmanageTimeWatcher: Ember.observer('manageTimeEntries', function () {\n\t\t\tif (this.get('manageTimeEntries') > this.get('timeEvents')) {\n\t\t\t\tthis.set('timeEvents', this.get('manageTimeEntries'));\n\t\t\t}\n\t\t}),\n\n\t\ttimeEventsWatcher: Ember.observer('timeEvents', function () {\n\t\t\tvar timeEvents = this.get('timeEvents') || 0;\n\t\t\ttimeEvents = timeEvents >= 8 ? timeEvents - 8 : timeEvents;\n\t\t\ttimeEvents = timeEvents >= 4 ? timeEvents - 4 : timeEvents;\n\t\t\ttimeEvents = timeEvents >= 2 ? timeEvents - 2 : timeEvents;\n\n\t\t\tif (timeEvents !== 1) {\n\t\t\t\tthis.set('timeEvents', (this.get('timeEvents') || 0) + 1);\n\t\t\t}\n\t\t}),\n\n\t\tparseSetting: function parseSetting(value) {\n\t\t\tvar higher = value >= 8;\n\t\t\tvalue %= 8;\n\n\t\t\tvar same = value >= 4;\n\t\t\tvalue %= 4;\n\n\t\t\tvar lower = value >= 2;\n\t\t\tvalue %= 2;\n\n\t\t\tvar self = value >= 1;\n\n\t\t\treturn {\n\t\t\t\thigher: higher,\n\t\t\t\tsame: same,\n\t\t\t\tlower: lower,\n\t\t\t\tself: self\n\t\t\t};\n\t\t},\n\n\n\t\t/**\n   * there is only one view expenses setting\n   * so set member expenses to the same as project expenses\n   *\n   */\n\t\tsetMemberExpenses: Ember.observer('viewProjectExpenses', function () {\n\t\t\tthis.set('viewMemberExpenses', this.get('viewProjectExpenses'));\n\t\t}),\n\n\t\tsetProjectGroups: Ember.observer('manageProjects', function () {\n\t\t\tthis.set('manageProjectGroups', this.get('manageProjects'));\n\t\t})\n\t});\n});","define('busy-app/models/project-annual-cost', ['exports', 'ember-data', 'busy-app/models/project-day-cost'], function (exports, _emberData, _projectDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/project-annual-seconds', ['exports', 'ember-data', 'busy-app/models/project-day-seconds'], function (exports, _emberData, _projectDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"annual\",\n\n    startDate: _emberData.default.attr('date', { format: 'YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/project-cost-budget', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcostBudget: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tcreatedOn: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('string'),\n\t\tdeletedOn: _emberData.default.attr('string'),\n\t\tsubmittedOn: _emberData.default.attr('string'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tcost: Ember.computed('costBudget', function () {\n\t\t\treturn parseFloat(this.get('costBudget'));\n\t\t})\n\t});\n});","define('busy-app/models/project-cost-code-link', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    projectId: _emberData.default.attr('id'),\n    costCodeId: _emberData.default.attr('id'),\n\n    updatedOn: _emberData.default.attr('date'),\n    createdOn: _emberData.default.attr('date'),\n    submittedOn: _emberData.default.attr('date'),\n    deletedOn: _emberData.default.attr('date'),\n\n    costCode: _emberData.default.belongsTo('cost-code'),\n    project: _emberData.default.belongsTo('project')\n  });\n});","define('busy-app/models/project-cost', ['exports', 'ember-data', 'busy-app/utils/unique-id'], function (exports, _emberData, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('startDate', 'endDate', 'projectId'),\n\n\t\tprojectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.title'], nested: 'project.parentProjectId' }),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true }),\n\t\tendDate: _emberData.default.attr('date', { sortable: true }),\n\t\tregularCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenRegularCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOvertimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenDoubletimeCost: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalCost: Ember.computed('childrenRegularCost', 'childrenOvertimeCost', 'childrenDoubletimeCost', function () {\n\t\t\treturn this.get('childrenRegularCost') + this.get('childrenOvertimeCost') + this.get('childrenDoubletimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalOverburdenCost: Ember.computed('childrenTotalCost', 'childrenOverburden', function () {\n\t\t\treturn this.get('childrenTotalCost') + this.get('childrenOverburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalRegularCost: Ember.computed('regularCost', 'childrenRegularCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('childrenRegularCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOvertimeCost: Ember.computed('overtimeCost', 'childrenOvertimeCost', function () {\n\t\t\treturn this.get('overtimeCost') + this.get('childrenOvertimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalDoubletimeCost: Ember.computed('doubletimeCost', 'childrenDoubletimeCost', function () {\n\t\t\treturn this.get('doubletimeCost') + this.get('childrenDoubletimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburden: Ember.computed('overburden', 'childrenOverburden', function () {\n\t\t\treturn this.get('overburden') + this.get('childrenOverburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalCost: Ember.computed('totalCost', 'childrenTotalCost', function () {\n\t\t\treturn this.get('totalCost') + this.get('childrenTotalCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalOverburdenCost: Ember.computed('totalTotalCost', 'childrenTotalOverburdenCost', function () {\n\t\t\treturn this.get('totalOverburdenCost') + this.get('childrenTotalOverburdenCost');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/project-day-cost', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'projectId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tprojectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.title'], nested: 'project.parentProjectId' }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'], reverseSort: true, sortChildren: ['project.title', 'startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenRegular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOvertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenDoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOverburden: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularCost: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\t\tchildrenRegularCost: Ember.computed.alias('childrenRegular').meta({ aggregateType: 'sum' }),\n\t\tchildrenOvertimeCost: Ember.computed.alias('childrenOvertime').meta({ aggregateType: 'sum' }),\n\t\tchildrenDoubletimeCost: Ember.computed.alias('childrenDoubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalCost: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalCost: Ember.computed('childrenRegular', 'childrenOvertime', 'childrenDoubletime', function () {\n\t\t\treturn this.get('childrenRegular') + this.get('childrenOvertime') + this.get('childrenDoubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalOverburdenCost: Ember.computed('childrenTotalCost', 'childrenOverburden', function () {\n\t\t\treturn this.get('childrenTotalCost') + this.get('childrenOverburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalRegularCost: Ember.computed('regular', 'childrenRegular', function () {\n\t\t\treturn this.get('regular') + this.get('childrenRegular');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOvertimeCost: Ember.computed('overtime', 'childrenOvertime', function () {\n\t\t\treturn this.get('overtime') + this.get('childrenOvertime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalDoubletimeCost: Ember.computed('doubletime', 'childrenDoubletime', function () {\n\t\t\treturn this.get('doubletime') + this.get('childrenDoubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburden: Ember.computed('overburden', 'childrenOverburden', function () {\n\t\t\treturn this.get('overburden') + this.get('childrenOverburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalCost: Ember.computed('totalCost', 'childrenTotalCost', function () {\n\t\t\treturn this.get('totalCost') + this.get('childrenTotalCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburden', function () {\n\t\t\treturn this.get('totalCost') + this.get('overburden');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalOverburdenCost: Ember.computed('totalTotalCost', 'childrenTotalOverburdenCost', function () {\n\t\t\treturn this.get('totalOverburdenCost') + this.get('childrenTotalOverburdenCost');\n\t\t}).meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/project-day-seconds', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/unique-id'], function (exports, _emberData, _utils, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('type', 'startDate', 'projectId'),\n\n\t\t// used to differentiate uid for month and day models\n\t\ttype: \"day\",\n\n\t\tprojectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.title'], nested: 'project.parentProjectId' }),\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tstartDate: _emberData.default.attr('date', { sortable: true, sortBy: ['startDate'], reverseSort: true, sortChildren: ['project.title', 'startDate'] }),\n\t\tregular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenRegular: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOvertime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenDoubletime: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tcost: null,\n\n\t\tstartDateFormatted: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).format('MMM D');\n\t\t}),\n\n\t\tstartOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).startOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tendOfWeek: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.date(this.get('startDate')).endOf('week').format('MM/D/YY');\n\t\t}),\n\n\t\tweekRangeFormatted: Ember.computed('startOfWeek', function () {\n\t\t\treturn this.get('startOfWeek') + ' - ' + this.get('endOfWeek');\n\t\t}),\n\n\t\tregularSeconds: Ember.computed.alias('regular').meta({ aggregateType: 'sum' }),\n\t\tovertimeSeconds: Ember.computed.alias('overtime').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: Ember.computed.alias('doubletime').meta({ aggregateType: 'sum' }),\n\t\tchildrenRegularSeconds: Ember.computed.alias('childrenRegular').meta({ aggregateType: 'sum' }),\n\t\tchildrenOvertimeSeconds: Ember.computed.alias('childrenOvertime').meta({ aggregateType: 'sum' }),\n\t\tchildrenDoubletimeSeconds: Ember.computed.alias('childrenDoubletime').meta({ aggregateType: 'sum' }),\n\n\t\ttotalSeconds: Ember.computed('regular', 'overtime', 'doubletime', function () {\n\t\t\treturn this.get('regular') + this.get('overtime') + this.get('doubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalSeconds: Ember.computed('childrenRegular', 'childrenOvertime', 'childrenDoubletime', function () {\n\t\t\treturn this.get('childrenRegular') + this.get('childrenOvertime') + this.get('childrenDoubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalRegularSeconds: Ember.computed('regular', 'childrenRegular', function () {\n\t\t\treturn this.get('regular') + this.get('childrenRegular');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOvertimeSeconds: Ember.computed('overtime', 'childrenOvertime', function () {\n\t\t\treturn this.get('overtime') + this.get('childrenOvertime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('doubletime', 'childrenDoubletime', function () {\n\t\t\treturn this.get('doubletime') + this.get('childrenDoubletime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalSeconds: Ember.computed('totalSeconds', 'childrenTotalSeconds', function () {\n\t\t\treturn this.get('totalSeconds') + this.get('childrenTotalSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' }),\n\n\t\tchildrenOverburden: Ember.computed.alias('cost.childrenOverburden').meta({ aggregateType: 'sum' }),\n\t\tchildrenRegularCost: Ember.computed.alias('cost.childrenRegularCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenOvertimeCost: Ember.computed.alias('cost.childrenOvertimeCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenDoubletimeCost: Ember.computed.alias('cost.childrenDoubletimeCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenTotalCost: Ember.computed.alias('cost.childrenTotalCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenTotalOverburdenCost: Ember.computed.alias('cost.childrenTotalOverburdenCost').meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburden: Ember.computed.alias('cost.totalOverburden').meta({ aggregateType: 'sum' }),\n\t\ttotalRegularCost: Ember.computed.alias('cost.totalRegularCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOvertimeCost: Ember.computed.alias('cost.totalOvertimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalDoubletimeCost: Ember.computed.alias('cost.totalDoubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalTotalCost: Ember.computed.alias('cost.totalTotalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalTotalOverburdenCost: Ember.computed.alias('cost.totalTotalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/project-equipment-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id', 'busy-app/models/project-seconds'], function (exports, _emberData, _uniqueId, _projectSeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectSeconds.default.extend({\n    // used to match seconds and cost models\n    uid: (0, _uniqueId.default)('startDate', 'endDate', 'projectId', 'equipmentId'),\n\n    // add equipment id and model\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'] }),\n\n    // override model injections\n    equipment: _emberData.default.belongsTo('equipment', { query: { deleted_on: '_-DISABLE-_' } })\n  });\n});","define('busy-app/models/project-group', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    groupName: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/project-hours-budget', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tbudgetSeconds: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\tcreatedOn: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('string'),\n\t\tdeletedOn: _emberData.default.attr('string'),\n\t\tsubmittedOn: _emberData.default.attr('string'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tseconds: Ember.computed('budgetSeconds', function () {\n\t\t\tvar seconds = parseFloat(this.get('budgetSeconds'));\n\t\t\treturn seconds;\n\t\t}),\n\n\t\thours: Ember.computed('seconds', function () {\n\t\t\treturn (this.get('seconds') / 3600).toFixed(2);\n\t\t})\n\t});\n});","define('busy-app/models/project-info', ['exports', 'ember-data', 'busy-app/utils/maps'], function (exports, _emberData, _maps) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tprojectId: _emberData.default.attr('string'),\n\t\tcustomer: _emberData.default.attr('string'),\n\t\tnumber: _emberData.default.attr('string'),\n\t\treminder: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tlongitude: _emberData.default.attr('number'),\n\t\tlatitude: _emberData.default.attr('number'),\n\t\tlocationRadius: _emberData.default.attr('number'),\n\t\taddress1: _emberData.default.attr('string'),\n\t\taddress2: _emberData.default.attr('string'),\n\t\tcity: _emberData.default.attr('string'),\n\t\tcounty: _emberData.default.attr('string'),\n\t\tstate: _emberData.default.attr('string'),\n\t\tpostalCode: _emberData.default.attr('string'),\n\t\trequireTimeEntryGps: _emberData.default.attr('string'),\n\t\tphone: _emberData.default.attr('string'),\n\t\tcountry: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeleteOn: _emberData.default.attr('number'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tcoords: Ember.computed('latitude', 'longitude', function () {\n\t\t\treturn [this.get('latitude'), this.get('longitude')];\n\t\t}),\n\n\t\trequireGPS: Ember.computed('requireTimeEntryGps', function () {\n\t\t\tvar requireTimeEntryGps = this.get('requireTimeEntryGps');\n\t\t\treturn requireTimeEntryGps === 'self' || requireTimeEntryGps === 'self_and_children';\n\t\t}),\n\n\t\trequireGpsSubProjects: Ember.computed('requireTimeEntryGps', function () {\n\t\t\tvar requireTimeEntryGps = this.get('requireTimeEntryGps');\n\t\t\treturn requireTimeEntryGps === 'children' || requireTimeEntryGps === 'self_and_children';\n\t\t}),\n\n\t\tlocationString: Ember.computed('address1', 'city', 'state', 'postalCode', 'country', function () {\n\t\t\tvar address = '';\n\t\t\tif (!Ember.isNone(this.get('address1'))) {\n\t\t\t\taddress += this.get('address1') + ', ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('city'))) {\n\t\t\t\taddress += this.get('city') + ', ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('state'))) {\n\t\t\t\taddress += this.get('state') + ', ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('postalCode'))) {\n\t\t\t\taddress += this.get('postalCode') + ', ';\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('country'))) {\n\t\t\t\taddress += this.get('country');\n\t\t\t}\n\t\t\treturn address.replace(/, $/, '');\n\t\t}),\n\n\t\thasLocation: Ember.computed('longitude', 'latitude', function () {\n\t\t\tif (!Ember.isNone(this.get('longitude')) && !Ember.isNone(this.get('latitude'))) {\n\t\t\t\tvar location = (0, _maps.normalizeLocation)(this);\n\t\t\t\tif ((0, _maps.isValidLatLng)(location)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tclearGeolocation: function clearGeolocation() {\n\t\t\tthis.setProperties({\n\t\t\t\treminder: null,\n\t\t\t\tlocationRadius: null,\n\t\t\t\tlongitude: null,\n\t\t\t\tlatitude: null\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/models/project-lookup', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    parentId: _emberData.default.attr('string'),\n    childId: _emberData.default.attr('string'),\n    isDirect: _emberData.default.attr('boolean'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    parent: _emberData.default.belongsTo('project', { inverse: null, referenceKey: 'parentId', foreignKey: 'id' }),\n    child: _emberData.default.belongsTo('project', { inverse: null, referenceKey: 'childId', foreignKey: 'id' })\n  });\n});","define('busy-app/models/project-month-cost', ['exports', 'ember-data', 'busy-app/models/project-day-cost'], function (exports, _emberData, _projectDayCost) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectDayCost.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/project-month-seconds', ['exports', 'ember-data', 'busy-app/models/project-day-seconds'], function (exports, _emberData, _projectDaySeconds) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _projectDaySeconds.default.extend({\n    // used to differentiate uid for month and day models\n    type: \"month\",\n\n    startDate: _emberData.default.attr('date', { format: 'MM-YYYY', sortable: true, sortBy: ['startDate'] })\n  });\n});","define('busy-app/models/project-seconds', ['exports', 'ember-data', 'busy-app/utils/unique-id'], function (exports, _emberData, _uniqueId) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\t// used to match seconds and cost models\n\t\tuid: (0, _uniqueId.default)('startDate', 'endDate', 'projectId'),\n\n\t\tprojectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.title'], nested: 'project.parentProjectId' }),\n\t\tstartDate: _emberData.default.attr('number'),\n\t\tendDate: _emberData.default.attr('number'),\n\t\tregularSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tovertimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenRegularSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenOvertimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tchildrenDoubletimeSeconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tproject: _emberData.default.belongsTo('project'),\n\n\t\tcost: null,\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tchildrenTotalSeconds: Ember.computed('childrenRegularSeconds', 'childrenOvertimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('childrenRegularSeconds') + this.get('childrenOvertimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalRegularSeconds: Ember.computed('regularSeconds', 'childrenRegularSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('childrenRegularSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalOvertimeSeconds: Ember.computed('overtimeSeconds', 'childrenOvertimeSeconds', function () {\n\t\t\treturn this.get('overtimeSeconds') + this.get('childrenOvertimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('doubletimeSeconds', 'childrenDoubletimeSeconds', function () {\n\t\t\treturn this.get('doubletimeSeconds') + this.get('childrenDoubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalTotalSeconds: Ember.computed('totalSeconds', 'childrenTotalSeconds', function () {\n\t\t\treturn this.get('totalSeconds') + this.get('childrenTotalSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\toverburden: Ember.computed.alias('cost.overburden').meta({ aggregateType: 'sum' }),\n\t\tregularCost: Ember.computed.alias('cost.regularCost').meta({ aggregateType: 'sum' }),\n\t\tovertimeCost: Ember.computed.alias('cost.overtimeCost').meta({ aggregateType: 'sum' }),\n\t\tdoubletimeCost: Ember.computed.alias('cost.doubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalCost: Ember.computed.alias('cost.totalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOverburdenCost: Ember.computed.alias('cost.totalOverburdenCost').meta({ aggregateType: 'sum' }),\n\n\t\tchildrenOverburden: Ember.computed.alias('cost.childrenOverburden').meta({ aggregateType: 'sum' }),\n\t\tchildrenRegularCost: Ember.computed.alias('cost.childrenRegularCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenOvertimeCost: Ember.computed.alias('cost.childrenOvertimeCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenDoubletimeCost: Ember.computed.alias('cost.childrenDoubletimeCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenTotalCost: Ember.computed.alias('cost.childrenTotalCost').meta({ aggregateType: 'sum' }),\n\t\tchildrenTotalOverburdenCost: Ember.computed.alias('cost.childrenTotalOverburdenCost').meta({ aggregateType: 'sum' }),\n\n\t\ttotalOverburden: Ember.computed.alias('cost.totalOverburden').meta({ aggregateType: 'sum' }),\n\t\ttotalRegularCost: Ember.computed.alias('cost.totalRegularCost').meta({ aggregateType: 'sum' }),\n\t\ttotalOvertimeCost: Ember.computed.alias('cost.totalOvertimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalDoubletimeCost: Ember.computed.alias('cost.totalDoubletimeCost').meta({ aggregateType: 'sum' }),\n\t\ttotalTotalCost: Ember.computed.alias('cost.totalTotalCost').meta({ aggregateType: 'sum' }),\n\t\ttotalTotalOverburdenCost: Ember.computed.alias('cost.totalTotalOverburdenCost').meta({ aggregateType: 'sum' })\n\t});\n});","define('busy-app/models/project', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Models\n  *\n  */\n\t//import { all } from 'rsvp';\n\tvar kFullTitleDelimiter = ' / ';\n\n\t/**\n  * `Model/Project`\n  *\n  * @class Project\n  * @namespace Models\n  * @extends DS.Model\n  */\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('id'),\n\t\tparentProjectId: _emberData.default.attr('id', { sortable: true, sortBy: ['parentProject.title'] }),\n\t\trootProjectId: _emberData.default.attr('id'),\n\t\ttitle: _emberData.default.attr('string'),\n\t\tdepth: _emberData.default.attr('number'),\n\t\timageUrl: _emberData.default.attr('string'),\n\t\timageThumbUrl: _emberData.default.attr('string'),\n\t\ttaskLoggable: _emberData.default.attr('boolean', { defaultValue: true }),\n\t\ttimeLoggable: _emberData.default.attr('boolean', { defaultValue: true }),\n\t\tallAccess: _emberData.default.attr('boolean', { defaultValue: true }),\n\t\tprojectGroupId: _emberData.default.attr('string'),\n\t\tpercentComplete: _emberData.default.attr('number'),\n\t\trevokedOn: _emberData.default.attr('date'),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tarchivedOn: _emberData.default.attr('date'),\n\t\tcreatedOn: _emberData.default.attr('date'),\n\n\t\trootProject: _emberData.default.belongsTo('project', { inverse: null, referenceKey: 'rootProjectId', foreignKey: 'id' }),\n\t\tparentProject: _emberData.default.belongsTo('project', { inverse: null, referenceKey: 'parentProjectId', foreignKey: 'id' }),\n\t\tprojectCostCodeLinks: _emberData.default.hasMany('project-cost-code-link'),\n\n\t\tfullTitleDelimiter: kFullTitleDelimiter,\n\n\t\tsubprojects: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.id)) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.findAll('project', { _asc: ['title'], parent_project_id: this.get('id'), deleted_on: null })\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\t\t// projectCostCodeLinks: computed('id', function() {\n\t\t// \tif (!isNone(this.get('id'))) {\n\t\t// \t\treturn DS.PromiseArray.create({\n\t\t// \t\t\tpromise: this.store.findAll('project-cost-code-links', { project_id: this.get('id'), deleted_on: null })\n\t\t// \t\t});\n\t\t// \t}\n\t\t// }),\n\n\t\tprojectInfo: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.id)) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.query('project-info', { project_id: this.get('id') }).then(function (data) {\n\t\t\t\t\t\treturn data.get('firstObject');\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tparentProjects: Ember.computed('id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.id)) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.query('project-lookup', { child_id: this.id }).then(function (lookups) {\n\t\t\t\t\t\treturn _this.store.findByIds('project', lookups.map(function (l) {\n\t\t\t\t\t\t\treturn l.get('parentId');\n\t\t\t\t\t\t}));\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tprojectNumber: Ember.computed('projectInfo.number', function () {\n\t\t\treturn this.get('projectInfo.number');\n\t\t}),\n\n\t\tpayPeriodHours: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.get('id'))) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.findAll('project-seconds', {\n\t\t\t\t\t\tstart_date: _utils.Time.date().subtract(10, 'years').unix(),\n\t\t\t\t\t\tend_date: _utils.Time.date().add(10, 'years').unix(),\n\t\t\t\t\t\tproject_id: this.get('id'),\n\t\t\t\t\t\tlimit: 10000\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\tpayPeriodCost: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.get('id'))) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.findAll('project-cost', {\n\t\t\t\t\t\tstart_date: _utils.Time.date().subtract(10, 'years').unix(),\n\t\t\t\t\t\tend_date: _utils.Time.date().add(10, 'years').unix(),\n\t\t\t\t\t\tproject_id: this.get('id'),\n\t\t\t\t\t\tlimit: 10000\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\n\t\tisTopLevelProject: Ember.computed('rootProjectId', function () {\n\t\t\treturn this.get('id') === this.get('rootProjectId');\n\t\t}),\n\n\t\timagePlaceholder: Ember.computed(function () {\n\t\t\treturn '/images/imageplaceholder.png';\n\t\t}),\n\n\t\tfolderImage: Ember.computed(function () {\n\t\t\treturn '/images/icons/sprite-80-old.png';\n\t\t}),\n\n\t\t/**\n   * subProjects and hasChildren are for the project selector\n   * dont change or edit or use for other cases.\n   *\n   */\n\t\thasChildren: Ember.computed('children.{@each.id,[],length}', function () {\n\t\t\treturn this.get('children.length') > 0 ? true : false;\n\t\t}),\n\n\t\tchildren: Ember.computed('subprojects.@each.id', function () {\n\t\t\treturn this.get('subprojects');\n\t\t}),\n\n\t\tregularSeconds: Ember.computed('payPeriodHours.@each.regularSeconds', function () {\n\t\t\treturn this.get('payPeriodHours').mapBy('regularSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('payPeriodHours.@each.overtimeSeconds', function () {\n\t\t\treturn this.get('payPeriodHours').mapBy('overtimeSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('payPeriodHours.@each.doubletimeSeconds', function () {\n\t\t\treturn this.get('payPeriodHours').mapBy('doubletimeSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('payPeriodHours.@each.totalSeconds', function () {\n\t\t\treturn this.get('payPeriodHours').mapBy('totalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalHours: Ember.computed('totalSeconds', function () {\n\t\t\treturn Math.round(this.get('totalSeconds') / 3600 * 10 / 10);\n\t\t}),\n\n\t\ttotalTotalSeconds: Ember.computed('payPeriodHours.@each.totalTotalSeconds', function () {\n\t\t\treturn this.get('payPeriodHours').mapBy('totalTotalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalTotalHours: Ember.computed('totalTotalSeconds', function () {\n\t\t\treturn Math.round(this.get('totalTotalSeconds') / 3600 * 10) / 10;\n\t\t}),\n\n\t\ttotalCost: Ember.computed('payPeriodCost.@each.totalCost', function () {\n\t\t\treturn this.get('payPeriodCost').mapBy('totalCost').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalTotalCost: Ember.computed('payPeriodCost.@each.totalTotalCost', function () {\n\t\t\treturn this.get('payPeriodCost').mapBy('totalTotalCost').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalTotalOverburdenCost: Ember.computed('payPeriodCost.@each.totalTotalOverburdenCost', function () {\n\t\t\treturn this.get('payPeriodCost').mapBy('totalTotalOverburdenCost').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\tdepthString: Ember.computed('depth', function () {\n\t\t\tif (this.get('depth') === 1) {\n\t\t\t\treturn (0, _utils.loc)('one');\n\t\t\t} else if (this.get('depth') === 2) {\n\t\t\t\treturn (0, _utils.loc)('two');\n\t\t\t} else if (this.get('depth') === 3) {\n\t\t\t\treturn (0, _utils.loc)('three');\n\t\t\t} else if (this.get('depth') === 4) {\n\t\t\t\treturn (0, _utils.loc)('four');\n\t\t\t} else if (this.get('depth') === 5) {\n\t\t\t\treturn (0, _utils.loc)('five');\n\t\t\t} else if (this.get('depth') === 6) {\n\t\t\t\treturn (0, _utils.loc)('six');\n\t\t\t} else if (this.get('depth') === 7) {\n\t\t\t\treturn (0, _utils.loc)('seven');\n\t\t\t}\n\t\t}),\n\n\t\tmatchTitle: Ember.computed('title', function () {\n\t\t\treturn this.get('title').toLowerCase();\n\t\t}),\n\n\t\tfullTitle: Ember.computed('title', 'fullTitleDelimiter', 'parentProject.fullTitle', function () {\n\t\t\tvar fullTitleDelimiter = this.get('fullTitleDelimiter');\n\n\t\t\tvar title = this.get('title');\n\t\t\tif (!Ember.isNone(this.get('parentProject.fullTitle'))) {\n\t\t\t\ttitle = this.get('parentProject.fullTitle') + fullTitleDelimiter + title;\n\t\t\t}\n\n\t\t\treturn title;\n\t\t}),\n\n\t\t/*** budget hours and cost ***/\n\n\t\tprojectHoursBudget: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.get('id'))) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.query('project-hours-budget', { project_id: this.get('id'), _desc: ['created_on'], deleted_on: '_-NULL-_' })\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tbudgetHoursModel: Ember.computed('projectHoursBudget.firstObject', function () {\n\t\t\treturn this.get('projectHoursBudget.firstObject') || {};\n\t\t}),\n\n\t\tprojectCostBudget: Ember.computed('id', function () {\n\t\t\tif (!Ember.isNone(this.get('id'))) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.query('project-cost-budget', { project_id: this.get('id'), _desc: ['created_on'], deleted_on: '_-NULL-_' })\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tbudgetCostModel: Ember.computed('projectCostBudget.firstObject', function () {\n\t\t\treturn this.get('projectCostBudget.firstObject') || {};\n\t\t}),\n\n\t\tbudgetSeconds: Ember.computed('budgetHoursModel.seconds', function () {\n\t\t\treturn this.get('budgetHoursModel.seconds') || 0;\n\t\t}),\n\n\t\tbudgetHours: Ember.computed('budgetHoursModel.seconds', function () {\n\t\t\treturn (this.get('budgetHoursModel.seconds') || 0) / 3600;\n\t\t}),\n\n\t\tbudgetCost: Ember.computed('budgetCostModel.cost', function () {\n\t\t\treturn this.get('budgetCostModel.cost') || 0;\n\t\t}),\n\n\t\tsubprojectsTotalBudgetSeconds: Ember.computed('subprojects.@each.budgetSeconds', function () {\n\t\t\tif (!Ember.isEmpty(this.get('subprojects'))) {\n\t\t\t\treturn this.get('subprojects').mapBy('budgetSeconds').map(function (v) {\n\t\t\t\t\treturn parseFloat(v);\n\t\t\t\t}).reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}),\n\n\t\tsubprojectsTotalBudgetCost: Ember.computed('subprojects.@each.budgetCost', function () {\n\t\t\tif (!Ember.isEmpty(this.get('subprojects'))) {\n\t\t\t\treturn this.get('subprojects').mapBy('budgetCost').map(function (v) {\n\t\t\t\t\treturn parseFloat(v);\n\t\t\t\t}).reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}),\n\n\t\tremainingBudgetSeconds: Ember.computed('subprojectsTotalBudgetSeconds', 'budgetSeconds', function () {\n\t\t\treturn this.get('budgetSeconds') - this.get('subprojectsTotalBudgetSeconds');\n\t\t}),\n\n\t\tremainingBudgetCost: Ember.computed('subprojectsTotalBudgetCost', 'budgetCost', function () {\n\t\t\treturn this.get('budgetCost') - this.get('subprojectsTotalBudgetCost');\n\t\t}),\n\n\t\tremainingTotalSeconds: Ember.computed('totalTotalSeconds', 'budgetSeconds', function () {\n\t\t\treturn this.get('budgetSeconds') - this.get('totalTotalSeconds');\n\t\t}),\n\n\t\tremainingTotalCost: Ember.computed('totalTotalCost', 'budgetCost', function () {\n\t\t\treturn this.get('budgetCost') - this.get('totalTotalCost');\n\t\t}),\n\n\t\tremainingTotalOverburdenCost: Ember.computed('totalTotalOverburdenCost', 'budgetCost', function () {\n\t\t\treturn this.get('budgetCost') - this.get('totalTotalOverburdenCost');\n\t\t})\n\t});\n});","define('busy-app/models/quickbooks-payroll-item-wage', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tlistId: _emberData.default.attr('string'),\n\t\torganizationId: _emberData.default.attr('string'),\n\t\twageItemName: _emberData.default.attr('string'),\n\t\ttimeCreated: _emberData.default.attr('number'),\n\t\ttimeModified: _emberData.default.attr('number'),\n\t\twageType: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\twageTypeFormatted: Ember.computed('wageType', function () {\n\t\t\tvar typeName = '';\n\t\t\tif (!Ember.isNone(this.get('wageType'))) {\n\t\t\t\tvar type = this.get('wageType').underscore().split('_');\n\t\t\t\ttype.forEach(function (word) {\n\t\t\t\t\ttypeName += ' ' + word[0].toUpperCase() + word.slice(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn typeName.trim();\n\t\t})\n\t});\n});","define('busy-app/models/safety-signature', ['exports', '@busy-web/utils', 'ember-data'], function (exports, _utils, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    memberId: _emberData.default.attr('string'),\n    proxyMemberId: _emberData.default.attr('string'),\n    injured: _emberData.default.attr('boolean', { defaultValue: null }),\n    injuryDescription: _emberData.default.attr('string'),\n    timeAccurate: _emberData.default.attr('boolean', { defaultValue: null }),\n    timeAccurateReason: _emberData.default.attr('string'),\n    signature: _emberData.default.attr('svg'),\n    signatureId: _emberData.default.attr('string'),\n    signatureUrl: _emberData.default.attr('string'),\n    signatureThumbUrl: _emberData.default.attr('string'),\n    updatedOn: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    startTime: _emberData.default.attr('number'),\n    endTime: _emberData.default.attr('number'),\n    startTimeOffset: _emberData.default.attr('number'),\n    createdOnOffset: _emberData.default.attr('number'),\n    endTimeOffset: _emberData.default.attr('number'),\n    createdOnDst: _emberData.default.attr('boolean'),\n    startTimeDst: _emberData.default.attr('boolean'),\n    endTimeDst: _emberData.default.attr('boolean'),\n    deviceType: _emberData.default.attr('string'),\n    breakPolicyFollowed: _emberData.default.attr('boolean'),\n    breakPolicyFollowedReason: _emberData.default.attr('string'),\n\n    endTimeDay: Ember.computed('endTime', function () {\n      var endTime = this.get('endTime');\n      return _utils.Time.date(endTime).format('MMM Do');\n    }),\n\n    endTimeDate: Ember.computed('endTime', function () {\n      var endTime = this.get('endTime');\n      return _utils.Time.date(endTime).endOf('day').unix();\n    }),\n\n    endTimeString: Ember.computed('endTime', function () {\n      return _utils.Time.timeFormat(this.get('endTime'), 'h:mm A');\n    }),\n\n    injuredString: Ember.computed('injured', function () {\n      var injured = this.get('injured');\n      if (injured) {\n        return (0, _utils.loc)('Injured');\n      }\n      return '';\n    }),\n\n    injuredIsNull: Ember.computed('injured', function () {\n      if (this.get('injured') === null) {\n        return true;\n      }\n      return false;\n    }),\n\n    timeAccurateIsNull: Ember.computed('timeAccurate', function () {\n      if (this.get('timeAccurate') === null) {\n        return true;\n      }\n      return false;\n    }),\n\n    breakPolicyIsNull: Ember.computed('breakPolicyFollowed', function () {\n      if (this.get('breakPolicyFollowed') === null) {\n        return true;\n      }\n      return false;\n    }),\n\n    member: Ember.computed('memberId', function () {\n      return _emberData.default.PromiseObject.create({\n        promise: this.store.query('member', { id: this.get('memberId') }).then(function (data) {\n          return data.get('firstObject');\n        })\n      });\n    }),\n\n    proxyMember: Ember.computed('proxyMemberId', function () {\n      return _emberData.default.PromiseObject.create({\n        promise: this.store.query('member', { id: this.get('proxyMemberId') }).then(function (data) {\n          return data.get('firstObject');\n        })\n      });\n    }),\n\n    createdToday: Ember.computed('createdOn', 'startTime', function () {\n      if (_utils.Time.date(this.get('createdOn')).format('MM-DD-YYYY') === _utils.Time.date(this.get('startTime')).format('MM-DD-YYYY')) {\n        return true;\n      }\n      return false;\n    }),\n\n    createdOnDate: Ember.computed('createdOn', function () {\n      var createdOn = this.get('createdOn') + this.get('createdOnOffset');\n      return _utils.Time.date(createdOn).startOf('day').unix();\n    }),\n\n    createdOnTime: Ember.computed('createdOn', function () {\n      return this.get('createdOn') + this.get('createdOnOffset');\n    }),\n\n    createdOnString: Ember.computed('createdOn', function () {\n      var createdOn = this.get('createdOn') + this.get('createdOnOffset');\n      return _utils.Time.date(createdOn).format('h:mm A (M/D/YY)');\n    }),\n\n    createdAtString: Ember.computed('createdOn', function () {\n      var createdOn = this.get('createdOn') + this.get('createdOnOffset');\n      return _utils.Time.date(createdOn).format('h:mm A');\n    }),\n\n    submittedOnTime: Ember.computed('submittedOn', function () {\n      return this.get('submittedOn') + this.get('createdOnOffset');\n    }),\n\n    signatureRequiredString: Ember.computed('memberId', 'proxyMemberId', function () {\n      if (this.get('memberId') !== this.get('proxyMemberId')) {\n        return (0, _utils.loc)('Employee signature required when signing from supervisor account');\n      }\n    })\n  });\n});","define('busy-app/models/schedule-reminder-link', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tscheduleReminderId: _emberData.default.attr('string'),\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\n\t\tmember: Ember.computed('memberId', function () {\n\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\tpromise: this.store.query('member', { id: this.get('memberId') }).then(function (data) {\n\t\t\t\t\treturn data.get('firstObject');\n\t\t\t\t})\n\t\t\t});\n\t\t}),\n\n\t\tuserImage: Ember.computed('member.imageThumbUrl', function () {\n\t\t\tvar image = this.get('member.imageThumbUrl');\n\t\t\tif (Ember.isNone(image)) {\n\t\t\t\timage = '/images/imageplaceholder.png';\n\t\t\t}\n\t\t\treturn Ember.String.htmlSafe('background-image: url(' + image + ');');\n\t\t})\n\t});\n});","define('busy-app/models/schedule-reminder', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\torganizationId: _emberData.default.attr('string'),\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tpayload: _emberData.default.attr('string'),\n\t\ttype: _emberData.default.attr('string'),\n\t\trepeat: _emberData.default.attr('number'),\n\t\tnotifyEmployee: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\n\t\t// NOTE:\n\t\t// scheduleLinks are getting loaded in the\n\t\t// scheduling/index route\n\t\tscheduleLinks: null,\n\n\t\tpayloadJson: Ember.computed('payload', function () {\n\t\t\tif (Ember.isNone(this.get('payload'))) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\treturn JSON.parse(this.get('payload'));\n\t\t}),\n\n\t\tprojectId: Ember.computed('payloadJson', function () {\n\t\t\treturn this.get('payloadJson.project');\n\t\t}),\n\n\t\tcostCodeId: Ember.computed('payloadJson', function () {\n\t\t\t// proper payload format is underscore.\n\t\t\treturn this.get('payloadJson.cost_code');\n\t\t}),\n\n\t\tequipmentId: Ember.computed('payloadJson', function () {\n\t\t\treturn this.get('payloadJson.equipment');\n\t\t}),\n\n\t\tproject: Ember.computed('projectId', function () {\n\t\t\tif (!Ember.isNone(this.get('projectId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('project', this.get('projectId'))\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn null;\n\t\t}),\n\n\t\tcostCode: Ember.computed('costCodeId', function () {\n\t\t\tif (!Ember.isNone(this.get('costCodeId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('cost-code', this.get('costCodeId'))\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn null;\n\t\t}),\n\n\t\tequipment: Ember.computed('equipmentId', function () {\n\t\t\tif (!Ember.isNone(this.get('equipmentId'))) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('equipment', this.get('equipmentId'))\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn null;\n\t\t}),\n\n\t\tstartTimeFormatted: Ember.computed('startTime', function () {\n\t\t\treturn _utils.Time.date(this.get('startTime')).format('h:mm A');\n\t\t}),\n\n\t\tstartDayTime: Ember.computed('startTime', function () {\n\t\t\treturn _utils.Time.date(this.get('startTime')).startOf('day').unix();\n\t\t}),\n\n\t\tendDayTime: Ember.computed('endTime', function () {\n\t\t\treturn _utils.Time.date(this.get('endTime')).startOf('day').unix();\n\t\t}),\n\n\t\tstartDay: Ember.computed('startTime', function () {\n\t\t\treturn '(' + _utils.Time.date(this.get('startTime')).format('MMM D') + ')';\n\t\t}),\n\n\t\tendDay: Ember.computed('endTime', function () {\n\t\t\treturn '(' + _utils.Time.date(this.get('endTime')).format('MMM D') + ')';\n\t\t}),\n\n\t\tendTimeFormatted: Ember.computed('endTime', function () {\n\t\t\treturn _utils.Time.date(this.get('endTime')).format('h:mm A');\n\t\t}),\n\n\t\tinstructions: Ember.computed('payloadJson', function () {\n\t\t\treturn this.get('payloadJson.instructions');\n\t\t}),\n\n\t\thasInstructions: Ember.computed('instructions', function () {\n\t\t\treturn !Ember.isEmpty(this.get('instructions'));\n\t\t}),\n\n\t\tinstructionsRows: Ember.computed('instructions', function () {\n\t\t\tvar parts = this.get('instructions').split('\\n');\n\t\t\treturn parts.length + 1;\n\t\t}),\n\n\t\tisBreak: Ember.computed('type', function () {\n\t\t\treturn this.get('type') === 'break';\n\t\t}),\n\n\t\ttypeFormatted: Ember.computed('type', function () {\n\t\t\treturn Ember.String.classify(this.get('type'));\n\t\t})\n\t});\n});","define('busy-app/models/segment-cost', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    segmentId: _emberData.default.attr('string'),\n    regularCost: _emberData.default.attr('number'),\n    overtimeCost: _emberData.default.attr('number'),\n    doubletimeCost: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    segment: _emberData.default.belongsTo('segment', { inverse: null })\n  });\n});","define('busy-app/models/segment-seconds', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    segmentId: _emberData.default.attr('string'),\n    regularSeconds: _emberData.default.attr('number'),\n    overtimeSeconds: _emberData.default.attr('number'),\n    doubletimeSeconds: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n\n    segment: _emberData.default.belongsTo('segment', { inverse: null })\n  });\n});","define('busy-app/models/segment', ['exports', 'ember-data', 'busy-app/mixins/model-sync', '@busy-web/utils'], function (exports, _emberData, _modelSync, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend(_modelSync.default, {\n\t\ttimeEntryId: _emberData.default.attr('id'),\n\t\tstartTime: _emberData.default.attr('date', { sortable: true, sortBy: ['startTime'], sortChildren: ['timeEntry.member.firstName', 'timeEntry.member.lastName'] }),\n\t\tendTime: _emberData.default.attr('date', { sortable: true }),\n\t\tsegmentType: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\ttimeEntry: _emberData.default.belongsTo('time-entry'),\n\t\t//seconds: null,// DS.belongsTo('segment-seconds'),\n\t\t//cost: null,//DS.belongsTo('segment-cost'),\n\n\t\tseconds: Ember.computed('id', function () {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isNone(this.id)) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.findAll('segment-seconds', { segment_id: this.id }).then(function (items) {\n\t\t\t\t\t\tif (items.get('length') === 0) {\n\t\t\t\t\t\t\t_this.sync('seconds', !_this.get('deletedOn'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn items;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tcost: Ember.computed('id', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.id)) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.store.findAll('segment-cost', { segment_id: this.id }).then(function (items) {\n\t\t\t\t\t\tif (items.get('length') === 0) {\n\t\t\t\t\t\t\t_this2.sync('cost', !_this2.get('deletedOn'));\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tregularSeconds: Ember.computed('seconds.@each.regularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('seconds').mapBy('regularSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tovertimeSeconds: Ember.computed('seconds.@each.overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('seconds').mapBy('overtimeSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tdoubletimeSeconds: Ember.computed('seconds.@each.doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('seconds').mapBy('doubletimeSeconds').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tbreakSeconds: Ember.computed('seconds.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('isBreak')) {\n\t\t\t\t// TODO: future code for paid breaks\n\t\t\t\t//\n\t\t\t\t//total += this.get('seconds').mapBy('regularSeconds').reduce((a, b) => a+b,  0);\n\t\t\t\t//total\t+= this.get('seconds').mapBy('overtimeSeconds').reduce((a, b) => a+b, 0);\n\t\t\t\t//total\t+= this.get('seconds').mapBy('doubletimeSeconds').reduce((a, b) => a+b, 0);\n\t\t\t\ttotal += this.get('endTime') - this.get('startTime');\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalSeconds: Ember.computed('updatedOn', 'regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tregularCost: Ember.computed('cost.@each.regularCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('cost').mapBy('regularCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tovertimeCost: Ember.computed('cost.@each.overtimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('cost').mapBy('overtimeCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tdoubletimeCost: Ember.computed('cost.@each.doubletimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!this.get('isBreak')) {\n\t\t\t\ttotal += this.get('cost').mapBy('doubletimeCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tbreakCost: Ember.computed('cost.@each.{regularCost,overtimeCost,doubletimeCost}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('isBreak')) {\n\t\t\t\ttotal += this.get('cost').mapBy('regularCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t\ttotal += this.get('cost').mapBy('overtimeCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t\ttotal += this.get('cost').mapBy('doubletimeCost').reduce(function (a, b) {\n\t\t\t\t\treturn a + b;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\treturn total;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tisBreak: Ember.computed('segmentType', function () {\n\t\t\tif (this.get('segmentType') === 20 || this.get('segmentType') === 30) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisPaidBreak: Ember.computed('segmentType', function () {\n\t\t\tif (this.get('segmentType') === 30) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\telapsedTime: Ember.computed('startTime', 'endTime', function () {\n\t\t\treturn this.get('endTime') - this.get('startTime');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\telapsedTimeString: Ember.computed('elapsedTime', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('elapsedTime'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t})\n\t});\n});","define('busy-app/models/self-signature', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\tproxyMemberId: _emberData.default.attr('string'),\n\t\tcreatedOnOffset: _emberData.default.attr('number'),\n\t\tcreatedOnDST: _emberData.default.attr('boolean'),\n\t\tsignature: _emberData.default.attr('svg'),\n\t\tsignatureUrl: _emberData.default.attr('string'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\n\t\tproxyMember: _emberData.default.belongsTo('member', { inverse: null, referenceKey: 'proxyMemberId', foreignKey: 'id' }),\n\n\t\tcreatedOnConverted: Ember.computed('createdOn', 'createdOnOffset', 'createdOnDST', function () {\n\t\t\treturn this.get('createdOn') + this.get('createdOnOffset');\n\t\t}),\n\n\t\thasProxySigner: Ember.computed('memberId', 'proxyMemberId', function () {\n\t\t\treturn this.get('proxyMemberId') && this.get('memberId') !== this.get('proxyMemberId');\n\t\t})\n\t});\n});","define('busy-app/models/sign-up-event', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    memberId: _emberData.default.attr('string'),\n    medium: _emberData.default.attr('string'),\n    campaign: _emberData.default.attr('string'),\n    source: _emberData.default.attr('string'),\n    content: _emberData.default.attr('string'),\n    term: _emberData.default.attr('string'),\n    platform: _emberData.default.attr('string'),\n    os: _emberData.default.attr('string'),\n    osVersion: _emberData.default.attr('string'),\n    appVersion: _emberData.default.attr('string'),\n    device: _emberData.default.attr('string'),\n    adClickDate: _emberData.default.attr('number'),\n    endTimeTrusted: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/stripe-customer-card', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'busy-stripe',\n\n\t\tbrand: attr('string'),\n\t\texpMonth: attr('number'),\n\t\texpYear: attr('number'),\n\t\tisCardActive: attr('boolean'),\n\t\tlast4: attr('string'),\n\t\tname: attr('string')\n\t});\n});","define('busy-app/models/stripe-customer-discount', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var Model = _emberData.default.Model,\n      attr = _emberData.default.attr;\n  exports.default = Model.extend(_data.RPCModelMixin, {\n    _clientName: 'busy-stripe',\n\n    couponId: attr('string'),\n    duration: attr('number'),\n    percentOff: attr('number')\n  });\n});","define('busy-app/models/stripe-customer-invoice', ['exports', 'ember-data', '@busy-web/utils/time', '@busy-web/data'], function (exports, _emberData, _time, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr,\n\t    belongsTo = _emberData.default.belongsTo;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'busy-stripe',\n\t\t_methodName: 'get-stripe-invoices',\n\n\t\tammountDue: attr('number'),\n\t\tattemptCount: attr('number'),\n\t\tcard: attr('string'),\n\t\tdate: attr('number'),\n\t\tlivemode: attr('boolean'),\n\t\tpaid: attr('boolean'),\n\t\tperiodEnd: attr('number'),\n\t\tperiodStart: attr('number'),\n\t\tsubtotal: attr('number'),\n\t\ttotal: attr('number'),\n\n\t\tdiscount: belongsTo('stripe-customer-discount'),\n\t\tlines: belongsTo('stripe-customer-line'),\n\n\t\tinvoiceDate: Ember.computed('data', function () {\n\t\t\tif (!Ember.isNone(this.get('date'))) {\n\t\t\t\treturn _time.default.date(this.get('date')).format('MM/DD/YY');\n\t\t\t}\n\t\t\treturn '';\n\t\t}),\n\n\t\tdateRange: Ember.computed('periodStart', 'periodEnd', function () {\n\t\t\tif (!Ember.isNone(this.get('periodStart')) && !Ember.isNone(this.get('periodEnd'))) {\n\t\t\t\tvar startDate = _time.default.date(this.get('periodStart')).format('MM/DD/YY');\n\t\t\t\tvar endDate = _time.default.date(this.get('periodEnd')).format('MM/DD/YY');\n\t\t\t\treturn startDate + ' - ' + endDate;\n\t\t\t}\n\t\t\treturn '';\n\t\t}),\n\n\t\ttotalPrice: Ember.computed('total', function () {\n\t\t\tif (!Ember.isNone(this.get('total'))) {\n\t\t\t\treturn '$' + ((this.get('total') || 0) / 100).toFixed(2);\n\t\t\t}\n\t\t\treturn '';\n\t\t})\n\t});\n});","define('busy-app/models/stripe-customer-line', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var Model = _emberData.default.Model,\n      attr = _emberData.default.attr;\n  exports.default = Model.extend(_data.RPCModelMixin, {\n    _clientName: 'busy-stripe',\n\n    amount: attr('number'),\n    description: attr('string'),\n    endDate: attr('number'),\n    startDate: attr('number')\n  });\n});","define('busy-app/models/stripe-customer-subscription', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'busy-stripe',\n\n\t\tcancelAtPeriodEnd: attr('boolean'),\n\t\tcancelAt: attr('number'),\n\t\tcurrentPeriodEnd: attr('number'),\n\t\tcurrentPeriodStart: attr('number'),\n\t\tendedAt: attr('number'),\n\t\tplanDescription: attr('string'),\n\t\tplanId: attr('string'),\n\t\tstart: attr('number'),\n\t\tstatus: attr('string'),\n\t\ttrialEnd: attr('number'),\n\t\ttrialStart: attr('number')\n\t});\n});","define('busy-app/models/stripe-customer', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr,\n\t    belongsTo = _emberData.default.belongsTo,\n\t    hasMany = _emberData.default.hasMany;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'busy-stripe',\n\t\t_methodName: 'get-stripe-customer',\n\n\t\taccountBalance: attr('number'),\n\t\tcreated: attr('number'),\n\t\tdelinquent: attr('boolean'),\n\t\tdescription: attr('string'),\n\t\temail: attr('string'),\n\n\t\tcards: hasMany('stripe-customer-card'),\n\t\tsubscription: belongsTo('stripe-customer-subscription'),\n\t\tdiscount: belongsTo('stripe-customer-discount')\n\t});\n});","define('busy-app/models/stripe-plan', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar Model = _emberData.default.Model,\n\t    attr = _emberData.default.attr;\n\texports.default = Model.extend(_data.RPCModelMixin, {\n\t\t_clientName: 'busy-stripe',\n\t\t_methodName: 'get-stripe-plans',\n\n\t\tamount: attr('number'),\n\t\tcreated: attr('number'),\n\t\tcurrency: attr('string'),\n\t\tinterval: attr('string'),\n\t\tintervalCount: attr('number'),\n\t\tlivemode: attr('boolean'),\n\t\tname: attr('string'),\n\t\tobject: attr('string'),\n\t\ttrialPeriodDays: attr('number')\n\t});\n});","define('busy-app/models/sync-log', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    organizationId: _emberData.default.attr('string'),\n    payrollItemData: _emberData.default.attr('string'),\n    employeeData: _emberData.default.attr('string'),\n    projectData: _emberData.default.attr('string'),\n    costCodeData: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/time-entry-break', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/time-entry-validator', 'busy-app/utils/maps'], function (exports, _emberData, _utils, _timeEntryValidator, _maps) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\ttimeEntryId: _emberData.default.attr('string'),\n\t\tstartTime: _emberData.default.attr('number'),\n\t\tstartTimeDst: _emberData.default.attr('boolean'),\n\t\tstartMetaOffset: _emberData.default.attr('number'),\n\t\tendTime: _emberData.default.attr('number'),\n\t\tendTimeDst: _emberData.default.attr('boolean'),\n\t\tendMetaOffset: _emberData.default.attr('number'),\n\t\tpaidBreak: _emberData.default.attr('boolean', { defaultValue: false }),\n\t\tactionType: _emberData.default.attr('number'),\n\t\tstartLocationId: _emberData.default.attr('string'),\n\t\tendLocationId: _emberData.default.attr('string'),\n\t\tstartDeviceTime: _emberData.default.attr('number'),\n\t\tendDeviceTime: _emberData.default.attr('number'),\n\t\tstartTimeTrusted: _emberData.default.attr('number'),\n\t\tendTimeTrusted: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\ttimeEntry: _emberData.default.belongsTo('time-entry', { inverse: null }),\n\t\tstartLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'startLocationId', foreignKey: 'id' }),\n\t\tendLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'endLocationId', foreignKey: 'id' }),\n\n\t\tstartBounds: null,\n\t\tendBounds: null,\n\n\t\t// break flags\n\t\tinvalidStartTime: false, // starts outside the time entry\n\t\tinvalidEndTime: false, // ends outside the time entry\n\t\tinvalidEntry: false, // starts and ends outside the time entry\n\t\toverlappingStartTime: false, // start time overlaps another break\n\t\toverlappingEndTime: false, // end time overlaps another break\n\t\toverlappingEntry: false, // starts and ends inside another break\n\n\t\tstartTimeGetter: function startTimeGetter() {\n\t\t\tvar startTime = this.get('startTime');\n\t\t\tvar startBounds = this.get('startBounds');\n\t\t\tif (!Ember.isNone(startBounds) && startTime < startBounds) {\n\t\t\t\treturn startBounds;\n\t\t\t} else {\n\t\t\t\treturn startTime;\n\t\t\t}\n\t\t},\n\t\tendTimeGetter: function endTimeGetter() {\n\t\t\tvar endTime = this.get('endTime');\n\t\t\tif (Ember.isNone(endTime)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar endBounds = this.get('endBounds');\n\t\t\tif (!Ember.isNone(endBounds) && endTime > endBounds) {\n\t\t\t\treturn endBounds;\n\t\t\t} else {\n\t\t\t\treturn endTime;\n\t\t\t}\n\t\t},\n\n\n\t\ttotalTime: Ember.computed('startTime', 'endTime', function () {\n\t\t\tvar total = (this.get('endTime') || 0) - (this.get('startTime') || 0);\n\t\t\tif (total < 0) {\n\t\t\t\ttotal = 0;\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\telapsedTimeString: Ember.computed('totalTime', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalTime'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalTime', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalTime'), true);\n\t\t\tvar str = '';\n\t\t\tif (parseInt(time.hours, 10) > 0) {\n\t\t\t\tstr += time.hours + \" \" + (0, _utils.loc)('hrs ');\n\t\t\t}\n\n\t\t\tif (parseInt(time.minutes, 10) > 0) {\n\t\t\t\tstr += time.minutes + \" \" + (0, _utils.loc)('mins');\n\t\t\t}\n\t\t\treturn str.replace(/ $/, '');\n\t\t}),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', 'paidBreak', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime'))) {\n\t\t\t\tdate += _utils.Time.timeFormat(this.get('startTime'), 'h:mm A');\n\n\t\t\t\tif (!Ember.isNone(this.get('endTime'))) {\n\t\t\t\t\tdate += ' - ' + _utils.Time.timeFormat(this.get('endTime'), 'h:mm A');\n\t\t\t\t} else {\n\t\t\t\t\tdate += ' - ' + (0, _utils.loc)('NOW');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//if (!isEmpty(date)) {\n\t\t\t//\tlet  isPaid = loc(\"Unpaid\");\n\t\t\t//\tif (this.get('paidBreak')) {\n\t\t\t//\t\tisPaid = loc(\"Paid\");\n\t\t\t//\t}\n\t\t\t//\tdate = date + ' (' + isPaid + ')';\n\t\t\t//}\n\t\t\treturn date;\n\t\t}),\n\n\t\tvalidLocationTime: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n\t\t\tif (!Ember.isNone(this.get('auth.organization'))) {\n\t\t\t\treturn (0, _maps.validTimeOffset)(this.get('auth.organization'));\n\t\t\t}\n\t\t}),\n\n\t\tisStartLocationValid: Ember.computed('startLocation.createdOn', 'startLocationId', 'startTime', 'timeEntry.offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('startLocation.createdOn'))) {\n\t\t\t\tvar locCreatedOn = this.get('startLocation.createdOn') + this.get('timeEntry.offset');\n\t\t\t\tif (locCreatedOn >= this.get('startTime') - validLocTime && locCreatedOn <= this.get('startTime') + validLocTime) {\n\t\t\t\t\tif ((0, _maps.isValidLatLng)(this.get('startLocation'))) {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\tisEndLocationValid: Ember.computed('endLocation.createdOn', 'endLocationId', 'endTime', 'timeEntry.offset', 'validLocationTime', function () {\n\t\t\tvar validLocTime = this.get('validLocationTime');\n\t\t\tvar isValid = false;\n\t\t\tif (!Ember.isNone(this.get('endLocation.createdOn')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar locCreatedOn = this.get('endLocation.createdOn') + this.get('timeEntry.offset');\n\t\t\t\tif (locCreatedOn >= this.get('endTime') - validLocTime && locCreatedOn <= this.get('endTime') + validLocTime) {\n\t\t\t\t\tif ((0, _maps.isValidLatLng)(this.get('startLocation'))) {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isValid;\n\t\t}),\n\n\t\tstartLocationCreatedOn: Ember.computed('startLocation.createdOn', function () {\n\t\t\treturn this.get('startLocation.createdOn');\n\t\t}),\n\n\t\tendLocationCreatedOn: Ember.computed('endLocation.createdOn', function () {\n\t\t\treturn this.get('endLocation.createdOn');\n\t\t}),\n\n\t\tvalidateTime: function validateTime(startBounds, endBounds) {\n\t\t\tif (!Ember.isNone(this.startTimeGetter()) && !Ember.isNone(this.endTimeGetter())) {\n\t\t\t\t// check if break starts before time entry start time\n\t\t\t\tif (this.startTimeGetter() < startBounds) {\n\t\t\t\t\tthis.set('startBounds', startBounds);\n\t\t\t\t\tthis.set('invalidStartTime', true);\n\t\t\t\t}\n\n\t\t\t\t// check if break ends after time entry end time\n\t\t\t\tif (this.endTimeGetter() > endBounds) {\n\t\t\t\t\tthis.set('endBounds', endBounds);\n\t\t\t\t\tthis.set('invalidEndTime', true);\n\t\t\t\t}\n\n\t\t\t\t// check if the end time is still greater than the start time\n\t\t\t\tif (this.endTimeGetter() < this.startTimeGetter()) {\n\t\t\t\t\tthis.set('endBounds', this.startTimeGetter());\n\t\t\t\t\tthis.set('invalidEntry', true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tadjustOverlap: function adjustOverlap(breakEntry) {\n\t\t\t// make sure not to adjust this break against itself\n\t\t\tif (this.id !== breakEntry.id) {\n\t\t\t\tvar thatStart = breakEntry.startTimeGetter();\n\t\t\t\tvar thatEnd = breakEntry.endTimeGetter() || _utils.Time.timestamp();\n\t\t\t\tif (this.startTimeGetter() !== this.endTimeGetter()) {\n\t\t\t\t\tif (thatStart !== thatEnd) {\n\t\t\t\t\t\tif (this.startTimeGetter() >= thatStart && this.startTimeGetter() < thatEnd) {\n\t\t\t\t\t\t\t// starts inside another break\n\t\t\t\t\t\t\tthis.set('startBounds', thatEnd);\n\t\t\t\t\t\t\tthis.set('overlappingStartTime', true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.endTimeGetter() > thatStart && this.endTimeGetter() <= thatEnd) {\n\t\t\t\t\t\t\t// ends inside another break\n\t\t\t\t\t\t\tthis.set('endBounds', thatStart);\n\t\t\t\t\t\t\tthis.set('overlappingEndTime', true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.endTimeGetter() < this.startTimeGetter()) {\n\t\t\t\t\t\t\t// starts and ends inside another break\n\t\t\t\t\t\t\tthis.set('endBounds', this.startTimeGetter());\n\t\t\t\t\t\t\tthis.set('overlappingEntry', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\toverlappingBreak: Ember.computed('overlappingStartTime', 'overlappingEndTime', 'overlappingEntry', function () {\n\t\t\treturn this.get('overlappingStartTime') || this.get('overlappingEndTime') || this.get('overlappingEntry');\n\t\t}),\n\n\t\tresetFlags: function resetFlags() {\n\t\t\t// reset invalid flags\n\t\t\tthis.set('invalidStartTime', false);\n\t\t\tthis.set('invalidEndTime', false);\n\t\t\tthis.set('invalidEntry', false);\n\n\t\t\t// reset overlapping\n\t\t\tthis.set('overlappingStartTime', false);\n\t\t\tthis.set('overlappingEndTime', false);\n\t\t\tthis.set('overlappingEntry', false);\n\n\t\t\t// reset bounds\n\t\t\tthis.set('startBounds', null);\n\t\t\tthis.set('endBounds', null);\n\t\t},\n\t\tpopulate: function populate(timeEntry) {\n\t\t\tif (this.get('actionType') === 10 || this.get('actionType') === 11) {\n\t\t\t\t// start break and start break with location\n\t\t\t\tvar startTime = this.get('startTime');\n\t\t\t\tvar startMetaOffset = _utils.Time.timezone(startTime);\n\t\t\t\tvar startTimeDst = _utils.Time.isDST(startTime);\n\n\t\t\t\t// convert startTime to the time of the timecards timezone\n\t\t\t\tstartTime = startTime - startMetaOffset + timeEntry.get('offset');\n\t\t\t\tvar startDeviceTime = _utils.Time.date().unix() - startMetaOffset + timeEntry.get('offset');\n\n\t\t\t\tthis.set('startTime', startTime);\n\t\t\t\tthis.set('startMetaOffset', startMetaOffset);\n\t\t\t\tthis.set('startTimeDst', startTimeDst);\n\t\t\t\tthis.set('startDeviceTime', startDeviceTime);\n\t\t\t\tthis.set('startTimeTrusted', _utils.Time.isTrustedTimeType());\n\t\t\t} else if (this.get('actionType') === 20 || this.get('actionType') === 21) {\n\t\t\t\t// stop break and stop break with location\n\t\t\t\tvar endTime = this.get('endTime');\n\t\t\t\tvar endMetaOffset = _utils.Time.timezone();\n\t\t\t\tvar endTimeDst = _utils.Time.isDST();\n\n\t\t\t\tendTime = endTime - endMetaOffset + timeEntry.get('offset');\n\t\t\t\tvar endDeviceTime = _utils.Time.date().unix() - endMetaOffset + timeEntry.get('offset');\n\n\t\t\t\tthis.set('endTime', endTime);\n\t\t\t\tthis.set('endMetaOffset', endMetaOffset);\n\t\t\t\tthis.set('endTimeDst', endTimeDst);\n\t\t\t\tthis.set('endDeviceTime', endDeviceTime);\n\t\t\t\tthis.set('endTimeTrusted', _utils.Time.isTrustedTimeType());\n\t\t\t} else if (this.get('actionType') === 30 || this.get('actionType') === 50) {\n\t\t\t\t// create new manual break\n\t\t\t\tvar _startTime = this.get('startTime');\n\t\t\t\tvar _endTime = this.get('endTime');\n\n\t\t\t\t(true && !(!Ember.isNone(_startTime) && typeof _startTime === 'number') && Ember.assert(\"You must provide a startTime in seconds for a manual entry action\", !Ember.isNone(_startTime) && typeof _startTime === 'number'));\n\t\t\t\t(true && !(!Ember.isNone(_endTime) && typeof _endTime === 'number') && Ember.assert(\"You must provide a endTime in seconds for a manual entry action\", !Ember.isNone(_endTime) && typeof _endTime === 'number'));\n\n\t\t\t\t// start\n\n\t\t\t\tthis.set('startMetaOffset', _utils.Time.timezone(_startTime));\n\t\t\t\tthis.set('startTimeDst', _utils.Time.isDST(_startTime));\n\t\t\t\tthis.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\n\t\t\t\t// end\n\t\t\t\tthis.set('endMetaOffset', _utils.Time.timezone(_endTime));\n\t\t\t\tthis.set('endTimeDst', _utils.Time.isDST(_endTime));\n\t\t\t\tthis.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\n\t\t\t\t// convert to the local time of the time-entry offset\n\t\t\t\tthis.set('startTime', _startTime - this.get('startMetaOffset') + timeEntry.get('offset'));\n\t\t\t\tthis.set('startDeviceTime', this.get('startTime'));\n\n\t\t\t\tthis.set('endTime', _endTime - this.get('endMetaOffset') + timeEntry.get('offset'));\n\t\t\t\tthis.set('endDeviceTime', this.get('endTime'));\n\t\t\t} else if (this.get('actionType') === 40 || this.get('actionType') === 60 || this.get('actionType') === 80) {\n\t\t\t\t// edit existing break and resolve conflict\n\t\t\t\tvar _startTime2 = this.get('startTime');\n\t\t\t\t(true && !(!Ember.isNone(_startTime2) && typeof _startTime2 === 'number') && Ember.assert(\"You must provide a startTime in seconds for a manual entry action\", !Ember.isNone(_startTime2) && typeof _startTime2 === 'number'));\n\n\t\t\t\t// start\n\n\t\t\t\tif (!Ember.isNone(_startTime2) && !Ember.isNone(this._internalModel._attributes.startTime)) {\n\t\t\t\t\tthis.set('startMetaOffset', _utils.Time.timezone(_startTime2));\n\t\t\t\t\tthis.set('startTimeDst', _utils.Time.isDST(_startTime2));\n\t\t\t\t\tthis.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\n\t\t\t\t\t// convert to the local time of the time-entry offset\n\t\t\t\t\tthis.set('startTime', _startTime2 - this.get('startMetaOffset') + timeEntry.get('offset'));\n\t\t\t\t\tthis.set('startDeviceTime', this.get('startTime'));\n\t\t\t\t}\n\n\t\t\t\tvar _endTime2 = this.get('endTime');\n\t\t\t\t(true && !(!Ember.isNone(_endTime2) && typeof _endTime2 === 'number') && Ember.assert(\"You must provide a endTime in seconds for a manual entry action\", !Ember.isNone(_endTime2) && typeof _endTime2 === 'number'));\n\n\t\t\t\t// end\n\n\t\t\t\tif (!Ember.isNone(_endTime2) && !Ember.isNone(this._internalModel._attributes.endTime)) {\n\t\t\t\t\tthis.set('endMetaOffset', _utils.Time.timezone(_endTime2));\n\t\t\t\t\tthis.set('endTimeDst', _utils.Time.isDST(_endTime2));\n\t\t\t\t\tthis.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\n\t\t\t\t\t// convert to the local time of the time-entry offset\n\t\t\t\t\tthis.set('endTime', _endTime2 - this.get('endMetaOffset') + timeEntry.get('offset'));\n\t\t\t\t\tthis.set('endDeviceTime', this.get('endTime'));\n\t\t\t\t}\n\t\t\t\tthis.checkAddedAttrs();\n\t\t\t}\n\t\t},\n\t\tcheckAddedAttrs: function checkAddedAttrs() {\n\t\t\tif (Ember.isNone(this.get('startDeviceTime'))) {\n\t\t\t\tthis.set('startDeviceTime', this.get('startTime'));\n\t\t\t}\n\n\t\t\tif (Ember.isNone(this.get('startTimeTrusted'))) {\n\t\t\t\tthis.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\t\t\t}\n\n\t\t\tif (Ember.isNone(this.get('endDeviceTime'))) {\n\t\t\t\tthis.set('endDeviceTime', this.get('endTime'));\n\t\t\t}\n\n\t\t\tif (Ember.isNone(this.get('endTimeTrusted'))) {\n\t\t\t\tthis.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\t\t\t}\n\t\t},\n\n\n\t\tonCreate: Ember.on('didCreate', function () {\n\t\t\tthis.set('_isValid', false);\n\t\t}),\n\n\t\tonLoad: Ember.on('didLoad', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonUpdate: Ember.on('didUpdate', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonRollback: Ember.on('rolledBack', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonChange: Ember.observer('hasDirtyAttributes', function () {\n\t\t\tif (this.get('hasDirtyAttributes') && this.get('_isValid')) {\n\t\t\t\tthis.set('_isValid', false);\n\t\t\t}\n\t\t}),\n\n\t\tvalidate: function validate(timeEntry, validateOverlap) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('_isValid')) {\n\t\t\t\treturn _timeEntryValidator.default.timeEntryBreak(this, timeEntry, validateOverlap).then(function (result) {\n\t\t\t\t\tif (result.isValid) {\n\t\t\t\t\t\t_this.set('_isValid', true);\n\t\t\t\t\t\treturn result.isValid;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Ember.RSVP.reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(true);\n\t\t\t}\n\t\t},\n\t\tsaveLog: function saveLog(timeEntryLogId) {\n\t\t\treturn this.store.createRecord('client-time-entry-break-log', {\n\t\t\t\tupdaterMemberId: window.BusyApp._application.get('auth.member.id'),\n\t\t\t\toriginalTimeEntryBreakId: this.id,\n\t\t\t\ttimeEntryBreakId: this.id,\n\t\t\t\tmergedTimeEntryBreakId: this.get('mergedTimeEntryBreakId'),\n\t\t\t\ttimeEntryId: this.get('timeEntryId'),\n\t\t\t\tpaidBreak: this.get('paidBreak'),\n\t\t\t\tstartTime: this.get('startTime'),\n\t\t\t\tstartMetaOffset: this.get('startMetaOffset'),\n\t\t\t\tstartTimeDst: this.get('startTimeDst'),\n\t\t\t\tendTime: this.get('endTime'),\n\t\t\t\tendMetaOffset: this.get('endMetaOffset'),\n\t\t\t\tendTimeDst: this.get('endTimeDst'),\n\t\t\t\tactionType: this.get('actionType'),\n\t\t\t\ttimeEntryBreakCreatedOn: this.get('createdOn'),\n\t\t\t\ttimeEntryBreakDeletedOn: this.get('deletedOn'),\n\t\t\t\tdeviceType: 'Web Browser',\n\t\t\t\tstartDeviceTime: this.get('startDeviceTime'),\n\t\t\t\tendDeviceTime: this.get('endDeviceTime'),\n\t\t\t\tstartTimeTrusted: this.get('startTimeTrusted'),\n\t\t\t\tendTimeTrusted: this.get('endTimeTrusted'),\n\t\t\t\tclientTimeEntryLogId: timeEntryLogId,\n\t\t\t\tstartLocationId: this.get('startLocationId'),\n\t\t\t\tendLocationId: this.get('endLocationId')\n\t\t\t}).save();\n\t\t},\n\t\tdeleteRecord: function deleteRecord(isResolve) {\n\t\t\tthis.set('actionType', isResolve ? 100 : 90);\n\n\t\t\tthis._internalModel.deleteRecord();\n\n\t\t\treturn this;\n\t\t},\n\t\tsave: function save(timeEntry, timeEntryLogId) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar forceSave = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\tvar validateOverlap = forceSave === true ? false : true;\n\n\t\t\tif (this.get('isDeleted')) {\n\t\t\t\treturn this.saveLog(timeEntryLogId).then(function () {\n\t\t\t\t\treturn _this2._internalModel.save();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t(true && !(!Ember.isNone(timeEntry) && !Ember.isNone(timeEntry.startTime)) && Ember.assert('you must provide a timeEntry model to TimeEntryBreak.save()', !Ember.isNone(timeEntry) && !Ember.isNone(timeEntry.startTime)));\n\t\t\t\t(true && !(typeof timeEntryLogId === 'string') && Ember.assert('You must provide a clientTimeEntryLogId to save a break', typeof timeEntryLogId === 'string'));\n\n\n\t\t\t\treturn this.validate(timeEntry, validateOverlap).then(function () {\n\t\t\t\t\t_this2.populate(timeEntry);\n\t\t\t\t\treturn _this2._save(timeEntryLogId);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_save: function _save(timeEntryLogId) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this._internalModel.save().then(function () {\n\t\t\t\t_this3.saveLog(timeEntryLogId);\n\t\t\t\treturn _this3;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/models/time-entry-location', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\ttimeEntryId: _emberData.default.attr('string'),\n\t\ttriggerEvent: _emberData.default.attr('number'),\n\t\tlongitude: _emberData.default.attr('number'),\n\t\tlatitude: _emberData.default.attr('number'),\n\t\thorizontalAccuracy: _emberData.default.attr('number'),\n\t\taltitude: _emberData.default.attr('number'),\n\t\tverticalAccuracy: _emberData.default.attr('number'),\n\t\ttimeGmt: _emberData.default.attr('number'),\n\t\ttimeLocal: _emberData.default.attr('number'),\n\t\ttimeZoneOffset: _emberData.default.attr('number'),\n\t\ttimeDst: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\thasLocation: Ember.computed('longitude', 'latitude', function () {\n\t\t\tif (!Ember.isNone(this.get('longitude')) && !Ember.isNone(this.get('latitude'))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t})\n\t});\n});","define('busy-app/models/time-entry-member-conflicts', ['exports', 'busy-app/models/time-entry', '@busy-web/data'], function (exports, _timeEntry, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _timeEntry.default.extend(_data.RPCModelMixin, {\n    _clientName: 'entry-conflict',\n    _methodName: 'get-by-member'\n  });\n});","define('busy-app/models/time-entry-organization-conflicts', ['exports', 'busy-app/models/time-entry', '@busy-web/data'], function (exports, _timeEntry, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _timeEntry.default.extend(_data.RPCModelMixin, {\n    _clientName: 'entry-conflict',\n    _methodName: 'get-by-organization'\n  });\n});","define('busy-app/models/time-entry-segment', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    timeEntryId: _emberData.default.attr('string'),\n    startTime: _emberData.default.attr('number'),\n    endTime: _emberData.default.attr('number'),\n    segmentType: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number')\n  });\n});","define('busy-app/models/time-entry', ['exports', '@busy-web/utils', 'busy-app/mixins/model-sync', 'busy-app/utils/maps', 'busy-app/utils/round-time', 'busy-app/utils/time-entry', 'busy-app/utils/time-entry-break', 'busy-app/utils/time-entry-validator', 'ember-data'], function (exports, _utils, _modelSync, _maps, _roundTime, _timeEntry, _timeEntryBreak, _timeEntryValidator, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend(_modelSync.default, {\n    auth: Ember.inject.service('auth'),\n\n    memberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'], reverseSortChildren: ['startTime', 'endTime'] }),\n    projectId: _emberData.default.attr('id', { sortable: true, sortBy: ['project.fullTitle'], reverseSortChildren: ['startTime', 'endTime'] }),\n    costCodeId: _emberData.default.attr('id', { sortable: true, sortBy: ['costCode.costCode'], reverseSortChildren: ['startTime', 'endTime'] }),\n    equipmentId: _emberData.default.attr('id', { sortable: true, sortBy: ['equipment.equipmentName'], reverseSortChildren: ['startTime', 'endTime'] }),\n    positionId: _emberData.default.attr('id'),\n    startTime: _emberData.default.attr('date', { sortable: true, reverseSortBy: ['startTime', 'endTime'], sortChildren: ['member.firstName', 'member.lastName'], reverseSortChildren: ['startTime', 'endTime'] }),\n    endTime: _emberData.default.attr('date', { sortable: true }),\n    offset: _emberData.default.attr('number'),\n    metaOffset: _emberData.default.attr('number'),\n    daylightSavingTime: _emberData.default.attr('boolean'),\n    metaDaylightSavingTime: _emberData.default.attr('boolean'),\n    description: _emberData.default.attr('string'),\n    startLocationId: _emberData.default.attr('id'),\n    endLocationId: _emberData.default.attr('id'),\n    startDeviceTime: _emberData.default.attr('number'),\n    endDeviceTime: _emberData.default.attr('number'),\n    startTimeTrusted: _emberData.default.attr('number'),\n    endTimeTrusted: _emberData.default.attr('number'),\n    createdOn: _emberData.default.attr('date'),\n    updatedOn: _emberData.default.attr('date'),\n    deletedOn: _emberData.default.attr('date'),\n    actionType: _emberData.default.attr('number'),\n\n    // model joins\n    member: _emberData.default.belongsTo('member'),\n    project: _emberData.default.belongsTo('project'),\n    costCode: _emberData.default.belongsTo('cost-code'),\n    equipment: _emberData.default.belongsTo('equipment'),\n\n    startLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'startLocationId', foreignKey: 'id' }),\n    endLocation: _emberData.default.belongsTo('member-location', { referenceKey: 'endLocationId', foreignKey: 'id' }),\n\n    /**\n     * returns the open entry break if the time entry is\n     * currently open and on break\n     *\n     * @property openBreak\n     * @type {DS.Model}\n     */\n    openBreak: null,\n\n    isLinkedCostCodesEnabled: Ember.computed.alias('auth.organization.isLinkedCostCodesEnabled'),\n\n    timeEntryBreaks: Ember.computed('id', function () {\n      var _this = this;\n\n      var breaks = void 0;\n      if (!this.get('isNew')) {\n        breaks = _emberData.default.PromiseArray.create({\n          promise: this.store.findAll('time-entry-break', { time_entry_id: this.get('id'), deleted_on: null, archived_on: null }).then(function (data) {\n            // set open break\n            var openBreak = data.find(function (b) {\n              return Ember.isNone(b.get('endTime'));\n            });\n            _this.propertyWillChange('openBreak');\n            _this.set('openBreak', openBreak);\n            _this.propertyDidChange('openBreak');\n\n            Ember.run.schedule('afterRender', function () {\n              // calc break time\n              _this.calculateTime();\n            });\n\n            // return result\n            return data.toArray();\n          })\n        });\n      } else {\n        breaks = _emberData.default.PromiseArray.create({ promise: Ember.RSVP.resolve([]) });\n      }\n\n      breaks.reload = function () {\n        _this.propertyDidChange('timeEntryBreaks');\n        return Ember.RSVP.resolve(_this.get('timeEntryBreaks'));\n      };\n\n      return breaks;\n    }),\n\n    timeEntryLocations: Ember.computed('startTime', 'endTime', function () {\n      var end = this.get('endTime') || _utils.Time.now().unix();\n\n      var query = {\n        _lte: { time_local: end },\n        _gte: { time_local: this.get('startTime') },\n        member_id: this.get('memberId'),\n        deleted_on: '_-NULL-_',\n        archived_on: '_-NULL-_'\n      };\n\n      return _emberData.default.PromiseArray.create({\n        promise: this.store.query('member-location', query)\n      });\n    }),\n\n    segments: Ember.computed('id', function () {\n      return _emberData.default.PromiseArray.create({\n        promise: this.store.findAll('segment', { time_entry_id: this.get('id'), deleted_on: null })\n      });\n    }),\n\n    syncModels: Ember.observer('endTime', 'updatedOn', function () {\n      // segments are not available when time card has no end time\n      if (!Ember.isNone(this.get('endTime'))) {\n        // call update on segments to get any new segments\n        this.sync('segments', !this.get('deletedOn'));\n      }\n    }),\n\n    now: null,\n\n    /**\n     * Total of the time from start to end ( or now ) without break times included.\n     *\n     * @property regularTime\n     * @type number\n     */\n    regularTime: 0,\n\n    /**\n     * Total regular time with total break time removed\n     *\n     * @property totalTime\n     * @type number\n     */\n    totalTime: 0,\n\n    /**\n     * Total of all break times including open break time.\n     *\n     * @property breakTime\n     * @type number\n     */\n    breakTime: 0,\n\n    /**\n     * Total time for the current open break\n     *\n     * @property openBreakTime\n     * @type number\n     */\n    openBreakTime: 0,\n\n    /**\n     * Total time for the open entry time or the open break time\n     *\n     * This will switch from timeEntry to timeEntryBreak based on the onBreak flag\n     *\n     * @property elapsedTime\n     * @type number\n     */\n    elapsedTime: 0,\n\n    timerStarted: false,\n    timeTilUpdate: 60000,\n    timeout: null,\n    timeInterval: null,\n\n    setTimeInterval: function setTimeInterval(time) {\n      this.set('timeInterval', time);\n      this.elapsedTimer();\n    },\n\n\n    preBreakTime: Ember.computed('openBreakTime', function () {\n      //returns true if the break will start in the future (for rounding)\n      if (this.get('openBreakTime') < 0) {\n        return true;\n      }\n      return false;\n    }),\n\n    /**\n     * elapsedTimer checks to see if the time entry is open\n     * and calls elapsedTimeSetter every second for an open entry\n     *\n     * @private\n     * @method elapsedTimer\n     */\n    elapsedTimer: function elapsedTimer() {\n      var _this2 = this;\n\n      // if the time entry is open\n      // set up a time callback for 1 second from now\n      if (!Ember.isNone(this.get('timeInterval')) && Ember.isNone(this.get('endTime'))) {\n        var timer = this.get('timeInterval');\n\n        // make sure the timeInterval is a valid number\n        _utils.Assert.isNumber(timer);\n\n        var seconds = this.get('elapsedTime');\n        var timeLeft = Math.floor(seconds * 1000 % timer);\n        timer = timer - timeLeft;\n\n        // stop the timer from getting multiple\n        // time calls at once.\n        if (!this.timerStarted || this.get('timeTilUpdate') > timer) {\n          Ember.run.cancel(this.get('timeout'));\n          this.timerStarted = true;\n\n          this.set('timeout', Ember.run.later(function () {\n            _this2.timerStarted = false;\n            _this2.calculateTime();\n            _this2.elapsedTimer();\n          }, timer));\n\n          this.set('timeTilUpdate', timer);\n        }\n      }\n    },\n    calculateTime: function calculateTime() {\n      if (!Ember.isNone(this.get('startTime'))) {\n        var startTime = this.get('startTime');\n        var endTime = this.get('endTime');\n        var regularTime = this.calcRegularTime(startTime, endTime);\n        var breakTime = this.calcBreakTime(startTime, endTime);\n        var openBreakTime = this.calOpenBreakTime();\n        var totalTime = regularTime - (breakTime + openBreakTime);\n\n        this.set('regularTime', regularTime);\n        this.set('breakTime', breakTime);\n        this.set('openBreakTime', openBreakTime);\n        this.set('totalTime', totalTime);\n\n        this.propertyWillChange('elapsedTime');\n        if (this.get('onBreak')) {\n          this.set('elapsedTime', openBreakTime);\n        } else {\n          this.set('elapsedTime', totalTime);\n        }\n        this.propertyDidChange('elapsedTime');\n      }\n    },\n\n\n    // variables\n    calcRegularTime: function calcRegularTime(startTime, endTime) {\n      _utils.Assert.funcNumArgs(arguments, 2);\n      _utils.Assert.isNumber(startTime);\n\n      var total = 0;\n      if (!Ember.isNone(startTime)) {\n        if (!Ember.isNone(endTime)) {\n          total = endTime - startTime + 1;\n        } else {\n          total = this.getElapsedRunningTime(startTime);\n        }\n      }\n      return total;\n    },\n    calcTotalTime: function calcTotalTime() {\n      // remove the breakTime from the total\n      return this.get('regularTime') - this.get('combinedBreakTime');\n    },\n    calcElapsedTime: function calcElapsedTime() {\n      var total = 0;\n      if (this.get('onBreak')) {\n        total = this.get('openBreakTime');\n      } else {\n        total = this.get('totalTime');\n      }\n      return total;\n    },\n\n\n    /**\n     * triggers a refresh of the breakTime\n     * when a new break entry is added to the time entry\n     *\n     * @property breakTime\n     * @type Number\n     */\n    calcBreakTime: function calcBreakTime(startTime, endTime) {\n      var time = 0;\n      var timeEntryBreaks = this.get('timeEntryBreaks');\n\n      // validate all breaks to make sure they fit within this time entry bounds\n      timeEntryBreaks.forEach(function (breakEntry) {\n        // reset flags and revalidate breaks;\n        breakEntry.resetFlags();\n\n        // validate break time\n        breakEntry.validateTime(startTime, endTime);\n      });\n\n      // validate all breaks to make sure they dont overlap other breaks\n      timeEntryBreaks.forEach(function (breakEntry) {\n        // make sure the break is valid\n        if (!breakEntry.get('invalidEntry')) {\n          timeEntryBreaks.forEach(function (breakEntry2) {\n            breakEntry.adjustOverlap(breakEntry2);\n          });\n\n          time += breakEntry.get('totalTime');\n        }\n      });\n\n      return time;\n    },\n    calOpenBreakTime: function calOpenBreakTime() {\n      var total = 0;\n      if (this.get('onBreak')) {\n        total = this.getElapsedRunningTime(this.get('openBreak.startTime'));\n      }\n      return total;\n    },\n\n\n    isMultiDayEntry: Ember.computed('startTime', 'endTime', function () {\n      if (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n        if (_utils.Time.date(this.get('endTime')).date() !== _utils.Time.date(this.get('startTime')).date()) {\n          return true;\n        }\n      }\n      return false;\n    }),\n\n    dateString: Ember.computed('startTime', 'endTime', 'isMultiDayEntry', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n        var format = 'h:mm A';\n        if (this.get('isMultiDayEntry')) {\n          format = 'MMM Do h:mm A';\n        }\n        date = _timeEntry.default.timeRangeString(this, format);\n      }\n      return date;\n    }),\n\n    dateStringSafe: Ember.computed('startTime', 'endTime', 'isMultiDayEntry', function () {\n      var date = '';\n      if (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n        var format = 'h:mm A';\n        if (this.get('isMultiDayEntry')) {\n          format = 'MMM Do h:mm A';\n        }\n        date = _timeEntry.default.timeRangeString(this, format, true);\n      }\n      return date;\n    }),\n\n    validLocationTime: Ember.computed('auth.organization.{timeRounding,timeRoundingInterval}', function () {\n      if (!Ember.isNone(this.get('auth.organization'))) {\n        return (0, _maps.validTimeOffset)(this.get('auth.organization'));\n      }\n    }),\n\n    isStartLocationValid: Ember.computed('startLocation.createdOn', 'startLocationId', 'startTime', 'offset', 'validLocationTime', function () {\n      var validLocTime = this.get('validLocationTime');\n      var isValid = false;\n      if (!Ember.isNone(this.get('startLocation.createdOn'))) {\n        var locCreatedOn = this.get('startLocation.createdOn') + this.get('offset');\n        if (locCreatedOn >= this.get('startTime') - validLocTime && locCreatedOn <= this.get('startTime') + validLocTime) {\n\n          // disable showing (0, 0) GPS locations\n          if ((0, _maps.isValidLatLng)(this.get('startLocation'))) {\n            isValid = true;\n          }\n        }\n      }\n      return isValid;\n    }),\n\n    isEndLocationValid: Ember.computed('endLocation.createdOn', 'endLocationId', 'endTime', 'offset', 'validLocationTime', function () {\n      var validLocTime = this.get('validLocationTime');\n      var isValid = false;\n      if (!Ember.isNone(this.get('endLocation.createdOn')) && !Ember.isNone(this.get('endTime'))) {\n        var locCreatedOn = this.get('endLocation.createdOn') + this.get('offset');\n        if (locCreatedOn >= this.get('endTime') - validLocTime && locCreatedOn <= this.get('endTime') + validLocTime) {\n\n          // disable showing (0, 0) GPS locations\n          if ((0, _maps.isValidLatLng)(this.get('endLocation'))) {\n            isValid = true;\n          }\n        }\n      }\n      return isValid;\n    }),\n\n    hasLocations: Ember.computed('isStartLocationValid', 'isEndLocationValid', 'timeEntryBreaks.@each.{isStartLocationValid,isEndLocationValid}', 'timeEntryLocations', function () {\n      var validBreaks = this.getWithDefault('timeEntryBreaks', []).filter(function (item) {\n        return item.get('isStartLocationValid') || item.get('isEndLocationValid');\n      });\n\n      return this.get('isStartLocationValid') || this.get('isEndLocationValid') || validBreaks.length > 0 || this.get('timeEntryLocations.length') > 0;\n    }),\n\n    endTimeDay: Ember.computed('endTime', function () {\n      var endTime = this.get('endTime');\n      return _utils.Time.date(endTime).format('MMM Do');\n    }),\n\n    /**\n     * returns the total time from start to\n     * finish of the timecard not including any\n     * break entries\n     *\n     * @public\n     * @method getElapsedRunningTime\n     * @returns {number} total time of the entry in seconds\n     */\n    getElapsedRunningTime: function getElapsedRunningTime(startTime) {\n      var total = 0;\n      if (!Ember.isNone(startTime)) {\n        // Get the models UTC timestamp\n        startTime = _utils.Time.timestamp(startTime);\n\n        // Get the current UTC timestamp\n        var currentTime = _utils.Time.nistTimestamp();\n        var currentOffset = _utils.Time.timezone();\n\n        currentTime = currentTime - currentOffset + this.get('offset');\n\n        // return the difference\n        total = currentTime - startTime;\n      }\n      return total;\n    },\n    validateBreakTime: function validateBreakTime(breakEntry) {\n      _timeEntryBreak.default.validateTime(breakEntry, this.get('startTime'), this.get('endTime'));\n    },\n\n\n    combinedBreakTime: Ember.computed('breakTime', 'openBreakTime', function () {\n      return this.get('breakTime') + this.get('openBreakTime');\n    }),\n\n    onBreak: Ember.computed('openBreak', function () {\n      return !Ember.isNone(this.get('openBreak'));\n    }),\n\n    openRoundedBreak: Ember.computed('timeEntryBreaks.@each', function () {\n      var currentTime = _utils.Time.nistTimestamp();\n      var roundedBreak = [];\n      this.get('timeEntryBreaks').forEach(function (breakEntry) {\n        if (!Ember.isNone(breakEntry.get('endTime'))) {\n          if (breakEntry.get('endTime') > currentTime && breakEntry.get('startTime') < currentTime) {\n            roundedBreak.push(breakEntry);\n          }\n        }\n      });\n      return roundedBreak;\n    }),\n\n    /**\n     * elapsedTimeString returns the current running total for\n     * the timeEntry or the current running time for the open break entry when\n     * the onBreak flag is true.\n     *\n     * @property elapsedTimeString\n     * @type string\n     */\n    elapsedTimeSecondString: Ember.computed('elapsedTime', function () {\n      return this.convertSeconds(this.get('elapsedTime'), true);\n    }),\n\n    /**\n     * elapsedTimeString returns the current running total for\n     * the timeEntry or the current running time for the open break entry when\n     * the onBreak flag is true.\n     *\n     * @property elapsedTimeString\n     * @type string\n     */\n    elapsedTimeString: Ember.computed('elapsedTime', function () {\n      return this.convertSeconds(this.get('elapsedTime'));\n    }),\n\n    /**\n     * regularTimeString returns the current total of the time entry\n     * from start to finish or start to current with the break entries\n     * not removing any time from the total.\n     *\n     * @property regularTimeString\n     * @type string\n     */\n    regularTimeString: Ember.computed('regularTime', function () {\n      return this.convertSeconds(this.get('regularTime'));\n    }),\n\n    /**\n     * totalTimeString returns the total time of the time entry\n     * from start to finish or start to current minus the break\n     * times of the entry.\n     *\n     * @property totalTimeString\n     * @type string\n     */\n    totalTimeString: Ember.computed('totalTime', function () {\n      return this.convertSeconds(this.get('totalTime'));\n    }),\n\n    /**\n     * returns a total of all the break times including the\n     * current incrementing open break\n     *\n     * @property breakTimeString\n     * @type string\n     */\n    breakTimeString: Ember.computed('breakTime', function () {\n      return this.convertSeconds(this.get('breakTime'));\n    }),\n\n    /**\n     * converts int seconds to hours:minutes(:seconds) string\n     *\n     * @public\n     * @method convertSeconds\n     * @param seconds {number} number of seconds to convert.\n     * @param includeSeconds {boolean} true if the return string should include seconds `default: false`\n     * @return {string}\n     */\n    convertSeconds: function convertSeconds(seconds) {\n      var includeSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      return _utils.Time.convertSecondsString(seconds, 10, true, includeSeconds);\n    },\n\n\n    futureTime: Ember.computed('startTime', 'totalTime', function () {\n      var time = '';\n      if (this.get('startTime') > _utils.Time.nistTimestamp()) {\n        var start = _utils.Time.date(this.get('startTime'));\n        var now = _utils.Time.date();\n        var format = 'h:mm A';\n\n        if (start.year() !== now.year()) {\n          format = 'ddd, MMM Do, YYYY' + ' ' + format;\n        } else if (start.month() !== now.month()) {\n          format = 'ddd, MMM Do' + ' ' + format;\n        } else if (start.date() - now.date() > 6) {\n          format = 'ddd, Do ' + format;\n        } else if (start.date() - now.date() > 0) {\n          format = 'ddd ' + format;\n        }\n        time = _utils.Time.timeFormat(this.get('startTime'), format);\n      }\n      return time;\n    }),\n\n    futureBreakTime: Ember.computed('openBreak.{startTime,totalTime}', function () {\n      var time = '';\n      if (this.get('openBreak.startTime') > _utils.Time.nistTimestamp()) {\n        var start = _utils.Time.date(this.get('openBreak.startTime'));\n        var now = _utils.Time.date();\n        var format = 'h:mm A';\n\n        if (start.year() !== now.year()) {\n          format = 'ddd, MMM Do, YYYY' + ' ' + format;\n        } else if (start.month() !== now.month()) {\n          format = 'ddd, MMM Do' + ' ' + format;\n        } else if (start.date() - now.date() > 6) {\n          format = 'ddd, Do ' + format;\n        } else if (start.date() - now.date() > 0) {\n          format = 'ddd ' + format;\n        }\n        time = _utils.Time.timeFormat(this.get('openBreak.startTime'), format);\n      }\n      return time;\n    }),\n\n    fullProjectTitle: Ember.computed('project.fullTitle', function () {\n      var title = '';\n      if (!Ember.isNone(this.get('project.title'))) {\n        title = this.get('project.fullTitle');\n      }\n      return title;\n    }),\n\n    projectTitle: Ember.computed('project.title', function () {\n      var title = '';\n      if (!Ember.isNone(this.get('project.title'))) {\n        title = this.get('project.title');\n      }\n      return title;\n    }),\n\n    costCodeTitle: Ember.computed('costCode.costCode', function () {\n      var title = '';\n      if (!Ember.isNone(this.get('costCode.costCode'))) {\n        title = this.get('costCode.costCode');\n      }\n      return title;\n    }),\n\n    equipmentTitle: Ember.computed('equipment.equipmentName', function () {\n      var title = '';\n      if (!Ember.isNone(this.get('equipment.equipmentName'))) {\n        title = this.get('equipment.equipmentName');\n      }\n      return title;\n    }),\n\n    startString: Ember.computed('startTime', function () {\n      return _utils.Time.timeFormat(this.get('startTime'), 'MMMM Do YYYY, h:mm A');\n    }),\n\n    startTimeString: Ember.computed('startTime', function () {\n      return _utils.Time.timeFormat(this.get('startTime'), 'h:mm A');\n    }),\n\n    startDateString: Ember.computed('startTime', function () {\n      return _utils.Time.timeFormat(this.get('startTime'), 'MMMM Do, YYYY');\n    }),\n\n    endString: Ember.computed('endTime', function () {\n      return _utils.Time.timeFormat(this.get('endTime'), 'MMMM Do YYYY, h:mm A');\n    }),\n\n    endTimeString: Ember.computed('endTime', function () {\n      return _utils.Time.timeFormat(this.get('endTime'), 'h:mm A');\n    }),\n\n    endDateString: Ember.computed('endTime', function () {\n      return _utils.Time.timeFormat(this.get('endTime'), 'MMMM Do YYYY');\n    }),\n\n    isStartOutside: Ember.computed('startTime', 'segmentStartTime', function () {\n      return this.get('startTime') === this.get('segmentStartTime');\n    }),\n\n    isEndOutside: Ember.computed('endTime', 'segmentEndTime', function () {\n      return this.get('endTime') === this.get('segmentEndTime');\n    }),\n\n    segmentStartTime: Ember.computed('segments.@each.startTime', function () {\n      var start = this.get('segments').mapBy('startTime').reduce(function (a, b) {\n        return a < b ? a : b;\n      }, this.get('startTime'));\n      return start;\n    }),\n\n    segmentEndTime: Ember.computed('segments.@each.endTime', function () {\n      var end = this.get('segments').mapBy('endTime').reduce(function (a, b) {\n        return a < b ? b : a;\n      }, this.get('endTime'));\n      return end;\n    }),\n\n    segmentRegularSeconds: Ember.computed('segments.@each.regularSeconds', function () {\n      return this.get('segments').mapBy('regularSeconds').reduce(function (a, b) {\n        return a + b;\n      }, 0);\n    }).meta({ aggregateType: 'sum' }),\n\n    segmentOvertimeSeconds: Ember.computed('seconds.@each.overtimeSeconds', function () {\n      return this.get('segments').mapBy('overtimeSeconds').reduce(function (a, b) {\n        return a + b;\n      }, 0);\n    }).meta({ aggregateType: 'sum' }),\n\n    segmentDoubletimeSeconds: Ember.computed('seconds.@each.doubletimeSeconds', function () {\n      return this.get('segments').mapBy('doubletimeSeconds').reduce(function (a, b) {\n        return a + b;\n      }, 0);\n    }).meta({ aggregateType: 'sum' }),\n\n    segmentTotalSeconds: Ember.computed('segments.@each.{totalSeconds,updatedOn}', function () {\n      return this.get('segments').mapBy('totalSeconds').reduce(function (a, b) {\n        return a + b;\n      }, 0);\n    }).meta({ aggregateType: 'sum' }),\n\n    segmentBreakTimeSeconds: Ember.computed('segments.@each.breakSeconds', function () {\n      return this.get('segments').mapBy('breakSeconds').reduce(function (a, b) {\n        return a + b;\n      }, 0);\n    }).meta({ aggregateType: 'sum' }),\n\n    /**\n     * Add a break to the time entry breaks list\n     *\n     * @public\n     * @chainable\n     * @method reloadBreaks\n     * @return {Promise}\n     */\n    reloadBreaks: function reloadBreaks() {\n      if (this.get('timeEntryBreaks.reload')) {\n        return this.get('timeEntryBreaks').reload();\n      } else {\n        return this.get('timeEntryBreaks');\n      }\n    },\n    createBreak: function createBreak(startTime, endTime) {\n      var _this3 = this;\n\n      var paidBreak = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      startTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), startTime, { isBreak: true });\n      endTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), endTime, { isBreak: true });\n\n      if (!Ember.isNone(this.get('endTime')) && endTime > this.get('endTime')) {\n        endTime = this.get('endTime');\n      }\n\n      var breakTime = this.store.createRecord('time-entry-break', {\n        id: _utils.UUID.generate(),\n        timeEntryId: this.id,\n        actionType: 50,\n        paidBreak: paidBreak,\n        startTime: startTime,\n        endTime: endTime,\n        timeEntry: this\n      });\n\n      Ember.RSVP.resolve(this.get('timeEntryBreaks')).then(function () {\n        return _this3.get('timeEntryBreaks').pushObject(breakTime);\n      });\n      return breakTime;\n    },\n    startBreak: function startBreak() {\n      var paidBreak = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var _this4 = this;\n\n      var override = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var startLocation = arguments[2];\n\n      _utils.Assert.test(\"You have an open break entry already!\", Ember.isNone(this.get('openBreak.id')));\n      _utils.Assert.test(\"You can't start a break on a closed time entry!\", Ember.isNone(this.get('endTimeGmt')));\n\n      this.propertyWillChange('timeEntryBreaks');\n      var startTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), _utils.Time.nistTimestamp(), { isBreak: true });\n\n      var params = {\n        timeEntryId: this.id,\n        actionType: 10,\n        startTime: startTime,\n        paidBreak: paidBreak,\n        startLocation: startLocation,\n        timeEntry: this\n      };\n\n      var _break = this.store.createRecord('time-entry-break', params);\n\n      this.set('actionType', 70);\n      return this.saveLog().then(function (log) {\n        return _break.save(_this4, log.id, override).then(function (brk) {\n          _this4.propertyDidChange('timeEntryBreaks');\n          return Ember.RSVP.resolve(_this4.get('timeEntryBreaks')).then(function () {\n            return brk;\n          });\n        });\n      });\n    },\n    stopBreak: function stopBreak() {\n      var _this5 = this;\n\n      var override = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var endLocation = arguments[1];\n\n      var openBreak = this.get('openBreak');\n      _utils.Assert.test(\"You must provide a time-entry with an openBreak\", !Ember.isNone(openBreak) && !Ember.isNone(openBreak.get('id')));\n\n      this.propertyWillChange('timeEntryBreaks');\n\n      var endTime = (0, _roundTime.roundOrgTime)(this.get('auth.organization'), _utils.Time.nistTimestamp(), { isBreak: true });\n\n      openBreak.set('actionType', 20);\n      openBreak.set('endTime', endTime);\n\n      if (!Ember.isNone(endLocation)) {\n        openBreak.set('endLocation', endLocation);\n      }\n\n      this.set('actionType', 70);\n      return this.saveLog().then(function (log) {\n        return openBreak.save(_this5, log.id, override).then(function (brk) {\n          _this5.propertyDidChange('timeEntryBreaks');\n          return Ember.RSVP.resolve(_this5.get('timeEntryBreaks')).then(function () {\n            return brk;\n          });\n        });\n      });\n    },\n    saveBreaks: function saveBreaks(log) {\n      var _this6 = this;\n\n      if (Ember.isNone(log)) {\n        this.set('actionType', 70);\n        return this.saveLog().then(function (_log) {\n          return _this6._saveBreaks(_log);\n        });\n      } else {\n        return this._saveBreaks(log);\n      }\n    },\n    _saveBreaks: function _saveBreaks(log) {\n      var _this7 = this;\n\n      this.propertyWillChange('timeEntryBreaks');\n      return Ember.RSVP.resolve(this.get('timeEntryBreaks')).then(function (breaks) {\n        var dirtyBreaks = breaks.filterBy('hasDirtyAttributes');\n        return Ember.RSVP.allSettled(dirtyBreaks.map(function (breakEntry) {\n          return Promise.resolve(breakEntry.save(_this7, log.id, true));\n        })).then(function () {\n          _this7.propertyDidChange('timeEntryBreaks');\n          return breaks;\n        });\n      });\n    },\n    removeBreak: function removeBreak(breakEntry, isResolve) {\n      this.propertyWillChange('timeEntryBreaks');\n      if (!breakEntry.get('isNew')) {\n        breakEntry.deleteRecord(isResolve);\n      } else {\n        this.get('timeEntryBreaks').removeObject(breakEntry);\n        breakEntry.unloadRecord();\n      }\n      this.propertyDidChange('timeEntryBreaks');\n\n      this.calculateTime();\n      return Ember.RSVP.resolve(this.get('timeEntryBreaks'));\n    },\n    rollbackBreaks: function rollbackBreaks() {\n      var _this8 = this;\n\n      if (!this.get('isDeleted')) {\n        this.get('timeEntryBreaks').forEach(function (item) {\n          if (Ember.get(item, 'isNew')) {\n            _this8.store.unloadRecord(item);\n          } else if (Ember.get(item, 'hasDirtyAttributes')) {\n            item.rollbackAttributes();\n          }\n        });\n      }\n    },\n    populate: function populate() {\n      var actionType = this.get('actionType');\n\n      (true && !(!Ember.isNone(actionType) && typeof actionType === 'number') && Ember.assert(\"You must provide the action type for a timeEntry action\", !Ember.isNone(actionType) && typeof actionType === 'number'));\n\n\n      if (actionType === 10 || actionType === 11) {\n        // clock in and clock in with location\n        var startTime = this.get('startTime');\n\n        this.set('startDeviceTime', _utils.Time.timestamp(startTime));\n        this.set('offset', _utils.Time.timezone(startTime));\n        this.set('daylightSavingTime', _utils.Time.isDST(startTime));\n        this.set('startTimeTrusted', _utils.Time.isTrustedTimeType());\n      } else if (actionType === 20 || actionType === 21) {\n        // clock out and clock out with location\n        var endTime = this.get('endTime');\n        var endDeviceTime = _utils.Time.timestamp(endTime);\n        var metaOffset = _utils.Time.timezone(endTime);\n\n        // convert endTime to the local time-entry offset time\n        endTime = endTime - metaOffset + this.get('offset');\n        endDeviceTime = endDeviceTime - metaOffset + this.get('offset');\n\n        this.set('endTime', endTime);\n        this.set('endDeviceTime', endDeviceTime);\n        this.set('metaOffset', metaOffset);\n        this.set('metaDaylightSavingTime', _utils.Time.isDST());\n        this.set('endTimeTrusted', _utils.Time.isTrustedTimeType());\n      } else if (actionType === 30 || actionType === 31) {\n        // clock in at and clock in at with location\n        var _startTime = this.get('startTime');\n\n        (true && !(!Ember.isNone(_startTime) && typeof _startTime === 'number') && Ember.assert(\"You must provide a startTime in seconds for a clock-in-at action\", !Ember.isNone(_startTime) && typeof _startTime === 'number'));\n\n\n        this.set('offset', _utils.Time.timezone(_startTime));\n        this.set('daylightSavingTime', _utils.Time.isDST(_startTime));\n        this.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n        this.set('startDeviceTime', _utils.Time.timestamp());\n      } else if (actionType === 40 || actionType === 41) {\n        // clock out at and clock out at with location\n        var _endTime = this.get('endTime');\n\n        (true && !(!Ember.isNone(_endTime) && typeof _endTime === 'number') && Ember.assert(\"You must provide a endTime in seconds for a manual entry action\", !Ember.isNone(_endTime) && typeof _endTime === 'number'));\n\n\n        var _metaOffset = _utils.Time.timezone(_endTime);\n\n        this.set('endTime', _endTime);\n        this.set('endDeviceTime', _endTime);\n        this.set('metaOffset', _metaOffset);\n        this.set('metaDaylightSavingTime', _utils.Time.isDST(_endTime));\n        this.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n      } else if (actionType === 50) {\n        // manual time action\n        var _startTime2 = this.get('startTime');\n        var _endTime2 = this.get('endTime');\n\n        (true && !(!Ember.isNone(_startTime2) && typeof _startTime2 === 'number') && Ember.assert(\"You must provide a startTime in seconds for a manual entry action\", !Ember.isNone(_startTime2) && typeof _startTime2 === 'number'));\n        (true && !(!Ember.isNone(_endTime2) && typeof _endTime2 === 'number') && Ember.assert(\"You must provide a endTime in seconds for a manual entry action\", !Ember.isNone(_endTime2) && typeof _endTime2 === 'number'));\n\n        // start\n\n        this.set('offset', _utils.Time.timezone(_startTime2));\n        this.set('daylightSavingTime', _utils.Time.isDST(_startTime2));\n        this.set('startDeviceTime', _startTime2);\n        this.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n\n        // end\n        this.set('metaOffset', _utils.Time.timezone(_endTime2));\n        this.set('metaDaylightSavingTime', _utils.Time.isDST(_endTime2));\n        this.set('endDeviceTime', _endTime2);\n        this.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n      } else if (actionType === 60 || actionType === 70 || actionType === 80) {\n        // edit time and resolve conflict\n        var _startTime3 = this.get('startTime');\n        if (!Ember.isNone(_startTime3) && !Ember.isNone(this._internalModel._attributes.startTime)) {\n          this.set('startDeviceTime', _startTime3);\n          this.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n        }\n\n        var _endTime3 = this.get('endTime');\n        if (!Ember.isNone(_endTime3) && !Ember.isNone(this._internalModel._attributes.endTime)) {\n          this.set('endDeviceTime', _endTime3);\n          this.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n        }\n        this.checkAddedAttrs();\n      }\n    },\n\n\n    /**\n     * Adds aditional fields to legacy timecards\n     * that were created before the truested time fields.\n     *\n     * this is to ensure that an edit of old timecards will have the new data.\n     *\n     */\n    checkAddedAttrs: function checkAddedAttrs() {\n      if (Ember.isNone(this.get('startDeviceTime'))) {\n        this.set('startDeviceTime', this.get('startTime'));\n      }\n\n      if (Ember.isNone(this.get('startTimeTrusted'))) {\n        this.set('startTimeTrusted', _utils.Time.isTrustedTimeType(true));\n      }\n\n      // only set this for time cards that are not open.\n      if (!Ember.isNone(this.get('endTime'))) {\n        if (Ember.isNone(this.get('endDeviceTime'))) {\n          this.set('endDeviceTime', this.get('endTime'));\n        }\n\n        if (Ember.isNone(this.get('endTimeTrusted'))) {\n          this.set('endTimeTrusted', _utils.Time.isTrustedTimeType(true));\n        }\n      }\n    },\n\n\n    onCreate: Ember.on('didCreate', function () {\n      this.set('_isValid', false);\n    }),\n\n    onLoad: Ember.on('didLoad', function () {\n      if (!this.get('hasDirtyAttributes')) {\n        this.set('_isValid', true);\n      }\n    }),\n\n    onUpdate: Ember.on('didUpdate', function () {\n      if (!this.get('hasDirtyAttributes')) {\n        this.set('_isValid', true);\n      }\n    }),\n\n    onRollback: Ember.on('rolledBack', function () {\n      if (!this.get('hasDirtyAttributes')) {\n        this.set('_isValid', true);\n      }\n    }),\n\n    onChange: Ember.observer('hasDirtyAttributes', function () {\n      if (this.get('hasDirtyAttributes') && this.get('_isValid')) {\n        this.set('_isValid', false);\n      }\n    }),\n\n    validate: function validate(validateOverlap, signInAnswers, authMember, covidRestricted, isFreeAccount) {\n      var _this9 = this;\n\n      if (!this.get('_isValid')) {\n        return Ember.RSVP.resolve(this.get('member.memberLock')).then(function () {\n          return _timeEntryValidator.default.timeEntry(_this9.get('auth.organization'), _this9, validateOverlap, signInAnswers, authMember, covidRestricted, isFreeAccount).then(function (result) {\n            if (result.isValid) {\n              _this9.set('_isValid', true);\n              return true;\n            } else {\n              return Ember.RSVP.reject(result);\n            }\n          });\n        });\n      } else {\n        return Ember.RSVP.resolve(true);\n      }\n    },\n    saveLog: function saveLog(actionType) {\n      return this.store.createRecord('client-time-entry-log', {\n        updaterMemberId: window.BusyApp._application.get('auth.member.id'),\n        originalTimeEntryId: this.id,\n        mergedTimeEntryId: this.get('mergedTimeEntryId'),\n        timeEntryId: this.id,\n        startTime: this.get('startTime'),\n        offset: this.get('offset'),\n        endTime: this.get('endTime'),\n        metaOffset: this.get('metaOffset'),\n        daylightSavingTime: this.get('daylightSavingTime'),\n        metaDaylightSavingTime: this.get('metaDaylightSavingTime'),\n        description: this.get('description'),\n        memberId: this.get('memberId'),\n        projectId: this.get('projectId'),\n        costCodeId: this.get('costCodeId'),\n        equipmentId: this.get('equipmentId'),\n        actionType: actionType || this.get('actionType'),\n        timeEntryCreatedOn: this.get('createdOn'),\n        timeEntryDeletedOn: this.get('deletedOn'),\n        deviceType: 'Web Browser',\n        startDeviceTime: this.get('startDeviceTime'),\n        endDeviceTime: this.get('endDeviceTime'),\n        startTimeTrusted: this.get('startTimeTrusted'),\n        endTimeTrusted: this.get('endTimeTrusted'),\n        startLocationId: this.get('startLocationId'),\n        endLocationId: this.get('endLocationId')\n      }).save();\n    },\n\n\n    /**\n     * closes any open breaks if the models action type is a type that\n     * requires breaks to be closed prior to taking the action\n     *\n     * @private\n     * @method _closeOpenBreak\n     * @return {Promise}\n     */\n    _closeOpenBreak: function _closeOpenBreak() {\n      var _this10 = this;\n\n      // close open break for clock out and clock out at actions\n      if ([20, 21, 40, 41].indexOf(this.get('actionType')) !== -1) {\n        // close the open break if there is an open break\n        var breakEntry = this.get('openBreak');\n        if (!Ember.isNone(breakEntry)) {\n          // stop break action type\n          breakEntry.set('actionType', 20);\n\n          // since this is only on clock out action types then use the entries endTime if it has been set\n          breakEntry.set('endTime', this.getWithDefault('endTime', _utils.Time.nistTimestamp()));\n\n          // save the time entry log with an edit action type\n          return this.saveLog(70).then(function (log) {\n            // save the open break\n            return breakEntry.save(_this10, log.id, true);\n          });\n        }\n      }\n\n      // return a promise if no breaks were saved\n      return Ember.RSVP.resolve();\n    },\n    deleteRecord: function deleteRecord(isResolve) {\n      this.set('actionType', isResolve ? 100 : 90);\n      this.set('deletedOn', _utils.Time.utcTimestamp());\n      return this;\n    },\n    save: function save() {\n      var forceSave = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var signInAnswers = arguments[1];\n      var authMember = arguments[2];\n\n      var _this11 = this;\n\n      var covidRestricted = arguments[3];\n      var isFreeAccount = arguments[4];\n\n      var validateOverlap = forceSave === true ? false : true;\n      if (!Ember.isNone(this.get('deletedOn'))) {\n        return this.saveLog().then(function () {\n          return _this11._internalModel.save();\n        });\n      } else {\n        return this.validate(validateOverlap, signInAnswers, authMember, covidRestricted, isFreeAccount).then(function () {\n          _this11.populate();\n          return _this11._save();\n        });\n      }\n    },\n    _save: function _save() {\n      var _this12 = this;\n\n      // closes any open breaks before performing certain action types\n      // closeOpenBreak will check for the action and close the break\n      // if it needs to be closed.\n      return this._closeOpenBreak().then(function () {\n        // save the model\n        return _this12._internalModel.save().then(function () {\n          // save the log\n          return _this12.saveLog().then(function (log) {\n            // save any other break changes\n            return _this12.saveBreaks(log).then(function () {\n              // return this model\n              return _this12;\n            });\n          });\n        });\n      });\n    }\n  });\n});","define('busy-app/models/time-off', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/time-entry-validator'], function (exports, _emberData, _utils, _timeEntryValidator) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tanalytics: Ember.inject.service('analytics'),\n\n\t\tmemberId: _emberData.default.attr('id', { sortable: true, sortBy: ['member.firstName', 'member.lastName'], sortChildren: ['startTime'], reverseSortChildren: true }),\n\t\tdateStamp: _emberData.default.attr('date', { sortable: true, reverseSort: true, sortBy: ['dateStamp'], sortChildren: ['member.firstName', 'member.lastName'] }),\n\t\tseconds: _emberData.default.attr('number', { defaultValue: 0, aggregateType: 'sum' }),\n\t\tdescription: _emberData.default.attr('string'),\n\t\tpaid: _emberData.default.attr('boolean'),\n\t\ttype: _emberData.default.attr('number'),\n\t\tsubmitterMemberId: _emberData.default.attr('id'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tcreatedOnOffset: _emberData.default.attr('number'),\n\t\tcreatedOnDaylightSavingTime: _emberData.default.attr('boolean'),\n\t\tupdatedOn: _emberData.default.attr('date'),\n\t\tdeletedOn: _emberData.default.attr('date'),\n\t\tsubmittedOn: _emberData.default.attr('date'),\n\n\t\tmember: _emberData.default.belongsTo('member'),\n\n\t\tisTimeOff: Ember.computed(function () {\n\t\t\treturn true;\n\t\t}).readOnly().meta({ aggregateType: 'bool' }),\n\n\t\tstartTime: Ember.computed('dateStamp', function () {\n\t\t\treturn _utils.Time.date(this.get('dateStamp')).startOf('day').unix();\n\t\t}).meta({ sortable: true, reverseSort: true, sortBy: ['startTime'], sortChildren: ['member.firstName', 'member.lastName'] }),\n\n\t\tendTime: Ember.computed('startTime', 'seconds', function () {\n\t\t\treturn this.get('startTime') + this.get('seconds');\n\t\t}),\n\n\t\toffset: Ember.computed('createdOnOffset', function () {\n\t\t\treturn this.get('createdOnOffset');\n\t\t}),\n\n\t\tdateString: Ember.computed('dateStamp', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('dateStamp'))) {\n\t\t\t\tdate = _utils.Time.dateFormat(_utils.Time.date(this.get('dateStamp')).startOf('day'), 'ddd. MMM Do, YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tsubmittedByMember: Ember.computed('submitterMemberId', function () {\n\t\t\tvar id = this.get('submitterMemberId');\n\t\t\tif (!Ember.isNone(id)) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.store.findRecord('member', id)\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tsubmittedBy: Ember.computed('submittedByMember.id', function () {\n\t\t\tif (!Ember.isNone(this.get('submittedByMember.id'))) {\n\t\t\t\treturn this.get('submittedByMember.fullName');\n\t\t\t}\n\t\t\treturn '';\n\t\t}),\n\n\t\tdateStringReport: Ember.computed('dateStamp', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('dateStamp'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('dateStamp'), 'M/D/YY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tsubmittedOnString: Ember.computed('submittedOn', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('submittedOn'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('submittedOn') + this.get('createdOnOffset'), 'MMMM D, YYYY @h:mm A');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\ttypeStringShort: Ember.computed('type', function () {\n\t\t\tvar typeInt = this.get('type');\n\t\t\tvar typeString = '';\n\t\t\tif (!Ember.isNone(typeInt)) {\n\t\t\t\tif (typeInt === 10) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('HOL');\n\t\t\t\t} else if (typeInt === 20) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('PTO');\n\t\t\t\t} else if (typeInt === 30) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('SIC');\n\t\t\t\t} else if (typeInt === 40) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('VAC');\n\t\t\t\t} else if (typeInt === 50) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('OTH');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn typeString;\n\t\t}),\n\n\t\tgetType: Ember.computed('type', function () {\n\t\t\tvar typeInt = this.get('type');\n\t\t\tvar typeString = '';\n\t\t\tif (!Ember.isNone(typeInt)) {\n\t\t\t\tif (typeInt === 10) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('Holiday');\n\t\t\t\t} else if (typeInt === 20) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('Personal');\n\t\t\t\t} else if (typeInt === 30) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('Sick');\n\t\t\t\t} else if (typeInt === 40) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('Vacation');\n\t\t\t\t} else if (typeInt === 50) {\n\t\t\t\t\ttypeString = (0, _utils.loc)('Other');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn typeString;\n\t\t}),\n\n\t\tpaidString: Ember.computed('paid', function () {\n\t\t\tvar isPaid = null;\n\t\t\tif (!Ember.isNone(this.get('paid'))) {\n\t\t\t\tif (this.get('paid')) {\n\t\t\t\t\tisPaid = (0, _utils.loc)(\"Paid\");\n\t\t\t\t} else {\n\t\t\t\t\tisPaid = (0, _utils.loc)(\"Unpaid\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isPaid;\n\t\t}),\n\n\t\ttotalString: Ember.computed('seconds', function () {\n\t\t\tvar hours = 0;\n\t\t\tvar minutes = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\thours = Math.floor(this.get('seconds') / 60 / 60);\n\t\t\t\tminutes = Math.floor((this.get('seconds') - hours * 60 * 60) / 60);\n\t\t\t}\n\t\t\treturn (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes);\n\t\t}),\n\n\t\tonCreate: Ember.on('didCreate', function () {\n\t\t\tthis.set('_isValid', false);\n\t\t}),\n\n\t\tonLoad: Ember.on('didLoad', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonUpdate: Ember.on('didUpdate', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonRollback: Ember.on('rolledBack', function () {\n\t\t\tif (!this.get('hasDirtyAttributes')) {\n\t\t\t\tthis.set('_isValid', true);\n\t\t\t}\n\t\t}),\n\n\t\tonChange: Ember.observer('hasDirtyAttributes', function () {\n\t\t\tif (this.get('hasDirtyAttributes') && this.get('_isValid')) {\n\t\t\t\tthis.set('_isValid', false);\n\t\t\t}\n\t\t}),\n\n\t\tvalidate: function validate(validateOverlap, isMulti) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('_isValid')) {\n\t\t\t\treturn _timeEntryValidator.default.timeOff(this, validateOverlap, isMulti).then(function (result) {\n\t\t\t\t\tif (result.isValid) {\n\t\t\t\t\t\t_this.set('_isValid', true);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Ember.RSVP.reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(true);\n\t\t\t}\n\t\t},\n\n\n\t\tsegmentStartTime: Ember.computed.alias('startTime'),\n\t\tsegmentEndTime: Ember.computed.alias('endTime'),\n\n\t\tsegmentRegularSeconds: Ember.computed('seconds', function () {\n\t\t\treturn this.get('seconds') || 0;\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tsegmentTotalSeconds: Ember.computed('segmentRegularSeconds', function () {\n\t\t\treturn this.get('segmentRegularSeconds');\n\t\t}).meta({ aggregateType: 'sum' }),\n\n\t\tisFuture: Ember.computed('dateStamp', function () {\n\t\t\tvar date = _utils.Time.timestamp();\n\t\t\tif (this.get('dateStamp') > date) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}),\n\n\t\tsave: function save() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar forceSave = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\t\tvar isMulti = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tvar validateOverlap = forceSave === true ? false : true;\n\t\t\tif (this.get('isDeleted')) {\n\t\t\t\treturn this._save();\n\t\t\t} else {\n\t\t\t\treturn this.validate(validateOverlap, isMulti).then(function () {\n\t\t\t\t\treturn _this2._save();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_save: function _save() {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this._internalModel.save().then(function () {\n\t\t\t\t// submit happy oficer event\n\t\t\t\tvar source = 'from_' + _this3.get('analytics').generateTitle(window.location.pathname);\n\t\t\t\t_this3.get('analytics').addEvent(55, { navSource: source, targetMemberIds: [_this3.get('memberId')], deleted: !Ember.isNone(_this3.get('deletedOn')) });\n\n\t\t\t\treturn _this3;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/models/user', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    email: _emberData.default.attr('string'),\n    password: _emberData.default.attr('string'),\n    firstName: _emberData.default.attr('string'),\n    lastName: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    role: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n    isEmailVerified: _emberData.default.attr('boolean')\n  });\n});","define('busy-app/models/username-valid', ['exports', 'ember-data', '@busy-web/data'], function (exports, _emberData, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var Model = _emberData.default.Model,\n      attr = _emberData.default.attr;\n  exports.default = Model.extend(_data.RPCModelMixin, {\n    _clientName: 'account',\n    _methodName: 'username-available',\n\n    value: attr('boolean')\n  });\n});","define('busy-app/models/wage-history', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Model.extend({\n\t\tmemberId: _emberData.default.attr('string'),\n\t\twage: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\twageRate: _emberData.default.attr('number', { defaultValue: 10 }),\n\t\tchangeDate: _emberData.default.attr('number'),\n\t\toverburden: _emberData.default.attr('number', { defaultValue: 0 }),\n\t\teffectiveRate: _emberData.default.attr('number'), //, {defaultValue: 0}),\n\t\tworkWeek: _emberData.default.attr('number'),\n\t\tupdatedOn: _emberData.default.attr('number'),\n\t\tcreatedOn: _emberData.default.attr('number'),\n\t\tsubmittedOn: _emberData.default.attr('number'),\n\t\tdeletedOn: _emberData.default.attr('number'),\n\n\t\tmember: _emberData.default.belongsTo('member', { inverse: 'wageHistory' }),\n\n\t\tisLocked: Ember.computed('member.lockDate', function () {\n\t\t\treturn this.get('changeDate') <= this.get('member.lockDate');\n\t\t}),\n\n\t\tisDefault: Ember.computed('changeDate', function () {\n\t\t\tif (this.get('changeDate') === 345600) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thourlyRate: Ember.computed('wageRate', 'wage', 'workWeek', function () {\n\t\t\tvar hours = parseInt(this.get('workWeek'), 10) || 40;\n\t\t\tvar rate = parseInt(this.get('wageRate'), 10) || 10;\n\t\t\tvar wage = parseFloat(this.get('wage')) || 0;\n\t\t\tif (rate === 30) {\n\t\t\t\twage = wage / hours;\n\t\t\t} else if (rate === 40) {\n\t\t\t\twage = wage * 12 / 52 / hours;\n\t\t\t} else if (rate === 50) {\n\t\t\t\twage = wage / 52 / hours;\n\t\t\t}\n\t\t\treturn wage.toFixed(2);\n\t\t}),\n\n\t\tisHourly: Ember.computed.equal('wageRate', 10),\n\t\tisSalary: Ember.computed.not('isHourly'),\n\n\t\thourlyCost: Ember.computed('hourlyRate', 'overburden', function () {\n\t\t\tvar wage = parseFloat(this.get('hourlyRate')) || 0;\n\t\t\tvar bdn = parseFloat(this.get('overburden')) || 0;\n\t\t\tvar burdenpct = bdn / 100;\n\t\t\tvar overburden = burdenpct * wage;\n\t\t\treturn wage + overburden;\n\t\t}),\n\n\t\twageRateTitle: Ember.computed('wageRate', function () {\n\t\t\tvar rate = this.get('wageRate');\n\t\t\tif (rate === 10) {\n\t\t\t\treturn (0, _utils.loc)('Hourly');\n\t\t\t} else if (rate === 30) {\n\t\t\t\treturn (0, _utils.loc)('Weekly');\n\t\t\t} else if (rate === 40) {\n\t\t\t\treturn (0, _utils.loc)('Monthly');\n\t\t\t} else if (rate === 50) {\n\t\t\t\treturn (0, _utils.loc)('Yearly');\n\t\t\t} else {\n\t\t\t\t(true && Ember.warn('WageRate was set to an unknown type'));\n\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}),\n\n\t\twageRatePer: Ember.computed('wageRate', function () {\n\t\t\tvar rate = this.get('wageRate');\n\t\t\tif (rate === 10) {\n\t\t\t\treturn (0, _utils.loc)('/hr');\n\t\t\t} else if (rate === 30) {\n\t\t\t\treturn (0, _utils.loc)('/week');\n\t\t\t} else if (rate === 40) {\n\t\t\t\treturn (0, _utils.loc)('/month');\n\t\t\t} else if (rate === 50) {\n\t\t\t\treturn (0, _utils.loc)('/year');\n\t\t\t} else {\n\t\t\t\t(true && Ember.warn('WageRate was set to an unknown type'));\n\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}),\n\n\t\tformattedDate: Ember.computed('changeDate', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('changeDate'))) {\n\t\t\t\t// hides the Jan 7 1970 and shows\n\t\t\t\t// beginning\n\t\t\t\tif (this.get('changeDate') === 345600) {\n\t\t\t\t\tdate = (0, _utils.loc)('Beginning');\n\t\t\t\t} else {\n\t\t\t\t\tdate = _utils.Time.timeFormat(this.get('changeDate'), 'll');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tcreatedDate: Ember.computed('createdOn', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('createdOn'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('createdOn'), 'll');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\twageAmountString: Ember.computed('wage', function () {\n\t\t\treturn this.get('wage').toFixed(2);\n\t\t}),\n\n\t\twageAmountPerRateString: Ember.computed('wageAmountString', 'wageRatePer', function () {\n\t\t\treturn this.get('wageAmountString') + this.get('wageRatePer');\n\t\t}),\n\n\t\twageString: Ember.computed('wage', 'wageRate', function () {\n\t\t\tvar wageRate = this.get('wageRate');\n\t\t\tvar wageString = this.get('wage').toFixed(2);\n\t\t\tif (!Ember.isNone(this.get('wage'))) {\n\t\t\t\tif (wageRate === 10) {\n\t\t\t\t\twageString = wageString + (0, _utils.loc)('/hour');\n\t\t\t\t} else if (wageRate === 20) {\n\t\t\t\t\twageString = wageString + (0, _utils.loc)('/week');\n\t\t\t\t} else if (wageRate === 30) {\n\t\t\t\t\twageString = wageString + ' ' + (0, _utils.loc)('Semimonthly');\n\t\t\t\t} else if (wageRate === 40) {\n\t\t\t\t\twageString = wageString + ' ' + (0, _utils.loc)('Monthly');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn wageString;\n\t\t}),\n\n\t\toverburdenString: Ember.computed('overburden', function () {\n\t\t\treturn this.get('overburden') + '%';\n\t\t}),\n\n\t\tannualSalary: Ember.computed('wage,wageRate,isHourly', function () {\n\t\t\tvar _getProperties = this.getProperties(['wage', 'wageRate', 'isHourly']),\n\t\t\t    wage = _getProperties.wage,\n\t\t\t    wageRate = _getProperties.wageRate,\n\t\t\t    isHourly = _getProperties.isHourly;\n\n\t\t\tif (isHourly || Ember.isNone(wage) || Ember.isNone(wageRate)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (wageRate === 30) {\n\t\t\t\treturn wage * 52; // convert weekly salary to yearly\n\t\t\t} else if (wageRate === 40) {\n\t\t\t\treturn wage * 12; // convert monthly salary to yearly\n\t\t\t} else if (wageRate === 50) {\n\t\t\t\treturn wage; // return yearly as is\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid wageRate');\n\t\t\t}\n\t\t}),\n\n\t\tgetPayPeriodSalary: function getPayPeriodSalary(payPeriodType) {\n\t\t\tvar _getProperties2 = this.getProperties(['annualSalary', 'isHourly']),\n\t\t\t    annualSalary = _getProperties2.annualSalary,\n\t\t\t    isHourly = _getProperties2.isHourly;\n\n\t\t\tif (isHourly || Ember.isNone(payPeriodType) || Ember.isNone(annualSalary)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (payPeriodType === 10) {\n\t\t\t\treturn annualSalary / 52; // calculate weekly salary from yearly\n\t\t\t} else if (payPeriodType === 20) {\n\t\t\t\treturn annualSalary / 26; // calculate bi weekly salary from yearly\n\t\t\t} else if (payPeriodType === 30) {\n\t\t\t\treturn annualSalary / 24; // calculate bi monthly salary from yearly\n\t\t\t} else if (payPeriodType === 40) {\n\t\t\t\treturn annualSalary / 12; // calculate monthly salary from yearly\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid payPeriodType');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/models/workers-comp', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Model.extend({\n    title: _emberData.default.attr('string'),\n    organizationId: _emberData.default.attr('string'),\n    createdOn: _emberData.default.attr('number'),\n    deletedOn: _emberData.default.attr('number'),\n    submittedOn: _emberData.default.attr('number'),\n    updatedOn: _emberData.default.attr('number'),\n\n    type: (0, _utils.loc)(\"Workers' Compensation\"),\n    typeKey: 'workers-comp'\n  });\n});","define('busy-app/polymorphs/base', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.ObjectProxy.extend({\n    features: Ember.inject.service('features')\n  });\n});","define('busy-app/polymorphs/custom-wage-date/payroll-member', ['exports', 'busy-app/utils/collection', 'busy-app/polymorphs/pay-period-member'], function (exports, _collection, _payPeriodMember) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _payPeriodMember.default.extend({\n\t\twage: null,\n\t\twageHistory: null,\n\t\tpayPeriodType: null,\n\t\tprojects: null,\n\t\tnestedMember: false,\n\n\t\thasChildren: Ember.computed('projects.[]', function () {\n\t\t\treturn !Ember.isEmpty(Ember.get(this, 'projects'));\n\t\t}),\n\n\t\thasRegular: Ember.computed('regularSeconds', 'regularCost', 'totalRegularSeconds', 'totalRegularCost', function () {\n\t\t\tif (Ember.get(this, 'regularSeconds') > 0 || Ember.get(this, 'regularCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (Ember.get(this, 'nestedMember') && (Ember.get(this, 'totalRegularSeconds') > 0 || Ember.get(this, 'totalRegularCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasOvertime: Ember.computed('overtimeSeconds', 'overtimeCost', 'totalOvertimeSeconds', 'totalOvertimeCost', function () {\n\t\t\tif (Ember.get(this, 'overtimeSeconds') > 0 || Ember.get(this, 'overtimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (Ember.get(this, 'nestedMember') && (Ember.get(this, 'totalOvertimeSeconds') > 0 || Ember.get(this, 'totalOvertimeCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasDoubletime: Ember.computed('doubletimeSeconds', 'doubletimeCost', 'totalDoubletimeSeconds', 'totalDoubletimeCost', function () {\n\t\t\tif (Ember.get(this, 'doubletimeSeconds') > 0 || Ember.get(this, 'doubletimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (Ember.get(this, 'nestedMember') && (Ember.get(this, 'totalDoubletimeSeconds') > 0 || Ember.get(this, 'totalDoubletimeCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t/**\n   * regular seconds should be used when dealing with member only data.\n   * When dealing with pay-period-member-project-seconds this will give you\n   * the seconds without the child seconds factored in.\n   */\n\t\tregularSeconds: Ember.computed('seconds.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, ['regularSeconds', 'overtimeSeconds', 'doubletimeSeconds']);\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'regularSeconds');\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * totalRegularSeconds will provide child regular seconds as well as regualr seconds.\n   */\n\t\ttotalRegularSeconds: Ember.computed('seconds.@each.{totalRegularSeconds,totalOvertimeSeconds,totalDoubletimeSeconds}', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, ['totalRegularSeconds', 'totalOvertimeSeconds', 'totalDoubletimeSeconds']);\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'totalRegularSeconds');\n\t\t\t}\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('seconds.@each.overtimeSeconds', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'overtimeSeconds');\n\t\t\t}\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('seconds.@each.totalOvertimeSeconds', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'totalOvertimeSeconds');\n\t\t\t}\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('seconds.@each.doubletimeSeconds', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'doubletimeSeconds');\n\t\t\t}\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('seconds.@each.totalDoubletimeSeconds', 'wage.isSalary', function () {\n\t\t\tvar seconds = Ember.get(this, 'seconds');\n\n\t\t\tif (Ember.isNone(seconds) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(seconds, 'totalDoubletimeSeconds');\n\t\t\t}\n\t\t}),\n\n\t\tregularCost: Ember.computed('cost.@each.regularCost', 'totalSeconds', 'wage.isHourly', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\tif (Ember.isNone(cost)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (Ember.get(this, 'wage.isHourly')) {\n\t\t\t\treturn (0, _collection.sumBy)(cost, 'regularCost');\n\t\t\t} else {\n\t\t\t\treturn this.getSalaryCostByType('totalSeconds');\n\t\t\t}\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('cost.@each.totalRegularCost', 'totalWithChildrenSeconds', 'wage.isHourly', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\tif (Ember.isNone(cost)) {\n\t\t\t\treturn 0;\n\t\t\t} else if (Ember.get(this, 'wage.isHourly')) {\n\t\t\t\treturn (0, _collection.sumBy)(cost, 'totalRegularCost');\n\t\t\t} else {\n\t\t\t\treturn this.getSalaryCostByType('totalWithChildrenSeconds');\n\t\t\t}\n\n\t\t\t// return !isNone(cost) ? sumBy(cost, 'totalRegularCost') : 0;\n\t\t}),\n\n\t\tovertimeCost: Ember.computed('cost.@each.overtimeCost', 'wage.isSalary', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\tif (Ember.isNone(cost) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(cost, 'overtimeCost');\n\t\t\t}\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('cost.@each.totalOvertimeCost', 'wage.isSalary', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\tif (Ember.isNone(cost) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(cost, 'totalOvertimeCost');\n\t\t\t}\n\t\t}),\n\n\t\tdoubletimeCost: Ember.computed('cost.@each.doubletimeCost', 'wage.isSalary', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\tif (Ember.isNone(cost) || Ember.get(this, 'wage.isSalary')) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn (0, _collection.sumBy)(cost, 'doubletimeCost');\n\t\t\t}\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('cost.@each.totalDoubletimeCost', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\n\t\t\treturn !Ember.isNone(cost) ? (0, _collection.sumBy)(cost, 'totalDoubletimeCost') : 0;\n\t\t}),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'overburdenCost', function () {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['totalCost', 'overburdenCost']),\n\t\t\t    totalCost = _EmberGetProperties.totalCost,\n\t\t\t    overburdenCost = _EmberGetProperties.overburdenCost;\n\n\t\t\treturn totalCost + overburdenCost;\n\t\t}),\n\n\t\ttotalOverburdenCostWithChildren: Ember.computed('totalWithChildrenCost', 'overburdenWithChildrenCost', function () {\n\t\t\tvar _EmberGetProperties2 = Ember.getProperties(this, ['totalWithChildrenCost', 'overburdenWithChildrenCost']),\n\t\t\t    totalWithChildrenCost = _EmberGetProperties2.totalWithChildrenCost,\n\t\t\t    overburdenWithChildrenCost = _EmberGetProperties2.overburdenWithChildrenCost;\n\n\t\t\treturn totalWithChildrenCost + overburdenWithChildrenCost;\n\t\t}),\n\n\t\tactualCost: Ember.computed('totalCost', 'payPeriodSalary', function () {\n\t\t\tif (Ember.get(this, 'payPeriodSalary') > 0) {\n\t\t\t\treturn Ember.get(this, 'payPeriodSalary');\n\t\t\t} else {\n\t\t\t\treturn Ember.get(this, 'totalCost');\n\t\t\t}\n\t\t}),\n\n\t\tpayPeriodSalary: Ember.computed('wage.{wage,wageRate,isSalary,}', 'payPeriodType', function () {\n\t\t\tvar _EmberGetProperties3 = Ember.getProperties(this, ['wage', 'payPeriodType']),\n\t\t\t    wage = _EmberGetProperties3.wage,\n\t\t\t    payPeriodType = _EmberGetProperties3.payPeriodType;\n\n\t\t\tvar _EmberGetProperties4 = Ember.getProperties(wage, ['wageRate', 'isSalary']),\n\t\t\t    wageRate = _EmberGetProperties4.wageRate,\n\t\t\t    isSalary = _EmberGetProperties4.isSalary;\n\n\t\t\tif (isSalary && !Ember.isNone(wageRate) && !Ember.isNone(payPeriodType)) {\n\t\t\t\treturn wage.getPayPeriodSalary(payPeriodType);\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}),\n\n\t\tsalaryCostPerSecond: Ember.computed('wage.isSalary', 'payPeriodSalary', 'member.seconds.totalSeconds', function () {\n\t\t\tif (Ember.get(this, 'wage.isSalary') && Ember.get(this, 'payPeriodSalary') > 0) {\n\t\t\t\t// this should be the total seconds for the member for the whole pay period\n\t\t\t\tvar totalSeconds = Ember.get(this, 'member.seconds.totalSeconds');\n\t\t\t\tvar salary = Ember.get(this, 'payPeriodSalary');\n\n\t\t\t\tif (Ember.isNone(totalSeconds) || totalSeconds <= 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn salary / totalSeconds;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}),\n\n\t\tgetSalaryCostByType: function getSalaryCostByType(typeKey) {\n\t\t\tvar _EmberGetProperties5 = Ember.getProperties(this, [typeKey, 'payPeriodSalary', 'salaryCostPerSecond']),\n\t\t\t    payPeriodSalary = _EmberGetProperties5.payPeriodSalary,\n\t\t\t    salaryCostPerSecond = _EmberGetProperties5.salaryCostPerSecond,\n\t\t\t    typeSeconds = _EmberGetProperties5[typeKey];\n\n\t\t\tif (!Ember.isNone(typeSeconds) && typeSeconds > 0 && !Ember.isNone(salaryCostPerSecond)) {\n\t\t\t\treturn typeSeconds * salaryCostPerSecond;\n\t\t\t} else {\n\t\t\t\treturn payPeriodSalary;\n\t\t\t}\n\t\t},\n\n\n\t\testCostHourly: Ember.computed('wage.isHourly', 'totalOverburdenCost', function () {\n\t\t\treturn Ember.get(this, 'wage.isHourly') ? Ember.get(this, 'totalOverburdenCost') : 0;\n\t\t}),\n\n\t\testCostSalary: Ember.computed('wage.isSalary', 'totalOverburdenCost', function () {\n\t\t\treturn Ember.get(this, 'wage.isSalary') ? Ember.get(this, 'totalOverburdenCost') : 0;\n\t\t}),\n\n\t\testCostHourlyWithChildren: Ember.computed('wage.isHourly', 'totalOverburdenCostWithChildren', function () {\n\t\t\treturn Ember.get(this, 'wage.isHourly') ? Ember.get(this, 'totalOverburdenCostWithChildren') : 0;\n\t\t}),\n\n\t\testCostSalaryWithChildren: Ember.computed('wage.isSalary', 'totalOverburdenCostWithChildren', function () {\n\t\t\treturn Ember.get(this, 'wage.isSalary') ? Ember.get(this, 'totalOverburdenCostWithChildren') : 0;\n\t\t})\n\t});\n});","define('busy-app/polymorphs/pay-period-member-project-cost-code', ['exports', 'busy-app/polymorphs/base'], function (exports, _base) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _base.default.extend({});\n});","define('busy-app/polymorphs/pay-period-member-project', ['exports', 'busy-app/utils/collection', 'busy-app/polymorphs/base'], function (exports, _collection, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tproject: null,\n\t\tseconds: null,\n\t\tcost: null,\n\t\tincludeChildren: true,\n\n\t\ttotalRegularSeconds: Ember.computed('seconds.@each.totalRegularSeconds', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalRegularSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('seconds.@each.totalOvertimeSeconds', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this2.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalOvertimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('seconds.@each.totalDoubletimeSeconds', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this3.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('totalRegularSeconds', 'totalOvertimeSeconds', 'totalDoubletimeSeconds', function () {\n\t\t\treturn this.get('totalRegularSeconds') + this.get('totalOvertimeSeconds') + this.get('totalDoubletimeSeconds');\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('includeChildren', 'cost.@each.{totalRegularCost,regularCost}', function () {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(cost)) {\n\t\t\t\tcost.forEach(function (item) {\n\t\t\t\t\tif (_this4.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalRegularCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('cost.@each.totalOvertimeCost', function () {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\tif (_this5.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalOvertimeCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('overtimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('cost.@each.totalDoubletimeCost', function () {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\tif (_this6.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('doubletimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalCost: Ember.computed('totalRegularCost', 'totalOvertimeCost', 'totalDoubletimeCost', function () {\n\t\t\treturn this.get('totalRegularCost') + this.get('totalOvertimeCost') + this.get('totalDoubletimeCost');\n\t\t}),\n\n\t\ttotalNoChildrenSeconds: Ember.computed('seconds.@each.totalNoChildrenSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isEmpty(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalNoChildrenSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalChildrenSeconds: Ember.computed('seconds.@each.totalChildrenSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isEmpty(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalChildrenSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\toverburdenCost: Ember.computed('cost.@each.overburden', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = Ember.isNone(cost) ? 0 : (0, _collection.sumBy)(cost, 'overburden');\n\n\t\t\treturn total;\n\t\t}),\n\n\t\toverburdenWithChildrenCost: Ember.computed('cost.@each.childrenOverburden', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = Ember.isNone(cost) ? 0 : (0, _collection.sumBy)(cost, 'childrenOverburden');\n\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/polymorphs/pay-period-member', ['exports', 'busy-app/utils/collection', 'busy-app/polymorphs/base'], function (exports, _collection, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\t\tseconds: null,\n\t\tcost: null,\n\n\t\t/**\n   * regular seconds should be used when dealing with member only data.\n   * When dealing with pay-period-member-project-seconds this will give you\n   * the seconds without the child seconds factored in.\n   */\n\t\tregularSeconds: Ember.computed('seconds.@each.regularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('regularSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * totalRegularSeconds will provide child regular seconds as well as regualr seconds.\n   */\n\t\ttotalRegularSeconds: Ember.computed('seconds.@each.totalRegularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalRegularSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('seconds.@each.overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('overtimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('seconds.@each.totalOvertimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalOvertimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('seconds.@each.doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('seconds.@each.totalDoubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalDoubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\ttotalWithChildrenSeconds: Ember.computed('totalRegularSeconds', 'totalOvertimeSeconds', 'totalDoubletimeSeconds', function () {\n\t\t\treturn this.get('totalRegularSeconds') + this.get('totalOvertimeSeconds') + this.get('totalDoubletimeSeconds');\n\t\t}),\n\n\t\tregularCost: Ember.computed('cost.@each.regularCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('regularCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('cost.@each.totalRegularCost', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(cost)) {\n\t\t\t\tcost.forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalRegularCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeCost: Ember.computed('cost.@each.overtimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('overtimeCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('cost.@each.totalOvertimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalOvertimeCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeCost: Ember.computed('cost.@each.doubletimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('doubletimeCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('cost.@each.totalDoubletimeCost', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\treturn total += item.get('totalDoubletimeCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalCost: Ember.computed('regularCost', 'overtimeCost', 'doubletimeCost', function () {\n\t\t\treturn this.get('regularCost') + this.get('overtimeCost') + this.get('doubletimeCost');\n\t\t}),\n\n\t\ttotalWithChildrenCost: Ember.computed('totalRegularCost', 'totalOvertimeCost', 'totalDoubletimeCost', function () {\n\t\t\tvar _EmberGetProperties = Ember.getProperties(this, ['totalRegularCost', 'totalOvertimeCost', 'totalDoubletimeCost']),\n\t\t\t    totalRegularCost = _EmberGetProperties.totalRegularCost,\n\t\t\t    totalOvertimeCost = _EmberGetProperties.totalOvertimeCost,\n\t\t\t    totalDoubletimeCost = _EmberGetProperties.totalDoubletimeCost;\n\n\t\t\tvar totalWithChildrenCost = totalRegularCost + totalOvertimeCost + totalDoubletimeCost;\n\n\t\t\treturn totalWithChildrenCost;\n\t\t}),\n\n\t\toverburdenCost: Ember.computed('cost.@each.overburden', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = Ember.isNone(cost) ? 0 : (0, _collection.sumBy)(cost, 'overburden');\n\n\t\t\treturn total;\n\t\t}),\n\n\t\toverburdenChildrenCost: Ember.computed('cost.@each.childrenOverburden', function () {\n\t\t\tvar cost = Ember.get(this, 'cost');\n\t\t\tvar total = Ember.isNone(cost) ? 0 : (0, _collection.sumBy)(cost, 'childrenOverburden');\n\n\t\t\treturn total;\n\t\t}),\n\n\t\toverburdenWithChildrenCost: Ember.computed('overburdenCost', 'overburdenChildrenCost', function () {\n\t\t\tvar _EmberGetProperties2 = Ember.getProperties(this, ['overburdenCost', 'overburdenChildrenCost']),\n\t\t\t    overburdenCost = _EmberGetProperties2.overburdenCost,\n\t\t\t    overburdenChildrenCost = _EmberGetProperties2.overburdenChildrenCost;\n\n\t\t\tvar total = overburdenCost + overburdenChildrenCost;\n\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/polymorphs/payroll-member', ['exports', 'busy-app/polymorphs/pay-period-member'], function (exports, _payPeriodMember) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _payPeriodMember.default.extend({\n\t\twage: null,\n\t\tpayPeriodType: null,\n\t\tprojects: null,\n\t\tnestedMember: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\t\t\tEmber.deprecate('Custom wage date feature not supported', !Ember.get(this, 'features.wageCustomDate'), { id: 'polymorph.payroll-member', until: '999.99.99' });\n\t\t},\n\n\n\t\thasChildren: Ember.computed('projects.[]', function () {\n\t\t\treturn !Ember.isEmpty(this.get('projects'));\n\t\t}),\n\n\t\thasRegular: Ember.computed('regularSeconds', 'regularCost', 'totalRegularSeconds', 'totalRegularCost', function () {\n\t\t\tif (this.get('regularSeconds') > 0 || this.get('regularCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (this.get('nestedMember') && (this.get('totalRegularSeconds') > 0 || this.get('totalRegularCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasOvertime: Ember.computed('overtimeSeconds', 'overtimeCost', 'totalOvertimeSeconds', 'totalOvertimeCost', function () {\n\t\t\tif (this.get('overtimeSeconds') > 0 || this.get('overtimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (this.get('nestedMember') && (this.get('totalOvertimeSeconds') > 0 || this.get('totalOvertimeCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasDoubletime: Ember.computed('doubletimeSeconds', 'doubletimeCost', 'totalDoubletimeSeconds', 'totalDoubletimeCost', function () {\n\t\t\tif (this.get('doubletimeSeconds') > 0 || this.get('doubletimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t} else if (this.get('nestedMember') && (this.get('totalDoubletimeSeconds') > 0 || this.get('totalDoubletimeCost') > 0)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\t/**\n   * regular seconds should be used when dealing with member only data.\n   * When dealing with pay-period-member-project-seconds this will give you\n   * the seconds without the child seconds factored in.\n   */\n\t\tregularSeconds: Ember.computed('seconds.@each.regularSeconds', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this.get('wage.wageRate') !== 10) {\n\t\t\t\t\t\t// salary employees\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * totalRegularSeconds will provide child regular seconds as well as regualr seconds.\n   */\n\t\ttotalRegularSeconds: Ember.computed('seconds.@each.totalRegularSeconds', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this2.get('wage.wageRate') !== 10) {\n\t\t\t\t\t\t// salary employees\n\t\t\t\t\t\ttotal += item.get('totalRegularSeconds');\n\t\t\t\t\t\ttotal += item.get('totalOvertimeSeconds');\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('totalRegularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('seconds.@each.overtimeSeconds', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this3.get('wage.wageRate') === 10) {\n\t\t\t\t\t\t// non salary employees\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('seconds.@each.totalOvertimeSeconds', function () {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this4.get('wage.wageRate') === 10) {\n\t\t\t\t\t\t// non salary employees\n\t\t\t\t\t\ttotal += item.get('totalOvertimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('seconds.@each.doubletimeSeconds', function () {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this5.get('wage.wageRate') === 10) {\n\t\t\t\t\t\t// non salary employees\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('seconds.@each.totalDoubletimeSeconds', function () {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (_this6.get('wage.wageRate') === 10) {\n\t\t\t\t\t\t// non salary employees\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tregularCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.regularCost', 'regularSeconds', 'totalSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\t// salary employees\n\t\t\t\tif (this.get('totalSeconds') > 0) {\n\t\t\t\t\t// salary employee with time\n\t\t\t\t\ttotal += this.get('regularSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t\ttotal += this.get('overtimeSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t\ttotal += this.get('totalDoubletimeSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t} else {\n\t\t\t\t\t// salary employee with no time use the pay period salary.\n\t\t\t\t\ttotal += this.get('payPeriodSalary');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!Ember.isEmpty(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('regularCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.totalRegularCost', 'totalRegularSeconds', 'totalWithChildrenSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\t// salary employees\n\t\t\t\tif (this.get('totalWithChildrenSeconds') > 0) {\n\t\t\t\t\t// salary employee with time\n\t\t\t\t\ttotal += this.get('totalRegularSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t\ttotal += this.get('totalOvertimeSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t\ttotal += this.get('doubletimeSeconds') * this.get('salaryCostPerSecond');\n\t\t\t\t} else {\n\t\t\t\t\t// salary employee with no time use the pay period salary.\n\t\t\t\t\ttotal += this.get('payPeriodSalary');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!Ember.isEmpty(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('totalRegularCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.overtimeCost', 'overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('overtimeCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.totalOvertimeCost', 'totalOvertimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('totalOvertimeCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.doubletimeCost', 'doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('doubletimeCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('salaryCostPerSecond', 'wage.wageRate', 'cost.@each.totalDoubletimeCost', 'totalDoubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\t\treturn total += item.get('totalDoubletimeCost');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'wage.overburden', function () {\n\t\t\tvar cost = this.get('totalCost');\n\t\t\tvar burden = this.get('wage.overburden') || 0;\n\t\t\tvar over = cost * (burden / 100);\n\n\t\t\treturn cost + over;\n\t\t}),\n\n\t\ttotalOverburdenCostWithChildren: Ember.computed('totalWithChildrenCost', 'wage.overburden', function () {\n\t\t\tvar cost = this.get('totalWithChildrenCost');\n\t\t\tvar burden = this.get('wage.overburden') || 0;\n\t\t\tvar over = cost * (burden / 100);\n\n\t\t\treturn cost + over;\n\t\t}),\n\n\t\tactualCost: Ember.computed('totalCost', 'payPeriodSalary', function () {\n\t\t\tif (this.get('payPeriodSalary') > 0) {\n\t\t\t\treturn this.get('payPeriodSalary');\n\t\t\t} else {\n\t\t\t\treturn this.get('totalCost');\n\t\t\t}\n\t\t}),\n\n\t\tsalaryCostPerSecond: Ember.computed('payPeriodSalary', 'member.seconds.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar cph = 0;\n\t\t\tif (this.get('payPeriodSalary') > 0) {\n\t\t\t\tvar regular = this.get('member.seconds.regularSeconds') || 0; // get regular time\n\t\t\t\tvar overtime = this.get('member.seconds.overtimeSeconds') || 0; // get overtime and multiply it by overtime time and a half\n\t\t\t\tvar doubletime = this.get('member.seconds.doubletimeSeconds') || 0; // get doubletime and multiply it by doubletime\n\n\t\t\t\t// get salray for this pay period\n\t\t\t\tvar salary = this.get('payPeriodSalary');\n\n\t\t\t\t// add up the total time with overtime and doubletime multipliers\n\t\t\t\tvar totaltime = regular + overtime + doubletime;\n\t\t\t\tif (totaltime <= 0) {\n\t\t\t\t\ttotaltime = 1;\n\t\t\t\t}\n\n\t\t\t\tcph = salary / totaltime;\n\t\t\t}\n\t\t\treturn cph;\n\t\t}),\n\n\t\tpayPeriodSalary: Ember.computed('wage.{wage,wageRate}', 'payPeriodType', function () {\n\t\t\tvar salary = 0;\n\t\t\tvar wageRate = this.get('wage.wageRate');\n\t\t\tvar payPeriodType = this.get('payPeriodType');\n\t\t\tif (!Ember.isNone(wageRate) && !Ember.isNone(payPeriodType) && wageRate !== 10) {\n\t\t\t\t// get wage salary\n\t\t\t\tsalary = this.get('wage.wage');\n\n\t\t\t\t// convert all salary to a yearly salary\n\t\t\t\tif (wageRate === 30) {\n\t\t\t\t\t// convert weekly salary to yearly\n\t\t\t\t\tsalary = salary * 52;\n\t\t\t\t} else if (wageRate === 40) {\n\t\t\t\t\t// convert monthly salary to yearly\n\t\t\t\t\tsalary = salary * 12;\n\t\t\t\t}\n\n\t\t\t\t// convert salary to the pay-period span\n\t\t\t\tif (payPeriodType === 10) {\n\t\t\t\t\t// calculate weekly salary from yearly\n\t\t\t\t\tsalary = salary / 52;\n\t\t\t\t} else if (payPeriodType === 20) {\n\t\t\t\t\t// calculate bi weekly salary from yearly\n\t\t\t\t\tsalary = salary / 26;\n\t\t\t\t} else if (payPeriodType === 30) {\n\t\t\t\t\t// calculate bi monthly salary from yearly\n\t\t\t\t\tsalary = salary / 24;\n\t\t\t\t} else if (payPeriodType === 40) {\n\t\t\t\t\t// calculate monthly salary from yearly\n\t\t\t\t\tsalary = salary / 12;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn salary;\n\t\t}),\n\n\t\testCostHourly: Ember.computed('wage.wageRate', 'totalOverburdenCost', function () {\n\t\t\tvar estCostHourly = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\testCostHourly = this.get('totalOverburdenCost');\n\t\t\t}\n\t\t\treturn estCostHourly;\n\t\t}),\n\n\t\testCostSalary: Ember.computed('wage.wageRate', 'totalOverburdenCost', function () {\n\t\t\tvar estCostSalary = 0;\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\testCostSalary = this.get('totalOverburdenCost');\n\t\t\t}\n\t\t\treturn estCostSalary;\n\t\t}),\n\n\t\testCostHourlyWithChildren: Ember.computed('wage.wageRate', 'totalOverburdenCostWithChildren', function () {\n\t\t\tvar estCostHourly = 0;\n\t\t\tif (this.get('wage.wageRate') === 10) {\n\t\t\t\testCostHourly = this.get('totalOverburdenCostWithChildren');\n\t\t\t}\n\t\t\treturn estCostHourly;\n\t\t}),\n\n\t\testCostSalaryWithChildren: Ember.computed('wage.wageRate', 'totalOverburdenCostWithChildren', function () {\n\t\t\tvar estCostSalary = 0;\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\testCostSalary = this.get('totalOverburdenCostWithChildren');\n\t\t\t}\n\t\t\treturn estCostSalary;\n\t\t})\n\t});\n});","define('busy-app/polymorphs/payroll-project', ['exports', 'busy-app/utils/collection', 'busy-app/polymorphs/pay-period-member-project'], function (exports, _collection, _payPeriodMemberProject) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _payPeriodMemberProject.default.extend({\n\t\tmembers: null,\n\t\tdisableDepth: false,\n\t\thideData: true,\n\n\t\tdepthString: Ember.computed('project.depth', 'disableDepth', function () {\n\t\t\tvar depth = this.get('project.depth');\n\t\t\tvar depthString = '';\n\t\t\tif (!this.get('disableDepth')) {\n\t\t\t\tdepthString = depth === 1 ? 'one' : depthString;\n\t\t\t\tdepthString = depth === 2 ? 'two' : depthString;\n\t\t\t\tdepthString = depth === 3 ? 'three' : depthString;\n\t\t\t\tdepthString = depth === 4 ? 'four' : depthString;\n\t\t\t\tdepthString = depth === 5 ? 'five' : depthString;\n\t\t\t\tdepthString = depth === 6 ? 'six' : depthString;\n\t\t\t\tdepthString = depth === 7 ? 'seven' : depthString;\n\t\t\t}\n\t\t\treturn depthString;\n\t\t}),\n\n\t\tdepthList: Ember.computed('project.depth', 'disableDepth', function () {\n\t\t\tvar depth = this.get('project.depth');\n\t\t\tvar array = [];\n\t\t\tif (depth > 0 && !this.get('disableDepth')) {\n\t\t\t\tfor (var i = 0; i < depth; i++) {\n\t\t\t\t\tarray.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn array;\n\t\t}),\n\n\t\thasChildren: Ember.computed('members.@each.hasChildren', 'project.depth', function () {\n\t\t\tvar hasChildren = false;\n\t\t\tif (this.get('forceOpen') && this.get('members.length')) {\n\t\t\t\thasChildren = true;\n\t\t\t} else if (!Ember.isEmpty(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (member) {\n\t\t\t\t\tif (member.get('hasChildren')) {\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn hasChildren;\n\t\t}),\n\n\t\thasRegular: Ember.computed('totalRegularSeconds', 'totalRegularCost', function () {\n\t\t\tif (this.get('totalRegularSeconds') > 0 || this.get('totalRegularCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasOvertime: Ember.computed('totalOvertimeSeconds', 'totalOvertimeCost', function () {\n\t\t\tif (this.get('totalOvertimeSeconds') > 0 || this.get('totalOvertimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasDoubletime: Ember.computed('totalDoubletimeSeconds', 'totalDoubletimeCost', function () {\n\t\t\tif (this.get('totalDoubletimeSeconds') > 0 || this.get('totalDoubletimeCost') > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\ttotalRegularSeconds: Ember.computed('members.@each.{totalRegularSeconds,regularSeconds}', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalRegularSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('members.@each.{totalOvertimeSeconds,overtimeSeconds}', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this2.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalOvertimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('members.@each.{totalDoubletimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this3.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('includeChildren', 'members.@each.{totalRegularCost,regularCost}', function () {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this4.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalRegularCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('members.@each.totalOvertimeCost', function () {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this5.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalOvertimeCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('overtimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('members.@each.totalDoubletimeCost', function () {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\tif (_this6.get('includeChildren')) {\n\t\t\t\t\t\ttotal += item.get('totalDoubletimeCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('doubletimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOverburdenCost: Ember.computed('members.@each.{totalOverburdenCostWithChildren,totalOverburdenCost}', function () {\n\t\t\tvar includeChildren = this.get('includeChildren');\n\t\t\tvar members = this.get('members');\n\t\t\tvar sumByKey = includeChildren ? 'totalOverburdenCostWithChildren' : 'totalOverburdenCost';\n\n\t\t\tvar total = Ember.isNone(members) ? 0 : (0, _collection.sumBy)(members, sumByKey);\n\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalOverburdenCostWithChildren: Ember.computed('members.@each.totalOverburdenCostWithChildren', function () {\n\t\t\tvar members = this.get('members');\n\t\t\tvar total = Ember.isNone(members) ? 0 : (0, _collection.sumBy)(members, 'totalOverburdenCostWithChildren');\n\n\t\t\treturn total;\n\t\t}),\n\n\t\testCostHourly: Ember.computed('members.@each.estCostHourlyWithChildren', function () {\n\t\t\tvar estCostHourly = 0;\n\t\t\tif (!Ember.isEmpty(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\testCostHourly += item.get('estCostHourlyWithChildren');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn estCostHourly;\n\t\t}),\n\n\t\testCostSalary: Ember.computed('members.@each.estCostSalaryWithChildren', function () {\n\t\t\tvar estCostSalary = 0;\n\t\t\tif (!Ember.isEmpty(this.get('members'))) {\n\t\t\t\tthis.get('members').forEach(function (item) {\n\t\t\t\t\testCostSalary += item.get('estCostSalaryWithChildren');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn estCostSalary;\n\t\t})\n\t});\n});","define('busy-app/queries/equipment', ['exports', 'busy-app/utils/query-builder'], function (exports, _queryBuilder) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.loadManyEquipment = exports.loadEquipmentQuery = exports.loadEquipment = undefined;\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\tvar loadEquipment = exports.loadEquipment = function () {\n\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(state, id) {\n\t\t\tvar equipment, equipmentModel, equipmentMake, equipmentCategory;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\treturn state.find('equipment', id);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tequipment = _context.sent;\n\t\t\t\t\t\t\t_context.next = 5;\n\t\t\t\t\t\t\treturn state.find('equipment-model', equipment.equipmentModelId);\n\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\tequipmentModel = _context.sent;\n\n\t\t\t\t\t\t\tif (Ember.isEmpty(equipmentModel.equipmentMakeId)) {\n\t\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 9;\n\t\t\t\t\t\t\treturn state.find('equipment-make', equipmentModel.equipmentMakeId);\n\n\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\tequipmentMake = _context.sent;\n\n\t\t\t\t\t\t\tequipmentModel.equipmentMake = equipmentMake;\n\n\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tif (Ember.isEmpty(equipmentModel.equipmentCategoryId)) {\n\t\t\t\t\t\t\t\t_context.next = 16;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 14;\n\t\t\t\t\t\t\treturn state.find('equipment-category', equipmentModel.equipmentCategoryId);\n\n\t\t\t\t\t\tcase 14:\n\t\t\t\t\t\t\tequipmentCategory = _context.sent;\n\n\t\t\t\t\t\t\tequipmentModel.equipmentCategory = equipmentCategory;\n\n\t\t\t\t\t\tcase 16:\n\n\t\t\t\t\t\t\tequipment.equipmentModel = equipmentModel;\n\t\t\t\t\t\t\treturn _context.abrupt('return', equipment);\n\n\t\t\t\t\t\tcase 18:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}));\n\n\t\treturn function loadEquipment(_x, _x2) {\n\t\t\treturn _ref.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar loadEquipmentQuery = exports.loadEquipmentQuery = function () {\n\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(state, query) {\n\t\t\tvar equipment;\n\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context2.next = 2;\n\t\t\t\t\t\t\treturn state.query('equipment', query);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tequipment = _context2.sent;\n\t\t\t\t\t\t\treturn _context2.abrupt('return', getJoinedEquipment(state, equipment));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee2, this);\n\t\t}));\n\n\t\treturn function loadEquipmentQuery(_x3, _x4) {\n\t\t\treturn _ref2.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar loadManyEquipment = exports.loadManyEquipment = function () {\n\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(state, ids, query) {\n\t\t\tvar equipment;\n\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context3.next = 2;\n\t\t\t\t\t\t\treturn state.findRecords('equipment', ids, query);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tequipment = _context3.sent;\n\t\t\t\t\t\t\treturn _context3.abrupt('return', getJoinedEquipment(state, equipment));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee3, this);\n\t\t}));\n\n\t\treturn function loadManyEquipment(_x5, _x6, _x7) {\n\t\t\treturn _ref3.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar getJoinedEquipment = function () {\n\t\tvar _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(state, equipment) {\n\t\t\tvar models, makes, categories;\n\t\t\treturn regeneratorRuntime.wrap(function _callee4$(_context4) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context4.prev = _context4.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context4.next = 2;\n\t\t\t\t\t\t\treturn state.findRecords('equipment-model', (0, _queryBuilder.mapByUniq)(equipment, 'equipmentModelId'));\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tmodels = _context4.sent;\n\n\t\t\t\t\t\t\tif (!models.length) {\n\t\t\t\t\t\t\t\t_context4.next = 12;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context4.next = 6;\n\t\t\t\t\t\t\treturn state.findRecords('equipment-make', (0, _queryBuilder.mapByUniq)(models, 'equipmentMakeId'));\n\n\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\tmakes = _context4.sent;\n\t\t\t\t\t\t\t_context4.next = 9;\n\t\t\t\t\t\t\treturn state.findRecords('equipment-category', (0, _queryBuilder.mapByUniq)(models, 'equipmentCategoryId'));\n\n\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\tcategories = _context4.sent;\n\n\n\t\t\t\t\t\t\tmodels.forEach(function (item) {\n\t\t\t\t\t\t\t\titem.make = makes.find(function (em) {\n\t\t\t\t\t\t\t\t\treturn em.id === item.equipmentMakeId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.category = categories.find(function (ec) {\n\t\t\t\t\t\t\t\t\treturn ec.id === item.equipmentCategoryId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tequipment.forEach(function (item) {\n\t\t\t\t\t\t\t\titem.model = models.find(function (em) {\n\t\t\t\t\t\t\t\t\treturn em.id === item.equipmentModelId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn _context4.abrupt('return', equipment);\n\n\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context4.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee4, this);\n\t\t}));\n\n\t\treturn function getJoinedEquipment(_x8, _x9) {\n\t\t\treturn _ref4.apply(this, arguments);\n\t\t};\n\t}();\n});","define('busy-app/queries/project', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\t/**\n  * @module Queries\n  *\n  */\n\n\tvar loadProject = exports.loadProject = function loadProject(state, id) {\n\t\treturn getProject(state, id);\n\t};\n\n\tvar loadProjectQuery = exports.loadProjectQuery = function loadProjectQuery(state, query) {\n\t\treturn getProjectQuery(state, query);\n\t};\n\n\tvar loadManyProjects = exports.loadManyProjects = function loadManyProjects(state, query) {\n\t\treturn getAllProjects(state, query);\n\t};\n\n\tvar getProject = function () {\n\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(state, id) {\n\t\t\tvar project, lookups, parents;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\treturn state.find('project', id);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tproject = _context.sent;\n\t\t\t\t\t\t\t_context.next = 5;\n\t\t\t\t\t\t\treturn state.queryRecord('project-info', { project_id: id });\n\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\tproject.projectInfo = _context.sent;\n\t\t\t\t\t\t\t_context.next = 8;\n\t\t\t\t\t\t\treturn state.findAll('project-lookup', { child_id: id });\n\n\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\tlookups = _context.sent;\n\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\treturn state.findRecords('project', lookups.map(function (p) {\n\t\t\t\t\t\t\t\treturn p.parentId;\n\t\t\t\t\t\t\t}).uniq(), { _desc: ['depth'] });\n\n\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tparents = _context.sent;\n\n\n\t\t\t\t\t\t\t// set parent projects\n\t\t\t\t\t\t\tgetParentProject(project, parents);\n\n\t\t\t\t\t\t\treturn _context.abrupt('return', project);\n\n\t\t\t\t\t\tcase 14:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}));\n\n\t\treturn function getProject(_x, _x2) {\n\t\t\treturn _ref.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar getProjectQuery = function () {\n\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(state, query) {\n\t\t\tvar projects;\n\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context2.next = 2;\n\t\t\t\t\t\t\treturn state.query('project', query);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tprojects = _context2.sent;\n\t\t\t\t\t\t\t_context2.next = 5;\n\t\t\t\t\t\t\treturn projectData(state, projects);\n\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\treturn _context2.abrupt('return', projects);\n\n\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee2, this);\n\t\t}));\n\n\t\treturn function getProjectQuery(_x3, _x4) {\n\t\t\treturn _ref2.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar getAllProjects = function () {\n\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(state, query) {\n\t\t\tvar projects;\n\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context3.next = 2;\n\t\t\t\t\t\t\treturn state.findAll('project', query);\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tprojects = _context3.sent;\n\t\t\t\t\t\t\t_context3.next = 5;\n\t\t\t\t\t\t\treturn projectData(state, projects);\n\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\treturn _context3.abrupt('return', projects);\n\n\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee3, this);\n\t\t}));\n\n\t\treturn function getAllProjects(_x5, _x6) {\n\t\t\treturn _ref3.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar projectData = function () {\n\t\tvar _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(state, projects) {\n\t\t\tvar projectIds, projectInfos, lookups, parentProjects;\n\t\t\treturn regeneratorRuntime.wrap(function _callee4$(_context4) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context4.prev = _context4.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tprojectIds = projects.map(function (p) {\n\t\t\t\t\t\t\t\treturn p.id;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t_context4.next = 3;\n\t\t\t\t\t\t\treturn state.findRecords('project-info', projectIds, {}, 'project_id');\n\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tprojectInfos = _context4.sent;\n\t\t\t\t\t\t\t_context4.next = 6;\n\t\t\t\t\t\t\treturn state.findRecords('project-lookup', projectIds, {}, 'child_id');\n\n\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\tlookups = _context4.sent;\n\t\t\t\t\t\t\t_context4.next = 9;\n\t\t\t\t\t\t\treturn state.findRecords('project', lookups.map(function (p) {\n\t\t\t\t\t\t\t\treturn p.parentId;\n\t\t\t\t\t\t\t}).uniq(), { _desc: ['depth'] });\n\n\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\tparentProjects = _context4.sent;\n\n\n\t\t\t\t\t\t\tprojects.forEach(function (project) {\n\t\t\t\t\t\t\t\tproject.projectInfo = projectInfos.find(function (pi) {\n\t\t\t\t\t\t\t\t\treturn pi.projectId === project.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t// set parent projects\n\t\t\t\t\t\t\t\tgetParentProject(project, parentProjects);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn _context4.abrupt('return', projects);\n\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context4.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee4, this);\n\t\t}));\n\n\t\treturn function projectData(_x7, _x8) {\n\t\t\treturn _ref4.apply(this, arguments);\n\t\t};\n\t}();\n\n\tvar getParentProject = function getParentProject(project, parentProjects) {\n\t\t// recursive base case\n\t\tif (!project) {\n\t\t\treturn;\n\t\t}\n\n\t\t// recursively find all parent projects\n\t\tif (project.parentProjectId !== project.id) {\n\t\t\t// find parent project\n\t\t\tvar parent = parentProjects.find(function (p) {\n\t\t\t\treturn p.id === project.parentProjectId;\n\t\t\t});\n\n\t\t\t// see if parent has a parent\n\t\t\tgetParentProject(parent, parentProjects);\n\n\t\t\t// set parent project\n\t\t\tproject.parentProject = parent;\n\t\t}\n\t};\n});","define('busy-app/queries/segment', ['exports', 'busy-app/utils/query-builder'], function (exports, _queryBuilder) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.loadEntrySegments = undefined;\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\tvar loadEntrySegments = exports.loadEntrySegments = function () {\n\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(state, ids, options) {\n\t\t\tvar query, segments, seconds, cost;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tif (!Ember.isEmpty(ids)) {\n\t\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn _context.abrupt('return', []);\n\n\t\t\t\t\t\tcase 2:\n\n\t\t\t\t\t\t\tif (!Array.isArray(ids)) {\n\t\t\t\t\t\t\t\tids = [ids];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tquery = (0, _queryBuilder.createQuery)().deleted(false);\n\n\t\t\t\t\t\t\tif (options.start && options.end) {\n\t\t\t\t\t\t\t\tquery.strictInRange('startTime', options.start, 'endTime', options.end + 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 7;\n\t\t\t\t\t\t\treturn state.findRecords('segment', ids, query.toJSON(), 'time_entry_id');\n\n\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\tsegments = _context.sent;\n\n\t\t\t\t\t\t\tif (!segments.length) {\n\t\t\t\t\t\t\t\t_context.next = 18;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\treturn state.findRecords('segment-seconds', (0, _queryBuilder.mapByUniq)(segments, 'id'), { deleted_on: null }, 'segment_id');\n\n\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tseconds = _context.sent;\n\t\t\t\t\t\t\tcost = [];\n\n\t\t\t\t\t\t\tif (!options.includeCost) {\n\t\t\t\t\t\t\t\t_context.next = 17;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 16;\n\t\t\t\t\t\t\treturn state.findRecords('segment-cost', (0, _queryBuilder.mapByUniq)(segments, 'id'), { deleted_on: null }, 'segment_id');\n\n\t\t\t\t\t\tcase 16:\n\t\t\t\t\t\t\tcost = _context.sent;\n\n\t\t\t\t\t\tcase 17:\n\n\t\t\t\t\t\t\tsegments.forEach(function (item) {\n\t\t\t\t\t\t\t\titem.seconds = seconds.find(function (s) {\n\t\t\t\t\t\t\t\t\treturn s.segmentId === item.id;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.cost = cost.find(function (c) {\n\t\t\t\t\t\t\t\t\treturn c.segmentId === item.id;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcase 18:\n\t\t\t\t\t\t\treturn _context.abrupt('return', segments);\n\n\t\t\t\t\t\tcase 19:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}));\n\n\t\treturn function loadEntrySegments(_x, _x2, _x3) {\n\t\t\treturn _ref.apply(this, arguments);\n\t\t};\n\t}();\n});","define('busy-app/queries/time-entry', ['exports', 'busy-app/utils/query-builder', 'busy-app/queries/project', 'busy-app/queries/equipment', 'busy-app/queries/segment'], function (exports, _queryBuilder, _project, _equipment, _segment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.timeEntryJoinedData = exports.openTimeEntry = exports.timeEntryRange = undefined;\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\tvar timeEntryRange = exports.timeEntryRange = function timeEntryRange(state, _ref) {\n\t\tvar start = _ref.start,\n\t\t    end = _ref.end,\n\t\t    _ref$sortDir = _ref.sortDir,\n\t\t    sortDir = _ref$sortDir === undefined ? 'desc' : _ref$sortDir,\n\t\t    _ref$isDeleted = _ref.isDeleted,\n\t\t    isDeleted = _ref$isDeleted === undefined ? false : _ref$isDeleted;\n\n\t\t// check for timestamp assert\n\t\tvar isTimestamp = function isTimestamp(time) {\n\t\t\treturn !Ember.isNone(time) && typeof time === 'number' && !isNaN(time);\n\t\t};\n\n\t\t(true && !(isTimestamp(start) && isTimestamp(end)) && Ember.assert('timeEntryRange requires a start and end timestamp', isTimestamp(start) && isTimestamp(end)));\n\n\n\t\tvar query = (0, _queryBuilder.createQuery)({}).sort(sortDir, 'startTime') // default sort is descending\n\t\t.deleted(isDeleted) // default to show not deleted records\n\t\t.inRange('startTime', start, 'endTime', end).toJSON();\n\n\t\treturn state.findAll('time-entry', query);\n\t};\n\n\tvar openTimeEntry = exports.openTimeEntry = function openTimeEntry(state) {\n\t\tvar query = (0, _queryBuilder.createQuery)({}).deleted(false).equal('endTime', null).toJSON();\n\n\t\treturn state.queryRecord('time-entry', query);\n\t};\n\n\tvar timeEntryJoinedData = exports.timeEntryJoinedData = function timeEntryJoinedData(state, entry) {\n\t\tvar options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t\tif (Ember.isEmpty(entry)) {\n\t\t\treturn entry;\n\t\t}\n\n\t\tvar isMany = true;\n\t\tif (!Array.isArray(entry)) {\n\t\t\tisMany = false;\n\t\t\tentry = [entry];\n\t\t}\n\n\t\treturn getJoinedData(state, entry, options).then(function (entry) {\n\t\t\tif (!isMany) {\n\t\t\t\treturn entry[0];\n\t\t\t}\n\t\t\treturn entry;\n\t\t});\n\t};\n\n\tvar getJoinedData = function () {\n\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(state, entry, options) {\n\t\t\tvar members, breaks, projectIds, costCodeIds, equipmentIds, projects, costCodes, equipment, startLocations, endLocations, startLocationIds, endLocationIds, segments;\n\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\treturn state.findRecords('member', (0, _queryBuilder.mapByUniq)(entry, 'memberId'));\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tmembers = _context.sent;\n\t\t\t\t\t\t\t_context.next = 5;\n\t\t\t\t\t\t\treturn state.findRecords('time-entry-break', (0, _queryBuilder.mapByUniq)(entry, 'id'), { deleted_on: null }, 'time_entry_id');\n\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\tbreaks = _context.sent;\n\t\t\t\t\t\t\tprojectIds = (0, _queryBuilder.mapByUniq)(entry, 'projectId');\n\t\t\t\t\t\t\tcostCodeIds = (0, _queryBuilder.mapByUniq)(entry, 'costCodeId');\n\t\t\t\t\t\t\tequipmentIds = (0, _queryBuilder.mapByUniq)(entry, 'equipmentId');\n\t\t\t\t\t\t\tprojects = [];\n\n\t\t\t\t\t\t\tif (!projectIds.length) {\n\t\t\t\t\t\t\t\t_context.next = 14;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 13;\n\t\t\t\t\t\t\treturn (0, _project.loadManyProjects)(state, projectIds);\n\n\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tprojects = _context.sent;\n\n\t\t\t\t\t\tcase 14:\n\t\t\t\t\t\t\tcostCodes = [];\n\n\t\t\t\t\t\t\tif (!costCodeIds.length) {\n\t\t\t\t\t\t\t\t_context.next = 19;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 18;\n\t\t\t\t\t\t\treturn state.findRecords('cost-code', costCodeIds);\n\n\t\t\t\t\t\tcase 18:\n\t\t\t\t\t\t\tcostCodes = _context.sent;\n\n\t\t\t\t\t\tcase 19:\n\t\t\t\t\t\t\tequipment = [];\n\n\t\t\t\t\t\t\tif (!equipmentIds.length) {\n\t\t\t\t\t\t\t\t_context.next = 24;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 23;\n\t\t\t\t\t\t\treturn (0, _equipment.loadManyEquipment)(state, equipmentIds);\n\n\t\t\t\t\t\tcase 23:\n\t\t\t\t\t\t\tequipment = _context.sent;\n\n\t\t\t\t\t\tcase 24:\n\t\t\t\t\t\t\tstartLocations = [];\n\t\t\t\t\t\t\tendLocations = [];\n\n\t\t\t\t\t\t\tif (!options.includeLocations) {\n\t\t\t\t\t\t\t\t_context.next = 37;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstartLocationIds = (0, _queryBuilder.mapByUniq)(entry, 'startLocationId');\n\t\t\t\t\t\t\tendLocationIds = (0, _queryBuilder.mapByUniq)(entry, 'endLocationId');\n\n\t\t\t\t\t\t\tif (!startLocationIds.length) {\n\t\t\t\t\t\t\t\t_context.next = 33;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 32;\n\t\t\t\t\t\t\treturn state.findRecords('member-location', startLocationIds);\n\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\tstartLocations = _context.sent;\n\n\t\t\t\t\t\tcase 33:\n\t\t\t\t\t\t\tif (!endLocationIds.length) {\n\t\t\t\t\t\t\t\t_context.next = 37;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 36;\n\t\t\t\t\t\t\treturn state.findRecords('member-location', endLocationIds);\n\n\t\t\t\t\t\tcase 36:\n\t\t\t\t\t\t\tendLocations = _context.sent;\n\n\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\tsegments = [];\n\n\t\t\t\t\t\t\tif (!options.includeSegments) {\n\t\t\t\t\t\t\t\t_context.next = 42;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_context.next = 41;\n\t\t\t\t\t\t\treturn (0, _segment.loadEntrySegments)(state, (0, _queryBuilder.mapByUniq)(entry, 'id'), {\n\t\t\t\t\t\t\t\tstart: options.start,\n\t\t\t\t\t\t\t\tend: options.end,\n\t\t\t\t\t\t\t\tincludeCost: options.includeSegmentCost\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcase 41:\n\t\t\t\t\t\t\tsegments = _context.sent;\n\n\t\t\t\t\t\tcase 42:\n\n\t\t\t\t\t\t\tentry.forEach(function (item) {\n\t\t\t\t\t\t\t\titem.member = members.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.memberId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.project = projects.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.projectId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.costCode = costCodes.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.costCodeId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.equipment = equipment.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.equipmentId;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\titem.startLocation = startLocations.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.startLocationId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.endLocation = endLocations.find(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.id === item.endLocationId;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\titem.timeEntryBreaks = breaks.filter(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.timeEntryId === item.id;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.segments = segments.filter(function (m) {\n\t\t\t\t\t\t\t\t\treturn m.timeEntryId === item.id;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn _context.abrupt('return', entry);\n\n\t\t\t\t\t\tcase 44:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, _callee, this);\n\t\t}));\n\n\t\treturn function getJoinedData(_x2, _x3, _x4) {\n\t\t\treturn _ref2.apply(this, arguments);\n\t\t};\n\t}();\n});","define('busy-app/resolver', ['exports', 'ember-resolver'], function (exports, _emberResolver) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberResolver.default;\n});","define('busy-app/router', ['exports', 'busy-app/config/environment'], function (exports, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n\n  var Router = Ember.Router.extend({\n    location: _environment.default.locationType,\n    rootURL: _environment.default.rootURL,\n\n    eventEmitter: Ember.inject.service(),\n    afterTransition: Ember.on('didTransition', function () {\n      this.get('eventEmitter').send('router', 'transition', this.get('currentPath'));\n    })\n  });\n\n  Router.map(function () {\n    this.route('index', { path: '/' });\n\n    this.route('cost-code', function () {});\n\n    this.route('signup');\n    this.route('login');\n    this.route('reset');\n\n    this.route('company-settings', function () {\n      this.route('intuit-quickbooks');\n      this.route('procore', function () {\n        this.route('callback');\n      });\n    });\n\n    this.route('account-settings');\n    this.route('verify-email');\n    this.route('ticket');\n\n    this.route('time-card', function () {\n      this.route('time-entry');\n      this.route('time-off-entry');\n      this.route('time-entries');\n      this.route('pay-period');\n      this.route('full-report', function () {\n        this.route('loading', {});\n      });\n      this.route('member-location');\n    });\n\n    this.route('report', function () {\n      this.route('employee-list');\n      this.route('report-setup');\n\n      this.route('payroll', function () {\n        this.route('loading', {});\n      });\n\n      this.route('time-card', function () {\n        this.route('loading');\n        this.route('time-off-entry');\n        this.route('full-report', function () {});\n      });\n      this.route('time-off', function () {\n        this.route('loading');\n      });\n      this.route('time-card-approval');\n      this.route('loading');\n      this.route('time-entries', function () {\n        this.route('loading');\n      });\n      this.route('activity', function () {\n        this.route('loading');\n      });\n      this.route('safety-signature', function () {\n        this.route('date');\n      });\n    });\n\n    this.route('project', function () {\n      this.route('detail', { path: '/:id' }, function () {\n        this.route('index', { path: '' });\n\n        this.route('reports', function () {\n          this.route('employees');\n          this.route('subprojects');\n          this.route('budget-versus-actual');\n          this.route('loading');\n        });\n      });\n    });\n\n    this.route('employees', function () {\n      this.route('employee', { path: '/employee/:id' });\n      this.route('employee-locations');\n      this.route('locations');\n      this.route('loading');\n    });\n\n    this.route('note', function () {\n      this.route('detail', { path: '/detail/:id' });\n    });\n    this.route('account-ready');\n    this.route('not-found', { path: '/*path' });\n    this.route('loading');\n    this.route('scheduling', function () {\n      this.route('loading');\n    });\n    this.route('map');\n    this.route('logout');\n  });\n\n  exports.default = Router;\n});","define('busy-app/routes/account-ready', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/account-settings', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n    auth: Ember.inject.service('auth'),\n\n    model: function model() {\n      return this.get('auth.member');\n    }\n  });\n});","define('busy-app/routes/application', ['exports', '@busy-web/utils', 'busy-app/utils/query-string-to-json', 'ember-simple-auth/mixins/application-route-mixin', 'moment'], function (exports, _utils, _queryStringToJson, _applicationRouteMixin, _moment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _slicedToArray = function () {\n    function sliceIterator(arr, i) {\n      var _arr = [];\n      var _n = true;\n      var _d = false;\n      var _e = undefined;\n\n      try {\n        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n          _arr.push(_s.value);\n\n          if (i && _arr.length === i) break;\n        }\n      } catch (err) {\n        _d = true;\n        _e = err;\n      } finally {\n        try {\n          if (!_n && _i[\"return\"]) _i[\"return\"]();\n        } finally {\n          if (_d) throw _e;\n        }\n      }\n\n      return _arr;\n    }\n\n    return function (arr, i) {\n      if (Array.isArray(arr)) {\n        return arr;\n      } else if (Symbol.iterator in Object(arr)) {\n        return sliceIterator(arr, i);\n      } else {\n        throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n      }\n    };\n  }();\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  exports.default = Ember.Route.extend(_applicationRouteMixin.default, {\n    auth: Ember.inject.service('auth'),\n    interop: Ember.inject.service('interop'),\n    session: Ember.inject.service('session'),\n    features: Ember.inject.service('features'),\n    toggle: Ember.inject.service('toggle'),\n    subscription: Ember.inject.service('subscription'),\n    analytics: Ember.inject.service('analytics'),\n    discovery: Ember.inject.service('discovery'),\n\n    queryParams: {\n      authorize: { replace: true },\n      token: { replace: true }\n    },\n\n    beforeModel: function beforeModel(transition) {\n      var _this = this,\n          _arguments = arguments;\n\n      if (Ember.get(this, 'features.serverOutage')) {\n        return;\n      }\n\n      // load analytics classes\n      this.get('analytics');\n      this.get('discovery').getManifest();\n\n      // set user language.\n      this.setLang();\n\n      // check for any authentication query params and normalize the results\n\n      var _parseAuthenticationP = parseAuthenticationParams(transition.queryParams),\n          query = _parseAuthenticationP.query,\n          auth = _parseAuthenticationP.auth,\n          id = _parseAuthenticationP.id;\n\n      if (!Ember.isEmpty(auth) && !Ember.isEmpty(id)) {\n        // Note:\n        // this authentication style doesnt make any calls to the server\n        // it expects that the token and id are valid and sets them in\n        // localstorage for use. Only after the window reload will the first call\n        // be made and if the token is invalid the user will be logged out at that time.\n\n        // a full window reload is the only way to prevent odd behavior here\n        return this.get('session').authenticate('authenticator:basic', null, null, { token: auth, id: id }).then(function () {\n          var queryStr = Object.keys(query).map(function (key) {\n            return encodeURIComponent(key) + '=' + encodeURIComponent(query[key]);\n          }).join('&');\n\n          if (queryStr.length) {\n            queryStr = '?' + queryStr;\n          }\n\n          var url = window.location.pathname + queryStr;\n\n          return window.location.replace(url);\n        });\n      } else {\n        // setup auth data\n        return this.setupAuth().then(function () {\n          // enable features\n          return _this.enableFeatures().then(function () {\n            // allow ember app to conitnue loading.\n            return _this._super.apply(_this, _arguments);\n          });\n        });\n      }\n    },\n    model: function model() {\n      var _this2 = this;\n\n      if (Ember.get(this, 'features.serverOutage')) {\n        return true;\n      }\n\n      window.BusyApp.interop = function () {\n        return _this2.dumpInteropDebug();\n      };\n\n      return this.setupAuth();\n    },\n    getInteropDebug: function getInteropDebug() {\n      var interopUrl = Ember.get(this, 'interop').getReactAppUrl();\n      var keyAuthorization = Ember.get(this, 'session.data.authenticated.token');\n      var memberId = Ember.get(this, 'session.data.authenticated.id');\n      var organizationId = Ember.get(this, 'auth.organization.id');\n      var interopValues = [keyAuthorization, memberId].join(':');\n      var interopToken = window.btoa(interopValues);\n\n      return {\n        memberId: memberId,\n        organizationId: organizationId,\n        keyAuthorization: keyAuthorization,\n        interopToken: interopToken,\n        interopUrl: interopUrl\n      };\n    },\n    dumpInteropDebug: function dumpInteropDebug() {\n      var debug = this.getInteropDebug();\n\n      // eslint-disable-next-line no-console\n      Object.keys(debug).forEach(function (k) {\n        return console.log(_defineProperty({}, k, debug[k]));\n      });\n    },\n    setupAuth: function setupAuth() {\n      return Ember.RSVP.hash({\n        member: this.get('auth.member'),\n        positions: this.get('auth.positions'),\n        organization: this.get('auth.organization'),\n        organizationPayPeriod: this.get('auth.organizationPayPeriod'),\n        organizationOvertimePeriod: this.get('auth.organizationOvertimePeriod'),\n        subscriptionStatus: this.get('subscription.subscriptionStatus')\n      });\n      //.then(data => {\n      //\t//setup syncing web worker\n      //\tif (this.get('session.isAuthenticated')) {\n      //\t\twebWorker(this.get('auth.token'), this.get('auth.member.id'), this.get('auth.organization.id'));\n      //\t}\n      //\treturn data;\n      //});\n    },\n    enableFeatures: function enableFeatures() {\n      var _this3 = this;\n\n      if (this.get('subscription.isProAccount')) {\n        this.get('features').enable('insurance-classes');\n      }\n\n      return this.get('toggle').setupLaunchDarkly().then(function (data) {\n        if (_this3.get('features.allowSubscriptionOverride')) {\n          var proOveride = _utils.LocalStorage.getProperty('x-allow-override-pro') === 'true';\n          if (proOveride) {\n            _this3.get('features').enable('overrides/pro');\n          } else {\n            _this3.get('features').disable('overrides/pro');\n          }\n          _this3.get('toggle').getAllFlags();\n        }\n        if (_this3.get('features').isEnabled('overrides/reactMainApp')) {\n          _this3.get('features').enable('overrides/reactMainApp');\n        }\n        return data;\n      });\n    },\n    setLang: function setLang() {\n      // suported languages must be in lowercase values.\n      var supportedLanguages = ['en-us', 'en', 'es'];\n\n      // get the users chosen languages\n      var allLanguages = window.navigator.languages;\n      if (Ember.isNone(allLanguages)) {\n        allLanguages = [window.navigator.language];\n      }\n\n      var lang = allLanguages.find(function (language) {\n        return typeof language === 'string' && supportedLanguages.indexOf(language.toLowerCase()) !== -1;\n      });\n\n      if (Ember.isNone(lang)) {\n        lang = 'en-US';\n      }\n\n      //lang = 'es';\n      _moment.default.locale(lang);\n\n      var langNormalized = lang.toLowerCase();\n\n      // add lang to body class\n      Ember.$('body').addClass(langNormalized);\n\n      // load the lang module.\n      Ember.STRINGS = Ember.getOwner(this).factoryFor('lang:' + langNormalized).class;\n    },\n    getTokenlessRedirect: function getTokenlessRedirect(targetUrl, query) {\n      var hash = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n      delete query.token;\n      delete query.member_id;\n      delete query.memberId;\n\n      var baseUrl = targetUrl.split('?')[0];\n      if (!Ember.isEmpty(hash)) {\n        hash = '#' + hash.replace(/^#/, ''); // remove the hash if it exists so it can be added back to ensure it exists\n        baseUrl += hash;\n      }\n\n      var qs = Object.keys(query).map(function (key) {\n        var encodedKey = encodeURIComponent(key);\n        var encodedValue = encodeURIComponent(query[key]);\n        return encodedKey + '=' + encodedValue;\n      }).join('&');\n\n      return qs.length ? baseUrl + '?' + qs : baseUrl;\n    },\n\n\n    actions: {\n      authenticateSession: function authenticateSession(username, password) {\n        var success = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n        var error = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n        this.get('session').authenticate('authenticator:basic', username, password).then(function () {\n          return Ember.run(null, success, null);\n        }).catch(function (err) {\n          return Ember.run(null, error, err);\n        });\n      },\n      invalidateSession: function invalidateSession() {\n        return this.get('auth').invalidateSession();\n      },\n      reloadAuth: function reloadAuth() {\n        this.refresh();\n      }\n    }\n  });\n\n\n  function parseAuthenticationParams(query) {\n    query = Ember.assign({}, query);\n\n    // ember cuts off part of the btoa hash.\n    // this is a hack to ensure the auth hash remains entact\n    if (query && !Ember.isEmpty(query.authorize)) {\n      var authorize = window.location.search.slice(1).split('&').find(function (i) {\n        return i.search(/authorize=/) !== -1;\n      });\n      authorize = authorize.slice(authorize.indexOf('=') + 1);\n      query.authorize = authorize;\n    }\n\n    var hash = window.location.hash;\n    if (!Ember.isEmpty(hash)) {\n      // check for queryParams appended to the hash\n      // just incase someone doesnt format the url correctly\n      var qid = hash.indexOf('?');\n      if (qid !== -1) {\n        var queryStr = hash.slice(qid + 1);\n        query = Ember.assign({}, query, (0, _queryStringToJson.default)(queryStr));\n        hash = hash.slice(0, qid);\n      }\n\n      // better tab format for redirected links\n      if (!Ember.isNone(hash)) {\n        query.bc_tab = hash.replace(/^#tab-/, '');\n      }\n    }\n\n    var auth = void 0,\n        id = void 0;\n    if (!Ember.isEmpty(query.authorize)) {\n      var _window$atob$split = window.atob(query.authorize).split(':');\n\n      var _window$atob$split2 = _slicedToArray(_window$atob$split, 2);\n\n      auth = _window$atob$split2[0];\n      id = _window$atob$split2[1];\n\n\n      // delete app query params from query\n      delete query.authorize;\n    } else if (!Ember.isEmpty(query.token) && (!Ember.isEmpty(query.member_id) || !Ember.isEmpty(query.memberId))) {\n      auth = query.token;\n      id = query.member_id || query.memberId;\n\n      // delete app query params from query\n      delete query.token;\n      delete query.member_id;\n      delete query.memberId;\n    }\n\n    return { auth: auth, id: id, query: query };\n  }\n});","define('busy-app/routes/company-settings', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/mixins/check-permission'], function (exports, _authenticatedRouteMixin, _checkPermission) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _checkPermission.default, {\n    permissions: Ember.computed(function () {\n      return ['manageCompanySettings'];\n    })\n  });\n});","define('busy-app/routes/company-settings/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/components/mixins/tab-route'], function (exports, _authenticatedRouteMixin, _tabRoute) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _tabRoute.default, {\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tqueryParams: {\n\t\t\t_desc: { replace: true }\n\t\t},\n\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.get('auth.organization').then(function (org) {\n\t\t\t\t// load the organization-info model from the api\n\t\t\t\treturn _this.store.query('organization-info', { organization_id: org.get('id') }).then(function (model) {\n\t\t\t\t\t// if the model doesn't exist then create it\n\t\t\t\t\tvar profile = model.objectAt(0);\n\t\t\t\t\tif (Ember.isNone(profile)) {\n\t\t\t\t\t\t// create the organization-info model and set the organizationId\n\t\t\t\t\t\tprofile = _this.store.createRecord('organization-info', {\n\t\t\t\t\t\t\torganizationId: org.get('id')\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\torg.set('organizationInfo', profile);\n\t\t\t\t\treturn org;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/company-settings/intuit-quickbooks', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({\n    // beforeModel(transition) {\n    // \tvar org = this.modelFor('application').organization;\n    // \tif(isNone(org) || !this.features.get('quickbooks')) {\n    // \t\ttransition.abort();\n    // \t\tthis.transitionTo('index');\n    // \t} else {\n    // \t\treturn this._super.apply(this, arguments);\n    // \t}\n    // },\n  });\n});","define('busy-app/routes/company-settings/procore/callback', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/company-settings/procore/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/cost-code', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/mixins/check-permission'], function (exports, _authenticatedRouteMixin, _checkPermission) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _checkPermission.default, {\n\t\tpermissions: Ember.computed(function () {\n\t\t\treturn ['manageCostCodes'];\n\t\t}),\n\n\t\tbeforeModel: function beforeModel(transition) {\n\t\t\tvar org = this.modelFor('application').organization;\n\t\t\tif (Ember.isNone(org) || !this.features.get('cost-codes')) {\n\t\t\t\ttransition.abort();\n\t\t\t\tthis.transitionTo('index');\n\t\t\t} else {\n\t\t\t\treturn this._super.apply(this, arguments);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/cost-code/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tqueryParams: {\n\t\t\tgroup: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsearch: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage_size: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tfilter: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tonSetup: Ember.on('activate', function () {\n\t\t\tthis.setDefaultPageSize();\n\t\t}),\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.resetFilters();\n\t\t\tthis.setDefaultPageSize();\n\t\t},\n\t\tsetDefaultPageSize: function setDefaultPageSize() {\n\t\t\tvar qp = this.get('_qp');\n\t\t\tvar pageSize = parseInt(_utils.LocalStorage.getProperty('member-pagination-size') || 30, 10);\n\n\t\t\tif (pageSize && qp && qp.qps) {\n\t\t\t\tvar obj = qp.qps.findBy('prop', 'page_size');\n\t\t\t\tif (obj) {\n\t\t\t\t\tvar defaultValue = parseInt(obj.defaultValue || 30, 10);\n\t\t\t\t\tif (defaultValue !== pageSize) {\n\t\t\t\t\t\tobj.defaultValue = pageSize;\n\t\t\t\t\t\tobj.serializedDefaultValue = pageSize;\n\t\t\t\t\t\tobj.undecoratedDefaultValue = pageSize;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar controller = this.controllerFor('cost-code/index');\n\t\t\tcontroller.set('isLoading', true);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tcostCodes: this.getCostCodes(params),\n\t\t\t\tisProcoreIntegrationEnabled: this.getProcoreIntegrationStatus()\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar costCodes = _ref.costCodes,\n\t\t\t\t    isProcoreIntegrationEnabled = _ref.isProcoreIntegrationEnabled;\n\n\t\t\t\tcontroller.set('isProcoreIntegrationEnabled', isProcoreIntegrationEnabled);\n\t\t\t\t_this.addNoInsuranceOption();\n\t\t\t\tcontroller.getGroups();\n\n\t\t\t\treturn costCodes;\n\t\t\t}).finally(function () {\n\t\t\t\tcontroller.set('isLoading', false);\n\t\t\t});\n\t\t},\n\t\tgetCostCodes: function getCostCodes(params) {\n\t\t\tvar query = {\n\t\t\t\t_asc: ['cost_code', 'title'],\n\t\t\t\tpage_size: params.page_size || 30,\n\t\t\t\tpage: params.page || 1\n\t\t\t};\n\n\t\t\tif (params.group === 'archived') {\n\t\t\t\tquery.archived_on = '!_-NULL-_';\n\t\t\t\tquery.deleted_on = '_-DISABLE-_';\n\t\t\t} else if (params.group === 'ungrouped') {\n\t\t\t\tquery.cost_code_group_id = null;\n\t\t\t\tquery.archived_on = null;\n\t\t\t} else {\n\t\t\t\tif (!Ember.isEmpty(params.group)) {\n\t\t\t\t\tquery.cost_code_group_id = params.group;\n\t\t\t\t}\n\n\t\t\t\tquery.archived_on = null;\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(params.search)) {\n\t\t\t\tquery._search = params.search;\n\t\t\t}\n\n\t\t\treturn this.store.query('cost-code', query).then(function (models) {\n\t\t\t\tmodels.forEach(function (model) {\n\t\t\t\t\tmodel.getChildren();\n\t\t\t\t});\n\n\t\t\t\treturn models;\n\t\t\t});\n\t\t},\n\t\tgetProcoreIntegrationStatus: function getProcoreIntegrationStatus() {\n\t\t\t// short circuit if the procore feature is not enabled\n\t\t\tif (!this.get('features').isEnabled('procore')) {\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\n\t\t\tvar query = {\n\t\t\t\tintegrationName: 'procore',\n\t\t\t\tenabled: true\n\t\t\t};\n\n\t\t\treturn this.store.query('organization-integration', query).then(function (procoreIntegration) {\n\t\t\t\treturn !!procoreIntegration.get('length');\n\t\t\t});\n\t\t},\n\t\taddNoInsuranceOption: function addNoInsuranceOption() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar organizationId = this.get('auth.organization.id');\n\t\t\tvar title = 'No Insurance';\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tworkersComp: this.store.query('workers-comp', { title: title }).then(function (compRecord) {\n\t\t\t\t\tif (compRecord.get('length') !== 1) {\n\t\t\t\t\t\tif (compRecord.get('length') > 1) {\n\t\t\t\t\t\t\tcompRecord.forEach(function (compItem) {\n\t\t\t\t\t\t\t\treturn compItem.destroyRecord();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _this2.store.createRecord('workers-comp', { title: title, organizationId: organizationId }).save();\n\t\t\t\t\t}\n\t\t\t\t}),\n\n\t\t\t\tgeneralLiability: this.store.query('general-liability', { title: title }).then(function (generalRecord) {\n\t\t\t\t\tif (generalRecord.get('length') !== 1) {\n\t\t\t\t\t\tif (!Ember.isEmpty(generalRecord)) {\n\t\t\t\t\t\t\tgeneralRecord.forEach(function (genItem) {\n\t\t\t\t\t\t\t\treturn genItem.destroyRecord();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _this2.store.createRecord('general-liability', { title: title, organizationId: organizationId }).save();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\treturn this.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/employees', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/employees/employee-locations', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tid: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tfilter: {\n\t\t\t\trefreshModel: false,\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.set('id', null);\n\t\t\tcontroller.set('member_id', null);\n\t\t\tcontroller.set('filter', null);\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.store.findRecord('time-entry', params.id).then(function (model) {\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\ttimeEntry: model,\n\t\t\t\t\tmember: _this.store.findRecord('member', model.get('memberId')),\n\t\t\t\t\tbreaks: _this.store.query('time-entry-break', { time_entry_id: model.get('id') })\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tvar ids = [];\n\t\t\t\t\tif (!Ember.isNone(data.timeEntry.get('startLocationId'))) {\n\t\t\t\t\t\tids.push(data.timeEntry.get('startLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(data.timeEntry.get('endLocationId'))) {\n\t\t\t\t\t\tids.push(data.timeEntry.get('endLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.breaks.forEach(function (entryBreak) {\n\t\t\t\t\t\tif (!Ember.isNone(entryBreak.get('startLocationId'))) {\n\t\t\t\t\t\t\tids.push(entryBreak.get('startLocationId'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(entryBreak.get('endLocationId'))) {\n\t\t\t\t\t\t\tids.push(entryBreak.get('endLocationId'));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn _this.store.findByIds('member-location', ids).then(function (locations) {\n\t\t\t\t\t\tvar startLocation = locations.findBy('id', data.timeEntry.get('startLocationId'));\n\t\t\t\t\t\tdata.timeEntry.set('startLocation', startLocation);\n\n\t\t\t\t\t\tvar endLocation = locations.findBy('id', data.timeEntry.get('endLocationId'));\n\t\t\t\t\t\tdata.timeEntry.set('endLocation', endLocation);\n\n\t\t\t\t\t\tdata.breaks.forEach(function (entryBreak) {\n\t\t\t\t\t\t\t// add time entry for location reference.\n\t\t\t\t\t\t\tentryBreak.set('timeEntry', model);\n\n\t\t\t\t\t\t\tvar startLocation = locations.findBy('id', entryBreak.get('startLocationId'));\n\t\t\t\t\t\t\tentryBreak.set('startLocation', startLocation);\n\n\t\t\t\t\t\t\tvar endLocation = locations.findBy('id', entryBreak.get('endLocationId'));\n\t\t\t\t\t\t\tentryBreak.set('endLocation', endLocation);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tmodel.set('timeEntryBreaks', data.breaks);\n\t\t\t\t\t\tmodel.set('member', data.member);\n\t\t\t\t\t\treturn model;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/employees/employee', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/components/mixins/tab-route'], function (exports, _authenticatedRouteMixin, _tabRoute) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _tabRoute.default, {\n\t\tqueryParams: {\n\t\t\ttimesheet_start: { replace: true },\n\t\t\ttimesheet_end: { replace: true },\n\t\t\ttimesheet_mode: { replace: true }\n\t\t},\n\n\t\tsignature: Ember.inject.service('signature'),\n\n\t\tmodel: function model(params) {\n\t\t\tvar memberPromise = this.store.findRecord('member', params.id);\n\t\t\tvar needsPromise = Ember.RSVP.resolve();\n\t\t\tif (this.get('features.signatures')) {\n\t\t\t\tneedsPromise = this.get('signature').getNeedsTimecardSignature(params.id);\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmember: memberPromise,\n\t\t\t\tshowTimecardBadge: needsPromise\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/employees/index', ['exports', '@busy-web/utils', 'ember-simple-auth/mixins/authenticated-route-mixin', 'moment'], function (exports, _utils, _authenticatedRouteMixin, _moment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsubscription: Ember.inject.service(),\n\n\t\tqueryParams: {\n\t\t\tgroup: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsearch: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage_size: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tfilter: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tonSetup: Ember.on('activate', function () {\n\t\t\tthis.setDefaultPageSize();\n\t\t}),\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.resetFilters();\n\t\t\tthis.setDefaultPageSize();\n\t\t},\n\t\tsetDefaultPageSize: function setDefaultPageSize() {\n\t\t\tvar qp = Ember.get(this, '_qp');\n\t\t\tvar pageSize = parseInt(_utils.LocalStorage.getProperty('member-pagination-size') || 30, 10);\n\n\t\t\tif (pageSize && qp && qp.qps) {\n\t\t\t\tvar obj = qp.qps.findBy('prop', 'page_size');\n\t\t\t\tif (obj) {\n\t\t\t\t\tvar defaultValue = parseInt(obj.defaultValue || 30, 10);\n\t\t\t\t\tif (defaultValue !== pageSize) {\n\t\t\t\t\t\tobj.defaultValue = pageSize;\n\t\t\t\t\t\tobj.serializedDefaultValue = pageSize;\n\t\t\t\t\t\tobj.undecoratedDefaultValue = pageSize;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * model setup\n   *\n   * @method model\n   * @param {Object} params\n   * @returns {RSVP}\n   */\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar accessParams = this.getFilterPermission(Ember.get(params, 'filter'));\n\t\t\tvar accessObj = this.getAccess(accessParams);\n\t\t\tvar hasAccess = accessObj.self && accessObj.same && accessObj.lower && accessObj.higher;\n\t\t\tif (!hasAccess) {\n\t\t\t\tparams.positions = this.getAccessForPermision(accessParams);\n\t\t\t\thasAccess = Ember.get(params, 'positions.length') > 0;\n\t\t\t}\n\n\t\t\tvar controller = this.controllerFor('employees/index');\n\t\t\tEmber.set(this, 'controller', controller);\n\t\t\tEmber.set(this, 'controller.isLoading', true);\n\n\t\t\treturn this.getMembersQueryParams(params, accessObj).then(function (queryParams) {\n\t\t\t\treturn _this.getMembers(queryParams);\n\t\t\t}).then(function (members) {\n\t\t\t\tvar index = 0;\n\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\tEmber.set(member, 'index', index++);\n\t\t\t\t\tEmber.set(member, 'isSelected', false);\n\t\t\t\t});\n\n\t\t\t\tvar ids = members.map(function (member) {\n\t\t\t\t\treturn Ember.get(member, 'id');\n\t\t\t\t});\n\n\t\t\t\tcontroller.getGroups();\n\t\t\t\treturn _this.getMemberData(members, ids);\n\t\t\t}).catch(function (err) {\n\t\t\t\treturn Ember.set(_this, 'controller.error', err) && Ember.RSVP.reject(err);\n\t\t\t}).finally(function () {\n\t\t\t\treturn Ember.set(_this, 'controller.isLoading', false);\n\t\t\t});\n\t\t},\n\t\tgetMembers: function getMembers(queryParams) {\n\t\t\tif (!Ember.isNone(Ember.get(queryParams, '_inFilter'))) {\n\t\t\t\tvar key = Ember.get(queryParams, '_inFilter.key');\n\t\t\t\tvar values = Ember.get(queryParams, '_inFilter.values');\n\t\t\t\tdelete queryParams._inFilter;\n\n\t\t\t\tif (!Ember.get(values, 'length')) {\n\t\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t\t}\n\n\t\t\t\t// call member findWhereIn\n\t\t\t\treturn this.store.findWhereIn('member', key, values, queryParams);\n\t\t\t} else {\n\t\t\t\t// call member query\n\t\t\t\treturn this.store.query('member', queryParams);\n\t\t\t}\n\t\t},\n\t\tgetMembersQueryParams: function getMembersQueryParams(_ref, accessObj) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _ref$group = _ref.group,\n\t\t\t    group = _ref$group === undefined ? null : _ref$group,\n\t\t\t    _ref$search = _ref.search,\n\t\t\t    search = _ref$search === undefined ? '' : _ref$search,\n\t\t\t    _ref$page_size = _ref.page_size,\n\t\t\t    page_size = _ref$page_size === undefined ? 30 : _ref$page_size,\n\t\t\t    _ref$page = _ref.page,\n\t\t\t    page = _ref$page === undefined ? 1 : _ref$page,\n\t\t\t    _ref$positions = _ref.positions,\n\t\t\t    positions = _ref$positions === undefined ? null : _ref$positions,\n\t\t\t    _ref$filter = _ref.filter,\n\t\t\t    filter = _ref$filter === undefined ? null : _ref$filter;\n\n\t\t\tvar selfMember = Ember.get(this, 'access.auth.memberId');\n\n\t\t\tvar query = {\n\t\t\t\t_asc: ['first_name', 'last_name'],\n\t\t\t\tpage_size: page_size,\n\t\t\t\tpage: page\n\t\t\t};\n\n\t\t\t// NOTES:\n\t\t\t// positions array States\n\t\t\t// positions equals null => auth member has admin access\n\t\t\t// positions equals empty array => auth member has no access to members exepct self\n\t\t\t// positions has results => auth member has access to these position plus self\n\t\t\tvar positionQuery = { archived_on: null };\n\t\t\tif (group === 'archived') {\n\t\t\t\tpositionQuery = { archived_on: '!_-NULL-_' };\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmembersByPos: this.store.findWhereIn('member', 'position_id', positions || [], positionQuery).then(function (pos) {\n\t\t\t\t\treturn pos.map(function (item) {\n\t\t\t\t\t\treturn Ember.get(item, 'id');\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tfilterIds: this.getFilterList(filter, Object.assign({}, query))\n\t\t\t}).then(function (data) {\n\t\t\t\tif (!Ember.isEmpty(positions) && accessObj.self) {\n\t\t\t\t\tif (data.membersByPos.indexOf(selfMember) === -1) {\n\t\t\t\t\t\tdata.membersByPos.push(selfMember);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (group === 'archived') {\n\t\t\t\t\tquery.archived_on = '!_-NULL-_';\n\t\t\t\t\tquery.deleted_on = '_-DISABLE-_';\n\t\t\t\t} else if (group === 'ungrouped') {\n\t\t\t\t\tquery.member_group_id = null;\n\t\t\t\t\tquery.archived_on = null;\n\t\t\t\t} else {\n\t\t\t\t\tif (!Ember.isEmpty(group)) {\n\t\t\t\t\t\tquery.member_group_id = group;\n\t\t\t\t\t}\n\t\t\t\t\tquery.archived_on = null;\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(search)) {\n\t\t\t\t\tquery._search = search;\n\t\t\t\t}\n\n\t\t\t\tvar filterIds = [];\n\t\t\t\tif (!Ember.isEmpty(data.filterIds) && !Ember.isEmpty(data.membersByPos)) {\n\t\t\t\t\tdata.filterIds.forEach(function (id) {\n\t\t\t\t\t\tif (positions.indexOf(id) !== -1) {\n\t\t\t\t\t\t\tfilterIds.push(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else if (Ember.isEmpty(data.filterIds) && !Ember.isEmpty(data.membersByPos)) {\n\t\t\t\t\tfilterIds = data.membersByPos;\n\t\t\t\t} else if (!Ember.isEmpty(data.filterIds) && Ember.isEmpty(data.membersByPos)) {\n\t\t\t\t\tfilterIds = data.filterIds;\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isEmpty(filterIds)) {\n\t\t\t\t\tquery._inFilter = { key: 'id', values: filterIds };\n\t\t\t\t}\n\n\t\t\t\tif (Ember.get(_this2, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\tvar memberGroupId = Ember.get(_this2, 'auth.member.memberGroupId');\n\n\t\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\t\tEmber.set(query, 'id', selfMember);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(query, 'member_group_id', memberGroupId);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn query;\n\t\t\t});\n\t\t},\n\t\tgetMemberData: function getMemberData(members, ids) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar _getDayBoundaryDateSt = this.getDayBoundaryDateStamps(),\n\t\t\t    dayStart = _getDayBoundaryDateSt.dayStart,\n\t\t\t    dayEnd = _getDayBoundaryDateSt.dayEnd;\n\n\t\t\tvar relatedModels = ['timeEntries', 'openEntry', 'timeOffEntries'];\n\n\t\t\tif (Ember.get(this, 'features.locks')) {\n\t\t\t\trelatedModels.push('memberLocks');\n\t\t\t}\n\n\t\t\treturn this.store.filter('member').getRelatedModelsByRangeForMembers(dayStart, dayEnd, ids, relatedModels).then(function (props) {\n\t\t\t\tvar entries = [];\n\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\t// get ralated models for this member\n\t\t\t\t\tvar relationships = {};\n\t\t\t\t\trelationships.timeEntries = props.timeEntries.filterBy('memberId', Ember.get(member, 'id')).sortBy('startTime');\n\t\t\t\t\trelationships.timeOffEntries = props.timeOffEntries.filterBy('memberId', Ember.get(member, 'id'));\n\t\t\t\t\trelationships.openEntry = props.openEntry.findBy('memberId', Ember.get(member, 'id'));\n\t\t\t\t\tif (Ember.get(_this3, 'features.locks') && !Ember.isNone(Ember.get(props, 'memberLocks'))) {\n\t\t\t\t\t\trelationships.memberLock = props.memberLocks.findBy('memberId', Ember.get(member, 'id'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// save a reference to the last time entry\n\t\t\t\t\tif (!Ember.isNone(Ember.get(relationships, 'timeEntries.lastObject'))) {\n\t\t\t\t\t\tentries.push(Ember.get(relationships, 'timeEntries.lastObject'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// save a reference to the open entry and start the timer\n\t\t\t\t\tif (!Ember.isNone(Ember.get(relationships, 'openEntry'))) {\n\t\t\t\t\t\tEmber.get(relationships, 'openEntry').setTimeInterval(60000);\n\t\t\t\t\t\tentries.push(Ember.get(relationships, 'openEntry'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// add the relationships to this member\n\t\t\t\t\tmember.setProperties(relationships);\n\t\t\t\t});\n\t\t\t\treturn members;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * rely on pass by reference\n   *\n   * @method attachTimeEntryRelatedModels\n   */\n\t\tattachTimeEntryRelatedModels: function attachTimeEntryRelatedModels(timeEntry) {\n\t\t\tif (!Ember.isNone(timeEntry)) {\n\t\t\t\tthis.store.filter('time-entry').getRelatedModels(timeEntry).then(function (props) {\n\t\t\t\t\tprops.timeEntryBreaks = props.breaks;\n\t\t\t\t\ttimeEntry.setProperties(props);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * returns startTime and endTime epoch timestamps for the given startDate and endDate, defaults to current day\n   *\n   * @method getDayBoundaryDateStamps\n   */\n\t\tgetDayBoundaryDateStamps: function getDayBoundaryDateStamps() {\n\t\t\tvar startDate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _utils.Time.date();\n\t\t\tvar endDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startDate;\n\t\t\t(true && !(_moment.default.isMoment(startDate)) && Ember.assert('startDate must be a Moment Object', _moment.default.isMoment(startDate)));\n\t\t\t(true && !(_moment.default.isMoment(endDate)) && Ember.assert('endDate must be a Moment Object', _moment.default.isMoment(endDate)));\n\n\n\t\t\tvar dayStart = startDate.startOf('day').unix();\n\t\t\tvar dayEnd = endDate.endOf('day').unix();\n\n\t\t\treturn { dayStart: dayStart, dayEnd: dayEnd };\n\t\t},\n\t\tgetFilterPermission: function getFilterPermission(type) {\n\t\t\tvar accessParams = {\n\t\t\t\tisManageEmployee: false,\n\t\t\t\tisManageTime: false,\n\t\t\t\tisTrackTime: false,\n\t\t\t\tisMemberLock: false\n\t\t\t};\n\n\t\t\tif (type === 'clock-in' || type === 'clock-out' || type === 'switch' || type === 'go-on-break' || type === 'go-off-break' || type === 'locations') {\n\t\t\t\taccessParams.isTrackTime = true;\n\t\t\t} else if (type === 'clock-in-at' || type === 'clock-out-at' || type === 'new-time-entry' || type === 'new-time-off') {\n\t\t\t\taccessParams.isManageTime = true;\n\t\t\t\t// } else if(type === 'locations') {\n\t\t\t\t// \taccessParams.isManageEmployee = true;\n\t\t\t} else if (type === 'archive') {\n\t\t\t\taccessParams.isManageEmployee = true;\n\t\t\t} else if (type === 'edit-lock-date') {\n\t\t\t\taccessParams.isMemberLock = true;\n\t\t\t} else {\n\t\t\t\taccessParams.isManageEmployee = true;\n\t\t\t\taccessParams.isManageTime = true;\n\t\t\t\taccessParams.isTrackTime = true;\n\t\t\t\taccessParams.isMemberLock = true;\n\t\t\t}\n\t\t\treturn accessParams;\n\t\t},\n\t\tgetFilterList: function getFilterList(type, query) {\n\t\t\tvar _this4 = this;\n\n\t\t\tif (Ember.isNone(type)) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tif (type === 'clock-in' || type === 'clock-in-at') {\n\t\t\t\treturn this.store.findAll('time-entry', { end_time: null, deleted_on: null }).then(function (entry) {\n\t\t\t\t\treturn _this4.store.findAll('member', { archived_on: null }).then(function (member) {\n\t\t\t\t\t\tvar entryIds = _this4.getIdsFromModel(entry, 'memberId');\n\t\t\t\t\t\tvar model = member.filter(function (item) {\n\t\t\t\t\t\t\treturn entryIds.indexOf(item.id) === -1;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn _this4.getIdsFromModel(model, 'id');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (type === 'clock-out' || type === 'clock-out-at' || type === 'switch' || type === 'go-on-break') {\n\t\t\t\treturn this.store.findAll('time-entry', { end_time: null, deleted_on: null }).then(function (model) {\n\t\t\t\t\treturn _this4.getIdsFromModel(model, 'memberId');\n\t\t\t\t});\n\t\t\t} else if (type === 'go-off-break') {\n\t\t\t\treturn this.store.findAll('time-entry-break', { end_time: null }).then(function (breaks) {\n\t\t\t\t\treturn _this4.store.findWhereIn('time-entry', 'id', _this4.getIdsFromModel(breaks, 'timeEntryId'), { end_time: null, deleted_on: null }).then(function (model) {\n\t\t\t\t\t\treturn _this4.getIdsFromModel(model, 'memberId');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (type === 'locations') {\n\t\t\t\treturn this.store.findAll('time-entry', { end_time: null, deleted_on: null }).then(function (model) {\n\t\t\t\t\tmodel = model.filter(function (item) {\n\t\t\t\t\t\tif (!Ember.isNone(Ember.get(item, 'startLocationId')) || !Ember.isNone(Ember.get(item, 'endLocationId'))) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\treturn _this4.getIdsFromModel(model, 'memberId');\n\t\t\t\t});\n\t\t\t} else if (type === 'archive') {\n\t\t\t\t// exclude self and owner from archive results.\n\t\t\t\tvar authMember = Ember.get(this, 'access.auth.member.id');\n\t\t\t\tvar ownerMember = Ember.get(this, 'access.auth.organization.ownedBy');\n\t\t\t\tvar notList = [authMember];\n\t\t\t\tif (authMember !== ownerMember) {\n\t\t\t\t\tnotList.push(ownerMember);\n\t\t\t\t}\n\n\t\t\t\tquery._not_in = { id: notList };\n\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\t\t},\n\t\tgetAccess: function getAccess(_ref2) {\n\t\t\tvar _ref2$isManageEmploye = _ref2.isManageEmployee,\n\t\t\t    isManageEmployee = _ref2$isManageEmploye === undefined ? false : _ref2$isManageEmploye,\n\t\t\t    _ref2$isManageTime = _ref2.isManageTime,\n\t\t\t    isManageTime = _ref2$isManageTime === undefined ? false : _ref2$isManageTime,\n\t\t\t    _ref2$isTrackTime = _ref2.isTrackTime,\n\t\t\t    isTrackTime = _ref2$isTrackTime === undefined ? false : _ref2$isTrackTime,\n\t\t\t    _ref2$isMemberLock = _ref2.isMemberLock,\n\t\t\t    isMemberLock = _ref2$isMemberLock === undefined ? false : _ref2$isMemberLock;\n\n\t\t\tvar access = Ember.get(this, 'access');\n\t\t\tvar self = false,\n\t\t\t    same = false,\n\t\t\t    lower = false,\n\t\t\t    higher = false;\n\n\t\t\tif (!Ember.isNone(access)) {\n\t\t\t\tvar permission = Ember.get(access, 'auth.authMemberPosition');\n\t\t\t\tif (!Ember.isNone(permission)) {\n\t\t\t\t\tvar manageEmp = access.parseSetting(Ember.get(permission, 'manageEmployees'));\n\t\t\t\t\tvar trackTime = access.parseSetting(Ember.get(permission, 'timeEvents'));\n\t\t\t\t\tvar manageTime = access.parseSetting(Ember.get(permission, 'manageTimeEntries'));\n\t\t\t\t\tvar memberLock = access.parseSetting(Ember.get(permission, 'memberLock'));\n\n\t\t\t\t\tvar validatePermission = function validatePermission(type) {\n\t\t\t\t\t\treturn isManageEmployee && Ember.get(manageEmp, type) || isTrackTime && Ember.get(trackTime, type) || isManageTime && Ember.get(manageTime, type) || isMemberLock && Ember.get(memberLock, type);\n\t\t\t\t\t};\n\n\t\t\t\t\tself = validatePermission('self');\n\t\t\t\t\tsame = validatePermission('same');\n\t\t\t\t\tlower = validatePermission('lower');\n\t\t\t\t\thigher = validatePermission('higher');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { self: self, same: same, lower: lower, higher: higher };\n\t\t},\n\t\tgetAccessForPermision: function getAccessForPermision(_ref3) {\n\t\t\tvar _ref3$isManageEmploye = _ref3.isManageEmployee,\n\t\t\t    isManageEmployee = _ref3$isManageEmploye === undefined ? false : _ref3$isManageEmploye,\n\t\t\t    _ref3$isManageTime = _ref3.isManageTime,\n\t\t\t    isManageTime = _ref3$isManageTime === undefined ? false : _ref3$isManageTime,\n\t\t\t    _ref3$isTrackTime = _ref3.isTrackTime,\n\t\t\t    isTrackTime = _ref3$isTrackTime === undefined ? false : _ref3$isTrackTime,\n\t\t\t    _ref3$isMemberLock = _ref3.isMemberLock,\n\t\t\t    isMemberLock = _ref3$isMemberLock === undefined ? false : _ref3$isMemberLock;\n\n\t\t\tvar permission = Ember.get(this, 'access.auth.authMemberPosition');\n\t\t\tvar accessObj = this.getAccess({ isManageEmployee: isManageEmployee, isManageTime: isManageTime, isTrackTime: isTrackTime, isMemberLock: isMemberLock });\n\t\t\tvar accessTo = [];\n\n\t\t\tEmber.get(this, 'access.auth.positions').sortBy('level').forEach(function (item) {\n\t\t\t\tvar lower = Ember.get(accessObj, 'lower') && Ember.get(item, 'level') > Ember.get(permission, 'level');\n\t\t\t\tvar same = Ember.get(accessObj, 'same') && Ember.get(item, 'level') === Ember.get(permission, 'level');\n\t\t\t\tvar higher = Ember.get(accessObj, 'higher') && Ember.get(item, 'level') < Ember.get(permission, 'level');\n\n\t\t\t\tif (lower || higher || same) {\n\t\t\t\t\taccessTo.push(Ember.get(item, 'id'));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn accessTo;\n\t\t},\n\t\tgetIdsFromModel: function getIdsFromModel(model, path) {\n\t\t\treturn model.map(function (item) {\n\t\t\t\treturn Ember.get(item, path);\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/employees/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/employees/locations', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\n\t\tqueryParams: {\n\t\t\tids: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tfrom: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.set('ids', null);\n\t\t},\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tif (!Ember.isEmpty(params.ids)) {\n\n\t\t\t\tvar memberIds = params.ids.split(',');\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: this.store.findByIds('member', memberIds.copy()),\n\t\t\t\t\ttimeEntries: this.store.findWhereIn('time-entry', 'member_id', memberIds.copy(), { end_time: '_-NULL-_', deleted_on: '_-NULL-_' })\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tif (Ember.isNone(data.timeEntries)) {\n\t\t\t\t\t\treturn Object.assign(data, { timeEntryBreaks: [] });\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeEntryIds = data.timeEntries.mapBy('id');\n\t\t\t\t\treturn _this.store.findWhereIn('time-entry-break', 'timeEntryId', timeEntryIds, { end_time: '_-NULL-_', deleted_on: '_-NULL-_' }).then(function (timeEntryBreaks) {\n\t\t\t\t\t\treturn Object.assign(data, { timeEntryBreaks: timeEntryBreaks });\n\t\t\t\t\t});\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tvar locationIds = [];\n\t\t\t\t\tdata.timeEntries.forEach(function (item) {\n\t\t\t\t\t\tif (!Ember.isEmpty(item.get('startLocationId'))) {\n\t\t\t\t\t\t\t// make sure this entry is not on break\n\t\t\t\t\t\t\tvar breakEntry = data.timeEntryBreaks.findBy('timeEntryId', item.id);\n\t\t\t\t\t\t\tif (Ember.isNone(breakEntry)) {\n\t\t\t\t\t\t\t\tlocationIds.push(item.get('startLocationId'));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreakEntry.set('timeEntry', item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tdata.timeEntryBreaks.forEach(function (item) {\n\t\t\t\t\t\tif (!Ember.isEmpty(item.get('startLocationId'))) {\n\t\t\t\t\t\t\t// make sure this is still on break\n\t\t\t\t\t\t\tif (Ember.isNone(item.get('endTime'))) {\n\t\t\t\t\t\t\t\tlocationIds.push(item.get('startLocationId'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn _this.store.findByIds('member-location', locationIds).then(function (locations) {\n\t\t\t\t\t\t// get data for locations\n\t\t\t\t\t\tlocations.forEach(function (item) {\n\t\t\t\t\t\t\t// get location start time model\n\t\t\t\t\t\t\tvar startTime = data.timeEntries.findBy('startLocationId', item.id);\n\t\t\t\t\t\t\tif (!Ember.isNone(startTime)) {\n\t\t\t\t\t\t\t\t// add the timeEntry to the location\n\t\t\t\t\t\t\t\titem.set('startTimeEntry', startTime);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// get location end time model\n\t\t\t\t\t\t\tvar startBreakTime = data.timeEntryBreaks.findBy('startLocationId', item.id);\n\t\t\t\t\t\t\tif (!Ember.isNone(startBreakTime)) {\n\t\t\t\t\t\t\t\t// add the timeEntry to the location\n\t\t\t\t\t\t\t\titem.set('breakStart', startBreakTime);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// add the member to the location\n\t\t\t\t\t\t\tvar member = data.members.findBy('id', item.get('memberId'));\n\t\t\t\t\t\t\titem.set('member', member);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn locations;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\t\tgetValues: function getValues(models, keys) {\n\t\t\tvar newArray = [];\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\tkeys.forEach(function (key) {\n\t\t\t\t\tnewArray.push(model.get(key));\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn newArray;\n\t\t}\n\t});\n});","define(\"busy-app/routes/index\", [\"exports\", \"@busy-web/components/mixins/tab-route\", \"ember-simple-auth/mixins/authenticated-route-mixin\"], function (exports, _tabRoute, _authenticatedRouteMixin) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _tabRoute.default, {\n\t\tqueryParams: {\n\t\t\ttimesheet_start: { replace: true },\n\t\t\ttimesheet_end: { replace: true },\n\t\t\ttimesheet_mode: { replace: true }\n\t\t},\n\n\t\tsignature: Ember.inject.service(\"signature\"),\n\t\tauth: Ember.inject.service(\"auth\"),\n\t\tinterop: Ember.inject.service(\"interop\"),\n\t\tfeatures: Ember.inject.service(\"features\"),\n\n\t\tbeforeModel: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(transition) {\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tif (!(Ember.get(this, \"features.reactMainApp\") && Ember.get(this, \"features.onboardingInterop\"))) {\n\t\t\t\t\t\t\t\t\t_context.next = 4;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_context.next = 3;\n\t\t\t\t\t\t\t\treturn Ember.get(this, \"interop\").openReactApp(\"/\");\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\treturn _context.abrupt(\"return\", transition.abort());\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\tcase \"end\":\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction beforeModel(_x) {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn beforeModel;\n\t\t}(),\n\t\tmodel: function model() {\n\t\t\tvar showTimecardBadge = Ember.RSVP.resolve(false);\n\t\t\tif (this.get(\"features.signatures\") && !Ember.isNone(this.get(\"auth.memberId\"))) {\n\t\t\t\tshowTimecardBadge = this.get(\"signature\").getNeedsTimecardSignature(this.get(\"auth.memberId\"));\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({ showTimecardBadge: showTimecardBadge });\n\t\t}\n\t});\n});","define('busy-app/routes/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define(\"busy-app/routes/login\", [\"exports\", \"ember-simple-auth/mixins/unauthenticated-route-mixin\"], function (exports, _unauthenticatedRouteMixin) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_unauthenticatedRouteMixin.default, {\n\t\tinterop: Ember.inject.service(\"interop\"),\n\t\tfeatures: Ember.inject.service(\"features\"),\n\n\t\tbeforeModel: function beforeModel(transition) {\n\t\t\tif (Ember.get(this, 'features.serverOutage')) {\n\t\t\t\treturn transition.abort();\n\t\t\t}\n\n\t\t\tif (Ember.get(this, \"features.onboardingInterop\") && Ember.get(this, \"features.reactMainApp\")) {\n\t\t\t\ttransition.abort();\n\t\t\t\treturn this.redirectToReact();\n\t\t\t}\n\t\t},\n\t\tmodel: function model() {\n\t\t\tEmber.$(\"body\").removeClass(\"signup\");\n\t\t\treturn Ember.RSVP.resolve(null);\n\t\t},\n\t\tredirectToReact: function redirectToReact() {\n\t\t\tvar interop = Ember.get(this, \"interop\");\n\t\t\tvar search = window.location.search;\n\n\t\t\tvar loginPath = \"/login\" + search;\n\t\t\tvar loginUrl = interop.getReactAppUrl(loginPath, {}, false);\n\t\t\tvar windowHandle = interop.openUrl(loginUrl, null, {\n\t\t\t\tnewWindow: false,\n\t\t\t\treplace: true\n\t\t\t});\n\t\t\treturn windowHandle;\n\t\t}\n\t});\n});","define(\"busy-app/routes/logout\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/map', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service(),\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.set('ids', null);\n\t\t},\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\tvar controller = this.controllerFor('map');\n\t\t\tcontroller.set('isLoading', true);\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntries: this.store.query('time-entry', { end_time: '_-NULL-_', deleted_on: '_-NULL-_' }),\n\t\t\t\tscopedGroupMembers: this.getScopedGroupMembers()\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar timeEntries = _ref.timeEntries,\n\t\t\t\t    scopedGroupMembers = _ref.scopedGroupMembers;\n\n\t\t\t\tif (Ember.get(_this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\ttimeEntries = _this.filterByMembers(timeEntries, scopedGroupMembers);\n\t\t\t\t}\n\t\t\t\tvar projectIds = timeEntries.map(function (entry) {\n\t\t\t\t\treturn entry.get('projectId');\n\t\t\t\t});\n\n\t\t\t\tvar equipmentIds = timeEntries.map(function (entry) {\n\t\t\t\t\treturn entry.get('equipmentId');\n\t\t\t\t});\n\n\t\t\t\tvar equipIdStrings = equipmentIds.filter(function (item) {\n\t\t\t\t\tif (typeof item === 'string') {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar memberIds = timeEntries.map(function (entry) {\n\t\t\t\t\treturn entry.get('memberId');\n\t\t\t\t});\n\n\t\t\t\tvar members = [];\n\n\t\t\t\tmemberIds.uniq().forEach(function (item) {\n\t\t\t\t\tif (Ember.isPresent(item)) {\n\t\t\t\t\t\t_this.store.findRecord('member', item).then(function (results) {\n\t\t\t\t\t\t\tmembers.pushObject(results);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar projects = [];\n\n\t\t\t\tprojectIds.uniq().forEach(function (item) {\n\t\t\t\t\tif (Ember.isPresent(item)) {\n\t\t\t\t\t\t_this.store.findRecord('project', item).then(function (results) {\n\t\t\t\t\t\t\tprojects.pushObject(results);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar equipment = [];\n\n\t\t\t\tequipIdStrings.uniq().forEach(function (item) {\n\t\t\t\t\tif (Ember.isPresent(item)) {\n\t\t\t\t\t\t_this.store.findRecord('equipment', item).then(function (results) {\n\t\t\t\t\t\t\tequipment.pushObject(results);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\ttimeEntries: timeEntries,\n\t\t\t\t\tmembers: members,\n\t\t\t\t\tprojects: projects,\n\t\t\t\t\tequipment: equipment,\n\t\t\t\t\tmodelSet: true\n\t\t\t\t});\n\t\t\t}).finally(function () {\n\t\t\t\tEmber.run.later(function () {\n\t\t\t\t\tcontroller.set('isLoading', false);\n\t\t\t\t}, 1000);\n\t\t\t});\n\t\t},\n\t\tgetScopedGroupMembers: function getScopedGroupMembers() {\n\t\t\tif (!Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar query = { archived_on: '_-NULL-_' };\n\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t    id = _EmberGetProperties.id,\n\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t},\n\t\tfilterByMembers: function filterByMembers(timeEntries, members) {\n\t\t\tvar memberIds = new Set(members.mapBy('id'));\n\n\t\t\treturn timeEntries.filter(function (item) {\n\t\t\t\treturn memberIds.has(Ember.get(item, 'memberId'));\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\twillTransition: function willTransition() {\n\t\t\t\tthis.controller.setProperties({\n\t\t\t\t\tshowMembers: true,\n\t\t\t\t\tshowProjects: false,\n\t\t\t\t\tshowEquipment: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/not-found', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend({\n\t\tredirect: function redirect() {\n\t\t\tvar url = this.router.location.formatURL('/not-found');\n\t\t\tif (window.location.pathname !== url) {\n\t\t\t\tthis.transitionTo('/not-found');\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/note/detail', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.store.findRecord('media-collection', params.id).then(function (collection) {\n\t\t\t\treturn _this.store.query('media-entry', { media_collection_id: collection.id, _desc: ['created_on'], page_size: 10000 }).then(function (mediaEntries) {\n\t\t\t\t\treturn collection.get('member').then(function () {\n\t\t\t\t\t\tcollection.set('mediaEntries', mediaEntries);\n\t\t\t\t\t\treturn collection;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/project', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/project/detail', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n    model: function model(param) {\n      var _this = this;\n\n      var id = param.id;\n\n      return this.store.findRecord('project', id).then(function (model) {\n        return Ember.RSVP.hash({\n          project: model,\n          subprojects: _this.store.findAll('project', { _asc: ['title'], parent_project_id: model.id, deleted_on: null })\n        });\n      });\n    }\n  });\n});","define('busy-app/routes/project/detail/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/components/mixins/tab-route'], function (exports, _authenticatedRouteMixin, _tabRoute) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _tabRoute.default, {\n    model: function model() {\n      return this.modelFor('project.detail');\n    }\n  });\n});","define('busy-app/routes/project/detail/reports', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/project/detail/reports/budget-versus-actual', ['exports', '@busy-web/utils', 'busy-app/utils/docs'], function (exports, _utils, _docs) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend({\n\t\tresetController: function resetController(controller, isExiting) {\n\t\t\tif (isExiting) {\n\t\t\t\tif (!Ember.isNone(controller.get('optionSelector')) && controller.get('optionSelector').isAny('_selected', true)) {\n\t\t\t\t\tcontroller.get('optionSelector').forEach(function (selected) {\n\t\t\t\t\t\treturn selected.set('_selected', false);\n\t\t\t\t\t});\n\n\t\t\t\t\tvar defaultSelection = controller.get('optionSelector').findBy('key', 'allTimeRange');\n\t\t\t\t\tdefaultSelection.set('_selected', true);\n\t\t\t\t}\n\n\t\t\t\tcontroller.set('isCustomDate', false);\n\t\t\t}\n\t\t},\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\tvar project = this.modelFor('project.detail');\n\t\t\tvar id = project.project.id;\n\t\t\tvar detail = this.modelFor('project/detail');\n\t\t\tif (!detail.then) {\n\t\t\t\tdetail = Ember.RSVP.resolve(detail);\n\t\t\t}\n\n\t\t\treturn detail.then(function (modelHash) {\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tbudgetSeconds: _this.store.findAll('project-hours-budget', { project_id: id, deleted_on: null }),\n\t\t\t\t\tcostBudget: _this.store.findAll('project-cost-budget', { project_id: id, deleted_on: null }),\n\t\t\t\t\tproject: modelHash.project\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tdata.budgetSeconds = data.budgetSeconds.sortBy('updatedOn').get('lastObject');\n\t\t\t\t\tdata.costBudget = data.costBudget.sortBy('updatedOn').get('lastObject');\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\trenderTemplate: function renderTemplate(controller) {\n\t\t\tvar project = this.modelFor('project.detail');\n\t\t\tvar reportController = this.controllerFor('project.detail.reports');\n\t\t\treportController.set('reportTitle', (0, _utils.loc)('Budget vs Actual'));\n\t\t\tcontroller.set('project', project.project);\n\t\t\tthis.render('project.detail.reports.budget-versus-actual');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tprintReport: function printReport() {\n\t\t\t\tvar container = Ember.$('.v-project-reports-budget-actual');\n\t\t\t\t_docs.default.print(container);\n\t\t\t}\n\t\t}\n\t});\n});","define(\"busy-app/routes/project/detail/reports/employees\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/collection\"], function (exports, _utils, _collection) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tqueryParams: {\n\t\t\tcustom: {\n\t\t\t\treplace: true\n\t\t\t},\n\t\t\tstart: {\n\t\t\t\treplace: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar project = this.modelFor(\"project.detail\");\n\t\t\tvar isCustomDate = params.custom === true;\n\t\t\tvar start = isCustomDate ? params.start : _utils.Time.date(project.project.get(\"createdOn\")).startOf(\"day\").subtract(10, \"years\").unix();\n\t\t\tvar end = isCustomDate ? params.end : _utils.Time.timestamp();\n\t\t\tvar useGroupPermissionScoping = Ember.get(this, \"auth.useGroupPermissionScoping\");\n\n\t\t\tvar query = {\n\t\t\t\tstart_date: start,\n\t\t\t\tend_date: end,\n\t\t\t\tproject_id: project.project.id,\n\t\t\t\tlimit: 1000\n\t\t\t};\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tgroupMembers: this.loadGroupMembers(useGroupPermissionScoping),\n\t\t\t\tmemberSeconds: this.store.findAll(\"member-project-seconds\", query),\n\t\t\t\tmemberCost: this.store.findAll(\"member-project-cost\", query)\n\t\t\t}).then(function (data) {\n\t\t\t\tvar memberCostDictionary = (0, _collection.toDictionary)(data.memberCost, \"uid\");\n\n\t\t\t\tvar memberSeconds = data.memberSeconds.filter(function (item) {\n\t\t\t\t\treturn Ember.get(item, \"totalTotalSeconds\") > 0;\n\t\t\t\t});\n\t\t\t\tvar memberCost = data.memberCost;\n\n\t\t\t\tif (useGroupPermissionScoping) {\n\t\t\t\t\tvar groupMemberIds = new Set(data.groupMembers.mapBy(\"id\"));\n\n\t\t\t\t\tmemberSeconds = memberSeconds.filter(function (item) {\n\t\t\t\t\t\treturn groupMemberIds.has(Ember.get(item, \"memberId\"));\n\t\t\t\t\t});\n\t\t\t\t\tmemberCost = memberCost.filter(function (item) {\n\t\t\t\t\t\treturn groupMemberIds.has(Ember.get(item, \"memberId\"));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvar seconds = memberSeconds.map(function (item) {\n\t\t\t\t\tEmber.setProperties(item, {\n\t\t\t\t\t\tcost: memberCostDictionary.get(Ember.get(item, \"uid\"))\n\t\t\t\t\t});\n\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\n\t\t\t\tvar totalTotalSeconds = (0, _collection.sumBy)(memberSeconds, \"totalTotalSeconds\");\n\t\t\t\tvar totalTotalOverburdenCost = (0, _collection.sumBy)(memberCost, \"totalTotalOverburdenCost\");\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.fetchContainer(seconds, { skipProjectData: true }, \"member\").then(function (d) {\n\t\t\t\t\t\treturn d.member;\n\t\t\t\t\t}),\n\t\t\t\t\ttotalTotalSeconds: totalTotalSeconds,\n\t\t\t\t\ttotalTotalOverburdenCost: totalTotalOverburdenCost\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadGroupMembers: function loadGroupMembers(useGroupPermissionScoping) {\n\t\t\tif (!useGroupPermissionScoping) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t\tvar authMember = Ember.get(this, \"auth.member\");\n\t\t\tvar memberGroupId = Ember.get(authMember, \"memberGroupId\");\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\treturn Ember.RSVP.resolve([authMember]);\n\t\t\t} else {\n\t\t\t\treturn this.store.findAll(\"member\", {\n\t\t\t\t\tmember_group_id: Ember.get(authMember, \"memberGroupId\")\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\trenderTemplate: function renderTemplate(controller) {\n\t\t\tvar project = this.modelFor(\"project.detail\");\n\t\t\tvar reportController = this.controllerFor(\"project.detail.reports\");\n\t\t\treportController.set(\"reportTitle\", (0, _utils.loc)(\"Employees\"));\n\t\t\tcontroller.set(\"project\", project.project);\n\t\t\tthis.render(\"project.detail.reports.employees\");\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/project/detail/reports/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define(\"busy-app/routes/project/detail/reports/subprojects\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/collection\", \"busy-app/utils/unassigned\"], function (exports, _utils, _collection, _unassigned) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tqueryParams: {\n\t\t\tid: { refreshModel: true },\n\t\t\tcustom: { replace: true },\n\t\t\tstart: { replace: true },\n\t\t\tend: { replace: true }\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar project = this.modelFor(\"project.detail\");\n\t\t\tvar isCustomDate = params.custom === true;\n\t\t\tvar start = isCustomDate ? params.start : _utils.Time.date(project.project.get(\"createdOn\")).startOf(\"day\").subtract(10, \"years\").unix();\n\t\t\tvar end = isCustomDate ? params.end : _utils.Time.timestamp();\n\n\t\t\treturn this.loadPrimaryAggregates(project, start, end).then(function (model) {\n\t\t\t\tif (Ember.get(_this, \"auth.useGroupPermissionScoping\")) {\n\t\t\t\t\treturn _this.loadScopedAggregates(project, start, end, model);\n\t\t\t\t} else {\n\t\t\t\t\treturn model;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tloadPrimaryAggregates: function loadPrimaryAggregates(project, start, end) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar projectId = Ember.get(project, \"project.id\");\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tchildProjects: Ember.get(this, \"store\").findAll(\"project\", {\n\t\t\t\t\tparent_project_id: projectId\n\t\t\t\t}),\n\t\t\t\tcost: this.loadProjectCost(projectId, start, end),\n\t\t\t\tscopedGroupMembers: this.loadScopedGroupMembers(),\n\t\t\t\tseconds: this.loadProjectSeconds(projectId, start, end)\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar childProjects = _ref.childProjects,\n\t\t\t\t    cost = _ref.cost,\n\t\t\t\t    scopedGroupMembers = _ref.scopedGroupMembers,\n\t\t\t\t    seconds = _ref.seconds;\n\n\t\t\t\tvar totalTotalSeconds = !Ember.isNone(seconds) ? Ember.get(seconds, \"totalTotalSeconds\") : 0;\n\t\t\t\tvar totalTotalOverburdenCost = !Ember.isNone(cost) ? Ember.get(cost, \"totalTotalOverburdenCost\") : 0;\n\n\t\t\t\tvar childPromises = [(0, _unassigned.default)(project.project, seconds, cost)];\n\n\t\t\t\tchildProjects.forEach(function (project) {\n\t\t\t\t\tproject.set(\"sortWeight\", 1);\n\n\t\t\t\t\tchildPromises.push(Ember.RSVP.hash({\n\t\t\t\t\t\tproject: project,\n\t\t\t\t\t\tseconds: _this2.loadProjectSeconds(project.id, start, end),\n\t\t\t\t\t\tcost: _this2.loadProjectCost(project.id, start, end)\n\t\t\t\t\t}));\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.all(childPromises).then(function (projects) {\n\t\t\t\t\treturn projects.filter(function (item) {\n\t\t\t\t\t\treturn Ember.get(item, \"seconds\") || Ember.get(item, \"cost\");\n\t\t\t\t\t});\n\t\t\t\t}).then(function (projects) {\n\t\t\t\t\treturn projects.sortBy(\"project.title\", \"project.sortWeight\");\n\t\t\t\t}).then(function (projects) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprojects: projects,\n\t\t\t\t\t\tcost: cost,\n\t\t\t\t\t\tscopedGroupMembers: scopedGroupMembers,\n\t\t\t\t\t\tseconds: seconds,\n\t\t\t\t\t\ttotalTotalSeconds: totalTotalSeconds,\n\t\t\t\t\t\ttotalTotalOverburdenCost: totalTotalOverburdenCost\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadScopedAggregates: function loadScopedAggregates(project, start, end, unscopedAggregates) {\n\t\t\tvar projects = unscopedAggregates.projects,\n\t\t\t    scopedGroupMembers = unscopedAggregates.scopedGroupMembers;\n\t\t\tvar totalTotalSeconds = unscopedAggregates.totalTotalSeconds,\n\t\t\t    totalTotalOverburdenCost = unscopedAggregates.totalTotalOverburdenCost;\n\n\n\t\t\tvar projectId = Ember.get(project, \"project.id\");\n\t\t\tvar groupMemberIds = new Set(scopedGroupMembers.mapBy(\"id\"));\n\t\t\tvar allProjectIds = projects.mapBy(\"project.id\").uniq();\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tallMemberProjectSeconds: this.loadAllMemberProjectSeconds(allProjectIds, start, end, groupMemberIds),\n\t\t\t\tallMemberProjectCost: this.loadAllMemberProjectCost(allProjectIds, start, end, groupMemberIds)\n\t\t\t}).then(function (_ref2) {\n\t\t\t\tvar allMemberProjectSeconds = _ref2.allMemberProjectSeconds,\n\t\t\t\t    allMemberProjectCost = _ref2.allMemberProjectCost;\n\n\t\t\t\tvar scopeProjectSeconds = Ember.get(allMemberProjectSeconds, projectId);\n\t\t\t\tvar scopeProjectCost = Ember.get(allMemberProjectCost, projectId);\n\n\t\t\t\tif (!Ember.isNone(scopeProjectSeconds)) {\n\t\t\t\t\ttotalTotalSeconds = (0, _collection.sumBy)(scopeProjectSeconds, \"totalTotalSeconds\");\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(scopeProjectCost)) {\n\t\t\t\t\ttotalTotalOverburdenCost = (0, _collection.sumBy)(scopeProjectCost, \"totalTotalOverburdenCost\");\n\t\t\t\t}\n\n\t\t\t\tprojects.forEach(function (project) {\n\t\t\t\t\tvar id = Ember.get(project, \"project.id\");\n\t\t\t\t\tvar projectSeconds = Ember.get(allMemberProjectSeconds, id);\n\t\t\t\t\tvar projectCost = Ember.get(allMemberProjectCost, id);\n\n\t\t\t\t\t// the root, \"unassigned\" project should NOT include child data\n\t\t\t\t\t// sub projects SHOULD include all their child data\n\t\t\t\t\tif (id === projectId) {\n\t\t\t\t\t\tvar totalSeconds = Ember.isNone(projectSeconds) ? 0 : (0, _collection.sumBy)(projectSeconds, \"totalSeconds\");\n\t\t\t\t\t\tvar totalCost = Ember.isNone(projectCost) ? 0 : (0, _collection.sumBy)(projectCost, \"totalOverburdenCost\");\n\n\t\t\t\t\t\tEmber.set(project, \"seconds.totalSeconds\", totalSeconds);\n\t\t\t\t\t\tEmber.set(project, \"cost.totalOverburdenCost\", totalCost);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _totalSeconds = Ember.isNone(projectSeconds) ? 0 : (0, _collection.sumBy)(projectSeconds, \"totalTotalSeconds\");\n\t\t\t\t\t\tvar _totalCost = Ember.isNone(projectCost) ? 0 : (0, _collection.sumBy)(projectCost, \"totalTotalOverburdenCost\");\n\n\t\t\t\t\t\tEmber.set(project, \"seconds.totalTotalSeconds\", _totalSeconds);\n\t\t\t\t\t\tEmber.set(project, \"cost.totalTotalOverburdenCost\", _totalCost);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tprojects: projects,\n\t\t\t\t\ttotalTotalSeconds: totalTotalSeconds,\n\t\t\t\t\ttotalTotalOverburdenCost: totalTotalOverburdenCost\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tloadProjectSeconds: function loadProjectSeconds(project_id, start_date, end_date) {\n\t\t\treturn Ember.get(this, \"store\").findAll(\"project-seconds\", {\n\t\t\t\tstart_date: start_date,\n\t\t\t\tend_date: end_date,\n\t\t\t\tproject_id: project_id,\n\t\t\t\tarchived_on: null\n\t\t\t}).then(function (d) {\n\t\t\t\treturn d.get(\"firstObject\");\n\t\t\t});\n\t\t},\n\t\tloadProjectCost: function loadProjectCost(project_id, start_date, end_date) {\n\t\t\treturn Ember.get(this, \"store\").findAll(\"project-cost\", {\n\t\t\t\tstart_date: start_date,\n\t\t\t\tend_date: end_date,\n\t\t\t\tproject_id: project_id,\n\t\t\t\tarchived_on: null\n\t\t\t}).then(function (d) {\n\t\t\t\treturn d.get(\"firstObject\");\n\t\t\t});\n\t\t},\n\t\tloadScopedGroupMembers: function loadScopedGroupMembers() {\n\t\t\tif (Ember.get(this, \"auth.useGroupPermissionScoping\")) {\n\t\t\t\tvar memberGroupId = Ember.get(this, \"auth.member.memberGroupId\");\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\treturn Ember.RSVP.resolve([Ember.get(this, \"auth.member\")]);\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.get(this, \"store\").findAll(\"member\", {\n\t\t\t\t\t\tmember_group_id: memberGroupId\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t},\n\t\tloadMemberProjectCost: function loadMemberProjectCost(project_id, start_date, end_date, groupMemberIds) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn Ember.get(this, \"store\").findAll(\"member-project-cost\", {\n\t\t\t\tstart_date: start_date,\n\t\t\t\tend_date: end_date,\n\t\t\t\tproject_id: project_id,\n\t\t\t\tarchived_on: null\n\t\t\t}).then(function (results) {\n\t\t\t\treturn _this3.filterByMembers(results, groupMemberIds);\n\t\t\t});\n\t\t},\n\t\tloadMemberProjectSeconds: function loadMemberProjectSeconds(project_id, start_date, end_date, groupMemberIds) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn Ember.get(this, \"store\").findAll(\"member-project-seconds\", {\n\t\t\t\tstart_date: start_date,\n\t\t\t\tend_date: end_date,\n\t\t\t\tproject_id: project_id,\n\t\t\t\tarchived_on: null\n\t\t\t}).then(function (results) {\n\t\t\t\treturn _this4.filterByMembers(results, groupMemberIds);\n\t\t\t}).then(function (results) {\n\t\t\t\treturn results;\n\t\t\t});\n\t\t},\n\t\tfilterByMembers: function filterByMembers(collection, groupMemberIds) {\n\t\t\tvar filteredCollection = Ember.isNone(collection) ? collection : collection.filter(function (item) {\n\t\t\t\treturn groupMemberIds.has(Ember.get(item, \"memberId\"));\n\t\t\t});\n\t\t\treturn filteredCollection;\n\t\t},\n\t\tloadAllMemberProjectCost: function loadAllMemberProjectCost(projectIds, start_date, end_date, groupMemberIds) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar promises = projectIds.map(function (id) {\n\t\t\t\treturn _this5.loadMemberProjectCost(id, start_date, end_date, groupMemberIds);\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promises).then(function (results) {\n\t\t\t\treturn (0, _collection.flatten)(results);\n\t\t\t}).then(function (flatResults) {\n\t\t\t\treturn (0, _collection.groupBy)(flatResults, \"projectId\");\n\t\t\t});\n\t\t},\n\t\tloadAllMemberProjectSeconds: function loadAllMemberProjectSeconds(projectIds, start_date, end_date, groupMemberIds) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar promises = projectIds.map(function (id) {\n\t\t\t\treturn _this6.loadMemberProjectSeconds(id, start_date, end_date, groupMemberIds);\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promises).then(function (results) {\n\t\t\t\treturn (0, _collection.flatten)(results);\n\t\t\t}).then(function (flatResults) {\n\t\t\t\treturn (0, _collection.groupBy)(flatResults, \"projectId\");\n\t\t\t});\n\t\t},\n\t\trenderTemplate: function renderTemplate(controller) {\n\t\t\tvar project = this.modelFor(\"project.detail\");\n\t\t\tvar reportController = this.controllerFor(\"project.detail.reports\");\n\t\t\treportController.set(\"reportTitle\", (0, _utils.loc)(\"Subprojects\"));\n\t\t\tcontroller.set(\"project\", project.project);\n\t\t\tthis.render(\"project.detail.reports.subprojects\");\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/project/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tgroup: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsearch: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tpage_size: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tfilter: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tonSetup: Ember.on('activate', function () {\n\t\t\tthis.setDefaultPageSize();\n\t\t}),\n\n\t\tresetController: function resetController(controller) {\n\t\t\tcontroller.resetFilters();\n\t\t\tthis.setDefaultPageSize();\n\t\t},\n\t\tsetDefaultPageSize: function setDefaultPageSize() {\n\t\t\tvar qp = this.get('_qp');\n\t\t\tvar pageSize = parseInt(_utils.LocalStorage.getProperty('member-pagination-size') || 30, 10);\n\t\t\tif (pageSize && qp && qp.qps) {\n\t\t\t\tvar obj = qp.qps.findBy('prop', 'page_size');\n\t\t\t\tif (obj) {\n\t\t\t\t\tvar defaultValue = parseInt(obj.defaultValue || 30, 10);\n\t\t\t\t\tif (defaultValue !== pageSize) {\n\t\t\t\t\t\tobj.defaultValue = pageSize;\n\t\t\t\t\t\tobj.serializedDefaultValue = pageSize;\n\t\t\t\t\t\tobj.undecoratedDefaultValue = pageSize;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmodel: function model(params) {\n\t\t\tvar query = {\n\t\t\t\tdepth: 1,\n\t\t\t\t_asc: ['title'],\n\t\t\t\tpage_size: params.page_size || 30,\n\t\t\t\tpage: params.page || 1\n\t\t\t};\n\n\t\t\tif (params.group === 'archived') {\n\t\t\t\tquery.archived_on = '!_-NULL-_';\n\t\t\t\tquery.deleted_on = '_-DISABLE-_';\n\t\t\t} else if (params.group === 'ungrouped') {\n\t\t\t\tquery.project_group_id = null;\n\t\t\t\tquery.archived_on = null;\n\t\t\t} else {\n\t\t\t\tif (!Ember.isEmpty(params.group)) {\n\t\t\t\t\tquery.project_group_id = params.group;\n\t\t\t\t}\n\t\t\t\tquery.archived_on = null;\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(params.search)) {\n\t\t\t\tquery._search = params.search;\n\t\t\t}\n\n\t\t\tvar controller = this.controllerFor('project/index');\n\t\t\tcontroller.set('isLoading', true);\n\t\t\treturn this.store.query('project', query).then(function (models) {\n\t\t\t\tcontroller.set('isLoading', false);\n\t\t\t\tcontroller.getGroups();\n\n\t\t\t\treturn models;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/mixins/check-permission'], function (exports, _authenticatedRouteMixin, _checkPermission) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, _checkPermission.default, {\n    permissionStatement: 'viewProjectExpenses || viewAllActivityReport'\n  });\n});","define('busy-app/routes/report/activity', ['exports', '@busy-web/utils', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/utils/organization/overtime-period'], function (exports, _utils, _authenticatedRouteMixin, _overtimePeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service('auth'),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tqueryParams: {\n\t\t\ttype: { replace: true },\n\t\t\tstart: { replace: true },\n\t\t\tend: { replace: true },\n\t\t\tcustom: { replace: true },\n\t\t\tselected: { replace: true },\n\t\t\tcolumn: { replace: true }\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar controller = this.controllerFor('report/activity');\n\t\t\tcontroller.set('cController', this.controllerFor('report/activity/index'));\n\n\t\t\tif (!params.start) {\n\t\t\t\tif (params.selected === 'monthly') {\n\t\t\t\t\tparams.start = _utils.Time.date().startOf('month').unix();\n\t\t\t\t\tparams.end = _utils.Time.date(params.start).endOf('month').unix();\n\t\t\t\t} else {\n\t\t\t\t\t// setup weekly range.\n\t\t\t\t\t//\n\t\t\t\t\t// This must be done according to ovettime period\n\t\t\t\t\t// therefore only the start is set so that the end can be set by the period\n\t\t\t\t\t// after the actual start is set.\n\t\t\t\t\tparams.start = _utils.Time.date().startOf('day').unix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tovertimePeriods: this.get('auth.organizationOvertimePeriod'),\n\t\t\t\tpayPeriods: this.get('auth.organizationPayPeriod')\n\t\t\t}).then(function (data) {\n\t\t\t\tvar overtimePeriod = (0, _overtimePeriod.getOvertimePeriodByDate)(data.overtimePeriods, params.start);\n\t\t\t\tparams.weekStart = (0, _overtimePeriod.weekStartForPeriod)(overtimePeriod);\n\n\t\t\t\tif (!params.end) {\n\t\t\t\t\tif (params.selected === 'weekly') {\n\t\t\t\t\t\tvar _createOvertimeBoundW = (0, _overtimePeriod.createOvertimeBoundWeekForPeriod)(overtimePeriod, params.start),\n\t\t\t\t\t\t    start = _createOvertimeBoundW.start,\n\t\t\t\t\t\t    end = _createOvertimeBoundW.end;\n\n\t\t\t\t\t\t// set overtime period week\n\n\n\t\t\t\t\t\tparams.start = start;\n\t\t\t\t\t\tparams.end = end;\n\t\t\t\t\t} else if (params.selected === 'monthly') {\n\t\t\t\t\t\tparams.end = _utils.Time.date(params.start).endOf('month').unix();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparams.end = _utils.Time.date(params.start).endOf('day').unix();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparams.currentPeriod = _this.get('payPeriod').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\treturn params;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/activity/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/utils/logger'], function (exports, _authenticatedRouteMixin, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service(),\n\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\tvar params = this.modelFor('report.activity');\n\t\t\tvar type = params.type || 'member-project';\n\n\t\t\tvar modelSecondsType = type + '-seconds';\n\t\t\tvar modelCostType = type + '-cost';\n\t\t\tvar dataType = this.showType(type);\n\n\t\t\tvar controller = this.controllerFor('report/activity/index');\n\t\t\tcontroller.set('pController', this.controllerFor('report/activity'));\n\n\t\t\t// NOTE: the limit has been changed to 1000 as a temp fix until the api\n\t\t\t// gets their paging working.\n\t\t\tvar query = {\n\t\t\t\tstart_date: params.start,\n\t\t\t\tend_date: params.end,\n\t\t\t\tlimit: 10000 //this will limit to 100 records per call, but will still find all records\n\t\t\t};\n\n\t\t\tif (dataType === 'day') {\n\t\t\t\tquery = {\n\t\t\t\t\t_gte: { start_date: params.start },\n\t\t\t\t\t_lte: { start_date: params.end },\n\t\t\t\t\tdeleted_on: \"_-DISABLE-_\"\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tseconds: this.store.findAll(modelSecondsType, query),\n\t\t\t\tcost: this.store.findAll(modelCostType, query),\n\t\t\t\tgroupMembers: this.loadGroupMembers()\n\t\t\t}).then(function (data) {\n\t\t\t\tif (Ember.get(_this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\tvar memberGroupIds = new Set(Ember.get(data, 'groupMembers').mapBy('id'));\n\n\t\t\t\t\tdata.seconds = data.seconds.filter(function (item) {\n\t\t\t\t\t\treturn memberGroupIds.has(Ember.get(item, 'memberId'));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvar filter = [];\n\t\t\t\tdata.seconds.forEach(function (item) {\n\t\t\t\t\tif (!Ember.isNone(item.get('totalTotalSeconds')) && item.get('totalTotalSeconds') === 0 || Ember.isNone(item.get('totalTotalSeconds')) && item.get('totalSeconds') === 0) {\n\t\t\t\t\t\t// filter out models with no seconds or cost\n\t\t\t\t\t\tfilter.push(item);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar cost = data.cost.findBy('uid', item.get('uid'));\n\t\t\t\t\t\tif (!Ember.isNone(cost)) {\n\t\t\t\t\t\t\titem.set('cost', cost);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_logger.default.warn(_this, 'no match found', item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// filter out 0 time results\n\t\t\t\tdata.seconds.removeObjects(filter);\n\n\t\t\t\tvar showType = dataType === 'day' ? 'startDate' : dataType;\n\t\t\t\t/*if (dataType !== 'day') {*/\n\t\t\t\treturn _this.store.fetchContainer(data.seconds, showType).then(function (container) {\n\t\t\t\t\tcontainer.set('showType', showType);\n\t\t\t\t\tcontainer.set('settings', params);\n\t\t\t\t\tif (container.get(showType + '.length') > 0) {\n\t\t\t\t\t\tcontainer.set('hasData', true);\n\t\t\t\t\t}\n\t\t\t\t\treturn container;\n\t\t\t\t});\n\t\t\t\t/*} else {\n    \tconst dataArray = [];\n    \tdata.seconds.forEach(item => {\n    \t\tlet dataObj = dataArray.findBy('startDateFormatted', item.get('startDateFormatted'));\n    \t\tif (!dataObj) {\n    \t\t\tdataObj = EmberObject.create({\n    \t\t\t\tstartDateFormatted: item.get('startDateFormatted'),\n    \t\t\t\tregularCost: item.get('cost.regularCost'),\n    \t\t\t\tregularSeconds: item.get('regularSeconds'),\n    \t\t\t\tovertimeCost: item.get('cost.overtimeCost'),\n    \t\t\t\tovertimeSeconds: item.get('overtimeSeconds'),\n    \t\t\t\tdoubletimeCost: item.get('cost.doubletimeCost'),\n    \t\t\t\tdoubletimeSeconds: item.get('doubletimeSeconds'),\n    \t\t\t\ttotalCost: item.get('cost.totalCost'),\n    \t\t\t\ttotalSeconds: item.get('totalSeconds'),\n    \t\t\t\tstartDate: item.get('startDate'),\n    \t\t\t\tendDate: item.get('endDate'),\n    \t\t\t});\n    \t\t\tdataArray.push(dataObj);\n    \t\t} else {\n    \t\t\tdataObj.regularSeconds += item.get('regularSeconds');\n    \t\t\tdataObj.regularCost += item.get('cost.regularCost');\n    \t\t\tdataObj.overtimeSeconds += item.get('overtimeSeconds');\n    \t\t\tdataObj.overtimeCost += item.get('cost.overtimeCost');\n    \t\t\tdataObj.doubletimeSeconds += item.get('doubletimeSeconds');\n    \t\t\tdataObj.doubletimeCost += item.get('cost.doubletimeCost');\n    \t\t\tdataObj.totalSeconds += item.get('totalSeconds');\n    \t\t\tdataObj.totalCost += item.get('cost.totalCost');\n    \t\t}\n    \t});\n    \treturn EmberObject.create({\n    \t\trawDay: data.seconds,\n    \t\tstartDate: dataArray.sortBy('startDate'),\n    \t\thasData: data.seconds.content.length > 0,\n    \t\tshowType: 'startDate',\n    \t});\n    }*/\n\t\t\t});\n\t\t},\n\t\tloadGroupMembers: function loadGroupMembers() {\n\t\t\tif (!Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t    id = _EmberGetProperties.id,\n\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\tvar query = {\n\t\t\t\tmember_group_id: memberGroupId\n\t\t\t};\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t},\n\t\tshowType: function showType(type) {\n\t\t\tvar _type = type.replace('cost-code', 'costCode');\n\t\t\t_type = _type.split('-');\n\t\t\t_type = _type[_type.length - 1];\n\t\t\treturn _type;\n\t\t}\n\t});\n});","define('busy-app/routes/report/activity/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/report/employee-list', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service(),\n\n\t\tmodel: function model() {\n\t\t\tvar query = {\n\t\t\t\tarchived_on: '_-NULL-_',\n\t\t\t\t_asc: ['first_name', 'last_name']\n\t\t\t};\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t}\n\t});\n});","define('busy-app/routes/report/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Routes\n  *\n  */\n\tvar aggregateSeconds = Ember.Object.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\tseconds: null,\n\t\tdateTime: Ember.computed('start', 'end', function () {\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\treturn _utils.Time.date(this.get('start')).format('MMM. DD') + ' - ' + _utils.Time.date(this.get('end')).format('MMM. DD');\n\t\t\t}\n\t\t\treturn '';\n\t\t}),\n\t\ttotal: Ember.computed('seconds.@each.totalSeconds', function () {\n\t\t\tvar time = 0;\n\t\t\tif (!Ember.isEmpty(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\treturn time += item.get('totalSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn time / 60 / 60;\n\t\t})\n\t});\n\n\t/**\n  * `Route/Report/Index`\n  *\n  * @class Index\n  * @namespace Routes.Report\n  * @extends Route\n  */\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\tEmber.run.next(this, function () {\n\t\t\t\t_this.setModel();\n\t\t\t});\n\n\t\t\treturn [];\n\t\t},\n\t\tsetModel: function setModel() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar startTime = _utils.Time.date().subtract(121, 'days').unix();\n\t\t\tvar endTime = _utils.Time.date().unix();\n\t\t\tvar params = {\n\t\t\t\t_gte: {\n\t\t\t\t\tstart_time: startTime\n\t\t\t\t},\n\t\t\t\t_lte: {\n\t\t\t\t\tstart_time: endTime\n\t\t\t\t},\n\t\t\t\t_asc: ['start_time'],\n\t\t\t\tpage_size: 999999999\n\t\t\t};\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tpayPeriodMemberSeconds: this.store.findAll('pay-period-member-seconds', params)\n\t\t\t}).then(function (data) {\n\t\t\t\t_this2.totalPayPeriodSeconds(data);\n\t\t\t\tEmber.set(_this2, 'controller.model', data.secondsByPayPeriod);\n\t\t\t\treturn data.secondsByPayPeriod;\n\t\t\t});\n\t\t},\n\t\ttotalPayPeriodSeconds: function totalPayPeriodSeconds(data) {\n\t\t\t_utils.Assert.test('payPeriodMemberSeconds was not found in data', !Ember.isNone(data.payPeriodMemberSeconds));\n\n\t\t\tvar dates = [];\n\t\t\tdata.payPeriodMemberSeconds.forEach(function (item) {\n\t\t\t\tif (dates.indexOf(item.get('startTime')) === -1) {\n\t\t\t\t\tdates.push(item.get('startTime'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar periodSeconds = [];\n\t\t\tdates.forEach(function (start) {\n\t\t\t\tvar seconds = data.payPeriodMemberSeconds.filterBy('startTime', start);\n\t\t\t\tvar end = void 0;\n\t\t\t\tif (seconds.get('length') > 0) {\n\t\t\t\t\tend = seconds.objectAt(0).get('endTime');\n\t\t\t\t}\n\t\t\t\tperiodSeconds.pushObject(aggregateSeconds.create({ seconds: seconds, start: start, end: end }));\n\t\t\t});\n\n\t\t\tdata.secondsByPayPeriod = periodSeconds;\n\t\t}\n\t});\n});","define('busy-app/routes/report/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/report/payroll', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n    actions: {\n      refreshModel: function refreshModel() {\n        this.refresh();\n      }\n    }\n  });\n});","define('busy-app/routes/report/payroll/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tmodel: function model(params) {\n\t\t\tvar type = params.type,\n\t\t\t    start = params.start;\n\n\n\t\t\tvar managerType = this.getManagerType(type);\n\t\t\tvar pController = this.controllerFor('report/payroll');\n\t\t\tvar controller = this.controllerFor('report/payroll/index');\n\n\t\t\tEmber.setProperties(pController, { type: type, start: start });\n\n\t\t\tvar routeStart = pController.get('start') || _utils.Time.date().unix();\n\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(routeStart);\n\n\t\t\tstart = payPeriod.get('start');\n\t\t\tvar end = payPeriod.get('end');\n\n\t\t\tEmber.setProperties(controller, { start: start, end: end });\n\n\t\t\treturn this.store.getter().collection(managerType).fetch(payPeriod.get('startDate').unix(), payPeriod.get('endDate').unix());\n\t\t},\n\t\tgetManagerType: function getManagerType(type) {\n\t\t\tvar managerType = 'payroll-' + type;\n\n\t\t\tif (Ember.get(this, 'features.wageCustomDate')) {\n\t\t\t\tmanagerType = 'custom-wage-date/' + managerType;\n\t\t\t}\n\n\t\t\treturn managerType;\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/payroll/loading', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/report/report-setup', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model() {\n\t\t\treturn this.store.query('member', { _asc: ['first_name'], page_size: 1000 });\n\t\t}\n\t});\n});","define('busy-app/routes/report/safety-signature', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tmodel: function model() {\n\t\t\tvar controller = this.controllerFor('report/safety-signature');\n\t\t\tvar cController = this.controllerFor('report/safety-signature/date');\n\t\t\tcontroller.set('cController', cController);\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/safety-signature/date', ['exports', '@busy-web/utils', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _utils, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _slicedToArray = function () {\n    function sliceIterator(arr, i) {\n      var _arr = [];\n      var _n = true;\n      var _d = false;\n      var _e = undefined;\n\n      try {\n        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n          _arr.push(_s.value);\n\n          if (i && _arr.length === i) break;\n        }\n      } catch (err) {\n        _d = true;\n        _e = err;\n      } finally {\n        try {\n          if (!_n && _i[\"return\"]) _i[\"return\"]();\n        } finally {\n          if (_d) throw _e;\n        }\n      }\n\n      return _arr;\n    }\n\n    return function (arr, i) {\n      if (Array.isArray(arr)) {\n        return arr;\n      } else if (Symbol.iterator in Object(arr)) {\n        return sliceIterator(arr, i);\n      } else {\n        throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n      }\n    };\n  }();\n\n  function _asyncToGenerator(fn) {\n    return function () {\n      var gen = fn.apply(this, arguments);\n      return new Promise(function (resolve, reject) {\n        function step(key, arg) {\n          try {\n            var info = gen[key](arg);\n            var value = info.value;\n          } catch (error) {\n            reject(error);\n            return;\n          }\n\n          if (info.done) {\n            resolve(value);\n          } else {\n            return Promise.resolve(value).then(function (value) {\n              step(\"next\", value);\n            }, function (err) {\n              step(\"throw\", err);\n            });\n          }\n        }\n\n        return step(\"next\");\n      });\n    };\n  }\n\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n    auth: Ember.inject.service('auth'),\n    access: Ember.inject.service('access'),\n\n    queryParams: {\n      date: {\n        refreshModel: true\n      }\n    },\n\n    model: function model(params) {\n      var date = parseInt(params.date, 10);\n\n      return this.loadModelData(date);\n    },\n    loadModelData: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(date) {\n        var _this = this;\n\n        var startTime, endTime, queryTimeEntry, querySafetySignature, useGroupPermissionScoping, timeEntries, signatures, members, groupMembers, member_group_id, groupMemberIds, _ref2, _ref3, _ref4, _ref5, timeEntryMemberIds, memberList;\n\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                startTime = _utils.Time.date(date).startOf('day').unix();\n                endTime = _utils.Time.date(date).endOf('day').unix();\n                queryTimeEntry = { _gte: { end_time: startTime }, _lte: { start_time: endTime } };\n                querySafetySignature = { _gte: { end_time: startTime }, _lte: { start_time: endTime } };\n                useGroupPermissionScoping = Ember.get(this, 'auth.useGroupPermissionScoping');\n                timeEntries = null;\n                signatures = null;\n                members = null;\n                groupMembers = null;\n\n                if (!useGroupPermissionScoping) {\n                  _context.next = 23;\n                  break;\n                }\n\n                member_group_id = Ember.get(this, 'auth.member.memberGroupId');\n                _context.next = 13;\n                return this.store.findAll('member', { member_group_id: member_group_id });\n\n              case 13:\n                groupMembers = _context.sent;\n                groupMemberIds = groupMembers.mapBy('id');\n                _context.next = 17;\n                return Ember.RSVP.all([this.store.findWhereIn('time-entry', 'member_id', groupMemberIds, queryTimeEntry), this.store.findWhereIn('safety-signature', 'member_id', groupMemberIds, querySafetySignature)]);\n\n              case 17:\n                _ref2 = _context.sent;\n                _ref3 = _slicedToArray(_ref2, 2);\n                timeEntries = _ref3[0];\n                signatures = _ref3[1];\n                _context.next = 29;\n                break;\n\n              case 23:\n                _context.next = 25;\n                return Ember.RSVP.all([this.store.findAll('time-entry', queryTimeEntry), this.store.findAll('safety-signature', querySafetySignature)]);\n\n              case 25:\n                _ref4 = _context.sent;\n                _ref5 = _slicedToArray(_ref4, 2);\n                timeEntries = _ref5[0];\n                signatures = _ref5[1];\n\n              case 29:\n                timeEntryMemberIds = timeEntries.mapBy('memberId').uniq();\n                memberList = [];\n\n                if (!useGroupPermissionScoping) {\n                  _context.next = 35;\n                  break;\n                }\n\n                members = groupMembers.filter(function (m) {\n                  return timeEntryMemberIds.includes(m.id);\n                });\n                _context.next = 38;\n                break;\n\n              case 35:\n                _context.next = 37;\n                return this.store.findByIds('member', timeEntryMemberIds);\n\n              case 37:\n                members = _context.sent;\n\n              case 38:\n                members.forEach(function (member) {\n                  if (_this.get('access').canTakeActionFor('manageTimeEntries', member)) {\n                    memberList.pushObject(member);\n                  }\n                });\n\n                return _context.abrupt('return', this.groupedModels(date, memberList, timeEntries, signatures));\n\n              case 40:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function loadModelData(_x) {\n        return _ref.apply(this, arguments);\n      }\n\n      return loadModelData;\n    }(),\n    groupedModels: function groupedModels(date, membersArray, timeEntriesArray, signaturesArray) {\n      var organization = Ember.get(this, 'auth.organization');\n      var memberObjects = membersArray.map(function (member) {\n        var signatures = signaturesArray.filterBy('memberId', member.id).sortBy('createdOn');\n        var timeEntries = timeEntriesArray.filterBy('memberId', member.id);\n\n        if (Ember.get(signatures, 'length') === 1) {\n          Ember.set(signatures, 'firstObject.showDetails', true);\n        }\n\n        return SafteySignoffByMember.create({ date: date, organization: organization, member: member, signatures: signatures, timeEntries: timeEntries });\n      });\n\n      return memberObjects.sortBy('name');\n    }\n  });\n\n\n  var SafteySignoffByMember = Ember.Object.extend({\n    /**\n     * required prop\n     * these props must be passed to create\n     */\n\n    date: null,\n    organization: null,\n    member: null,\n    signatures: null,\n    timeEntries: null,\n\n    /** alias props **/\n\n    memberId: Ember.computed.alias('member.id'),\n    name: Ember.computed.alias('member.fullName'),\n    memberNumber: Ember.computed.alias('member.memberNumber'),\n    imageThumbUrl: Ember.computed.alias('member.imageThumbUrl'),\n    imagePlaceholder: Ember.computed.alias('member.imagePlaceholder'),\n\n    /** computed props **/\n\n    latestEntryTime: Ember.computed('timeEntries.endTime', function () {\n      return this.get('timeEntries').sortBy('endTime').get('lastObject');\n    }),\n\n    latestSignatureTime: Ember.computed('signatures.endTime', function () {\n      //console.log('signatures', this.get('name'), this.get('signatures.length'));\n      return this.get('signatures').sortBy('endTime').get('lastObject');\n    }),\n\n    createdToday: Ember.computed('date', 'signatures.createdOnDate', function () {\n      var date = this.get('date');\n      return !Ember.isNone(this.get('signatures').findBy(function (item) {\n        return date === item.get('createdOnDate');\n      }));\n    }),\n\n    isValidSignature: Ember.computed('date', 'latestEntryTime.endTime', 'latestSignatureTime.endTime', function () {\n      // get the current end of day date\n      var date = _utils.Time.date(this.get('date')).endOf('day').unix();\n\n      // signature is valid if the latestSignatureTime is equal to the end of today or\n      // if it is greater than or equal to the latest time entry\n      return this.get('latestSignatureTime.endTime') === date || this.get('latestSignatureTime.endTime') >= this.get('latestEntryTime.endTime');\n    }),\n\n    /**\n     * Based on the rule that if a member reports they were injured today then\n     * always show injured status even if the member reports not injured after\n     * the first injured status. Therefore if another time-entry is created the ends after\n     * the last injury report, then the status should still be injured.\n     *\n     * @property hasSafetySignoffToday\n     * @type {boolean}\n     */\n    hasSafetySignoffToday: Ember.computed('date', 'latestSignatureTime.endTime', function () {\n      // get the current end of day date\n      var startOfDay = this.get('date');\n      var endOfDay = _utils.Time.date(startOfDay).endOf('day').unix();\n\n      // get signature end time\n      var signatureEnd = this.get('latestSignatureTime.endTime');\n\n      // verify that the latestSignatureTime was created today for this.date\n      return signatureEnd >= startOfDay && signatureEnd <= endOfDay;\n    }),\n\n    /**\n     * injury status is based off any safety signoff entry today that states the member was injured\n     * or if any states the member was not injured\n     */\n    injuredStatus: Ember.computed('organization.safetySignature', 'isValidSignature', 'hasSafetySignoffToday', 'signatures.@each.injured', function () {\n      if (this.get('organization.safetySignature')) {\n        var hasInjured = this.get('signatures').isAny('injured', true); // reported injured at least once\n        var hasNotInjured = this.get('signatures').isAny('injured', false); // reported not injured at least once\n\n        if (this.get('isValidSignature') && hasInjured) {\n          // is valid signature and reported injured\n          return 30; // member reports injured\n        } else if (this.get('hasSafetySignoffToday') && hasInjured) {\n          // has a saftey signoff submission and has reported injured\n          return 30; // member reported injured today\n        } else if (this.get('isValidSignature') && hasNotInjured) {\n          // is valid signature and has reported not injured\n          return 20; // member reports not injured\n        } else if (this.get('isValidSignature')) {\n          // only report status 10 when isValidSignature is true\n          return 10; // no injury data reported\n        }\n      }\n      return 0; // injury data not submitted\n    }),\n\n    breakPolicyFollowedStatus: Ember.computed('organization.breakPolicy', 'isValidSignature', 'latestSignatureTime.breakPolicyFollowed', function () {\n      if (this.get('organization.breakPolicy') && this.get('isValidSignature')) {\n        var breakPolicyFollowed = this.get('latestSignatureTime.breakPolicyFollowed');\n\n        // breakPolicyFollowed is null or undefined or it is not of type boolean\n        if (Ember.isNone(breakPolicyFollowed) || typeof breakPolicyFollowed !== 'boolean') {\n          return 10;\n        }\n        // breakPolicyFollowed is a boolean with a true or false value\n        if (breakPolicyFollowed) {\n          return 30; //breaks were followed\n        } else {\n          return 20; //breaks were not followed\n        }\n      }\n      return 0; // break policy data not submitted\n    }),\n\n    /**\n     * time accuracy is based off the latest entry submitted always\n     * even if the latest entry no longer has time accuracy data.\n     */\n    timeAccurateStatus: Ember.computed('organization.timeAccuracy', 'isValidSignature', 'latestSignatureTime.timeAccurate', function () {\n      // time accuracy setting is on and the safety signoff signature\n      // fits the required rules for isValidSignature\n      if (this.get('organization.timeAccuracy') && this.get('isValidSignature')) {\n        // the latestSignatureTime is the only report that is accounted for in timeAccuracy\n        var timeAccurate = this.get('latestSignatureTime.timeAccurate');\n\n        // timeAccurate is null or undefined or it is not of type boolean\n        if (Ember.isNone(timeAccurate) || typeof timeAccurate !== 'boolean') {\n          return 10;\n        }\n\n        // timeAccurate is a boolean value that is true or false\n        if (timeAccurate) {\n          return 30; // time is accurate\n        } else {\n          return 20; // time is not accurate\n        }\n      }\n      return 0; // time accuracy data not submitted\n    }),\n\n    /**\n     * only report is injured when injuredStatus is 30\n     */\n    isInjured: Ember.computed('injuredStatus', function () {\n      return this.get('injuredStatus') === 30;\n    }),\n\n    /**\n     * injured status translated to readable text\n     */\n    injured: Ember.computed('injuredStatus', function () {\n      if (this.get('injuredStatus') === 30) {\n        return (0, _utils.loc)('Yes');\n      } else if (this.get('injuredStatus') === 20) {\n        return (0, _utils.loc)('No');\n      } else if (this.get('injuredStatus') === 10) {\n        return (0, _utils.loc)('N/A');\n      }\n      return (0, _utils.loc)('-');\n    }),\n\n    /**\n     * break policy status translated to readable text\n     */\n    breakPolicyFollowed: Ember.computed('breakPolicyFollowedStatus', function () {\n      if (this.get('breakPolicyFollowedStatus') === 30) {\n        return (0, _utils.loc)('No');\n      } else if (this.get('breakPolicyFollowedStatus') === 20) {\n        return (0, _utils.loc)('Yes');\n      } else if (this.get('breakPolicyFollowedStatus') === 10) {\n        return (0, _utils.loc)('N/A');\n      }\n      return (0, _utils.loc)('-');\n    }),\n\n    /**\n     * time accuracy status translated to readable text\n     */\n    incorrectTime: Ember.computed('timeAccurateStatus', function () {\n      if (this.get('timeAccurateStatus') === 30) {\n        return (0, _utils.loc)('No');\n      } else if (this.get('timeAccurateStatus') === 20) {\n        return (0, _utils.loc)('Yes');\n      } else if (this.get('timeAccurateStatus') === 10) {\n        return (0, _utils.loc)('N/A');\n      }\n      return (0, _utils.loc)('-');\n    })\n  });\n});","define('busy-app/routes/report/safety-signature/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tmodel: function model() {\n\t\t\tvar pController = this.controllerFor('report/safety-signature');\n\t\t\tvar controller = this.controllerFor('report/safety-signature/index');\n\n\t\t\tvar start = pController.get('start') || _utils.Time.date().unix();\n\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(start);\n\t\t\tcontroller.set('start', payPeriod.get('start'));\n\t\t\tcontroller.set('end', payPeriod.get('end'));\n\n\t\t\treturn this.loadModelData(start, payPeriod);\n\t\t},\n\t\tloadModelData: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(start, payPeriod) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar queryTimeEntry, querySafetySignature, timeEntries, signatures, authMember, _EmberGetProperties, id, memberGroupId, membersQuery, members, memberList, memberIds, _ref2, _ref3, _ref4, _ref5;\n\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tqueryTimeEntry = { _gte: { end_time: start }, _lte: { start_time: payPeriod.get('end') } };\n\t\t\t\t\t\t\t\tquerySafetySignature = { _gte: { end_time: start }, _lte: { start_time: payPeriod.get('end') } };\n\t\t\t\t\t\t\t\ttimeEntries = null;\n\t\t\t\t\t\t\t\tsignatures = null;\n\n\t\t\t\t\t\t\t\tif (!Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\t\t\t\t_context.next = 23;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tauthMember = Ember.get(this, 'auth.member');\n\t\t\t\t\t\t\t\t_EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']), id = _EmberGetProperties.id, memberGroupId = _EmberGetProperties.memberGroupId;\n\t\t\t\t\t\t\t\tmembersQuery = { member_group_id: memberGroupId };\n\n\n\t\t\t\t\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\t\t\t\t\tEmber.setProperties(membersQuery, { id: id });\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\t\treturn this.store.findAll('member', membersQuery);\n\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\t\tmembers = _context.sent;\n\t\t\t\t\t\t\t\tmemberList = [];\n\n\t\t\t\t\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\t\t\t\t\tif (_this.get('access').canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\t\t\t\t\t\tmemberList.pushObject(member);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tmemberIds = memberList.mapBy('id');\n\t\t\t\t\t\t\t\t_context.next = 17;\n\t\t\t\t\t\t\t\treturn Ember.RSVP.all([this.store.findWhereIn('time-entry', 'member_id', memberIds, queryTimeEntry), this.store.findWhereIn('safety-signature', 'member_id', memberIds, querySafetySignature)]);\n\n\t\t\t\t\t\t\tcase 17:\n\t\t\t\t\t\t\t\t_ref2 = _context.sent;\n\t\t\t\t\t\t\t\t_ref3 = _slicedToArray(_ref2, 2);\n\t\t\t\t\t\t\t\ttimeEntries = _ref3[0];\n\t\t\t\t\t\t\t\tsignatures = _ref3[1];\n\t\t\t\t\t\t\t\t_context.next = 29;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 23:\n\t\t\t\t\t\t\t\t_context.next = 25;\n\t\t\t\t\t\t\t\treturn Ember.RSVP.all([this.store.findAll('time-entry', queryTimeEntry), this.store.findAll('safety-signature', querySafetySignature)]);\n\n\t\t\t\t\t\t\tcase 25:\n\t\t\t\t\t\t\t\t_ref4 = _context.sent;\n\t\t\t\t\t\t\t\t_ref5 = _slicedToArray(_ref4, 2);\n\t\t\t\t\t\t\t\ttimeEntries = _ref5[0];\n\t\t\t\t\t\t\t\tsignatures = _ref5[1];\n\n\t\t\t\t\t\t\tcase 29:\n\t\t\t\t\t\t\t\treturn _context.abrupt('return', {\n\t\t\t\t\t\t\t\t\ttimeEntries: timeEntries,\n\t\t\t\t\t\t\t\t\tsignatures: signatures,\n\t\t\t\t\t\t\t\t\tpayPeriod: payPeriod\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcase 30:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction loadModelData(_x, _x2) {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn loadModelData;\n\t\t}(),\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-card-approval', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils/assert', '@busy-web/utils/time'], function (exports, _authenticatedRouteMixin, _assert, _time) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tstore: Ember.inject.service('store'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tpayPeriodMemberSeconds: null,\n\t\tmembers: null,\n\t\tmemberLocks: null,\n\t\tmemberTimeDocuments: null,\n\n\t\tmemberIds: Ember.computed.mapBy('members', 'id'),\n\n\t\tstart: Ember.computed.alias('controller.start'),\n\n\t\tpayPeriod: Ember.computed('start', function () {\n\t\t\treturn this.get('payPeriods').getPayPeriod(this.get('start'));\n\t\t}),\n\n\t\tstartTime: Ember.computed('payPeriod', function () {\n\t\t\treturn this.get('payPeriod').get('startDate');\n\t\t}),\n\n\t\tendTime: Ember.computed('payPeriod', function () {\n\t\t\treturn this.get('payPeriod').get('endDate');\n\t\t}),\n\n\t\t/**\n   * @private\n   * @method model\n   * @return {Model}\n   */\n\t\tmodel: function model() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this.get('controller')) {\n\t\t\t\tvar controller = this.controllerFor('report/time-card-approval');\n\t\t\t\tthis.set('controller', controller);\n\t\t\t}\n\n\t\t\tif (!this.get('controller.isSelectedPayPeriodSignable')) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\t// Seperates the API calls into the minimum needed to render the page and the additional data that can be deferred\n\t\t\treturn this.getPrimaryData().then(function (model) {\n\t\t\t\tEmber.run.next(function () {\n\t\t\t\t\treturn _this.getSecondaryData();\n\t\t\t\t});\n\n\t\t\t\treturn model;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Get the minimum \"blocking\" data needed to render the page\n   *\n   * Gets all `members` and `payPayPeriodMemberSeconds` in range for the current organization\n   * The `member` result is returned to be the model.\n   *\n   * @private\n   * @async\n   * @method getPrimaryData\n   * @return {Model.Member[]}\n   */\n\t\tgetPrimaryData: function getPrimaryData() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.getMembers().then(function (members) {\n\t\t\t\treturn _this2.setPayPeriodMemberSeconds(members).then(function () {\n\t\t\t\t\treturn members.map(function (member) {\n\t\t\t\t\t\treturn _this2.initMember(member);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Get the rest of the data needed to flesh out the report.\n   * Uses run.later() to let the page render before queueing up more data requests.\n   * Data isn't returned from this function, it it attached directly to each member on the model\n   *\n   * Independently look up the related `memberLock` and `memberTimeDocument` records\n   *\n   * @private\n   * @method getSecondaryData\n   */\n\t\tgetSecondaryData: function getSecondaryData() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.set('controller.isLoadingMemberLocks', true);\n\t\t\tthis.set('controller.isLoadingMemberTimeDocuments', true);\n\n\t\t\tEmber.run.later(function () {\n\t\t\t\tEmber.RSVP.all([_this3.getMemberLocks(), _this3.getMemberDocuments()]);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Pay Period\n   *\n   */\n\n\t\t/**\n   * Get all `pay-period-member-seconds` for the selected date range.\n   * Sets `payPeriodMemberSeconds` and calls `setPayPeriodsByMember()`\n   *\n   * @private\n   * @async\n   * @method getPrimaryData\n   * @return {Model.PayPeriodMemberSeconds[]}\n   */\n\t\tsetPayPeriodMemberSeconds: function setPayPeriodMemberSeconds(members) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar queryParams = {\n\t\t\t\tstart_time: this.get('startTime').unix(),\n\t\t\t\tend_time: this.get('endTime').unix()\n\t\t\t};\n\n\t\t\tvar memberIds = members.mapBy('id');\n\n\t\t\tthis.set('controller.isLoadingPayPeriods', true);\n\t\t\treturn this.get('store').findWhereIn('pay-period-member-seconds', 'member_id', memberIds, queryParams).then(function (payPeriodMemberSeconds) {\n\t\t\t\t_this4.set('payPeriodMemberSeconds', payPeriodMemberSeconds);\n\t\t\t\t_this4.setPayPeriodsByMember(payPeriodMemberSeconds);\n\n\t\t\t\treturn payPeriodMemberSeconds;\n\t\t\t}).finally(function () {\n\t\t\t\t_this4.set('controller.isLoadingPayPeriods', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Convert `payPeriodMemberSeconds` results to an object keyed by the `memberId`\n   *\n   * @private\n   * @method setPayPeriodsByMember\n  \t * @param {Model.PayPeriodMemberSeconds[]} payPeriodMemberSeconds\n   * @return {object}\n   */\n\t\tsetPayPeriodsByMember: function setPayPeriodsByMember(payPeriodMemberSeconds) {\n\t\t\tvar payPeriodByMember = Ember.Object.create({});\n\n\t\t\tpayPeriodMemberSeconds.forEach(function (payPeriod) {\n\t\t\t\tvar memberId = payPeriod.get('memberId');\n\n\t\t\t\tpayPeriodByMember.set(memberId, payPeriod);\n\t\t\t});\n\n\t\t\tthis.set('payPeriodByMember', payPeriodByMember);\n\n\t\t\treturn payPeriodByMember;\n\t\t},\n\t\tgetCachedPayPeriodByMember: function getCachedPayPeriodByMember(memberId) {\n\t\t\tvar ppms = this.get('payPeriodByMember');\n\n\t\t\treturn ppms.hasOwnProperty(memberId) ? ppms[memberId] : null;\n\t\t},\n\n\n\t\t/**\n   * Members\n   *\n   */\n\n\t\t/**\n   * Get all `member` objects with pay period data in the selected date range.\n   * Set related `payPeriod` on each `member` object.\n   * Stub blank `memberLock` and `memberTimeDocument` objects\n   *\n   * @private\n   * @async\n   * @method getMembers\n   * @return {Model.Member[]}\n   */\n\t\tgetMembers: function getMembers() {\n\t\t\tvar _this5 = this;\n\n\t\t\t// const endTime = this.get('endTime').unix();\n\n\t\t\tvar queryParams = {\n\t\t\t\t// _lte: { created_on: endTime },\n\t\t\t\tarchived_on: '_-NULL-_',\n\t\t\t\tpage_size: 9999,\n\t\t\t\t_asc: ['first_name', 'last_name']\n\t\t\t};\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(queryParams, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(queryParams, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.set('controller.isLoadingMembers', true);\n\t\t\treturn this.get('store').query('member', queryParams).then(function (members) {\n\t\t\t\treturn _this5.filterMembersByAccess(members);\n\t\t\t}).then(function (members) {\n\t\t\t\t_this5.set('members', members);\n\n\t\t\t\treturn members;\n\t\t\t}).finally(function () {\n\t\t\t\t_this5.set('controller.isLoadingMembers', false);\n\t\t\t});\n\t\t},\n\t\tfilterMembersByAccess: function filterMembersByAccess(members) {\n\t\t\tvar _this6 = this;\n\n\t\t\treturn Ember.isNone(members) ? members : members.filter(function (member) {\n\t\t\t\treturn _this6.get('access').canTakeActionFor('manageTimeEntries', member);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Attach `payPeriod` to member and initialize the `memberLock` and `memberTimeDocument` objects\n   *\n   * @private\n   * @async\n   * @method getMembers\n   * @return {Model.Member[]}\n   */\n\t\tinitMember: function initMember(member) {\n\t\t\tvar memberId = member.get('id');\n\t\t\tvar payPeriod = this.getCachedPayPeriodByMember(memberId);\n\n\t\t\tif (Ember.isNone(payPeriod)) {\n\t\t\t\tpayPeriod = this.get('store').createRecord('pay-period-member-seconds', {\n\t\t\t\t\tmemberId: memberId,\n\t\t\t\t\tstartTime: _time.default.date(this.get('startTime') / 1000).unix(),\n\t\t\t\t\tendTime: _time.default.date(this.get('endTime') / 1000).unix(),\n\t\t\t\t\tregularSeconds: 0,\n\t\t\t\t\tovertimeSeconds: 0,\n\t\t\t\t\tdoubletimeSeconds: 0\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmember.set('payPeriod', payPeriod);\n\t\t\tmember.set('memberLock', null);\n\t\t\tmember.set('memberTimeDocument', null);\n\n\t\t\treturn member;\n\t\t},\n\n\n\t\t/**\n   * Member Lock\n   *\n   */\n\n\t\t/**\n   * Get `memberLock` records for all relevant members\n   *\n   * @private\n   * @async\n   * @method getMemberLocks\n   * @return {Model.MemberLock[]}\n   */\n\t\tgetMemberLocks: function getMemberLocks() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar memberIds = this.get('memberIds');\n\n\t\t\tthis.set('controller.isLoadingMemberLocks', true);\n\t\t\treturn this.get('store').findWhereIn('member-lock', 'memberId', memberIds, { deleted_on: '_-NULL-_' }).then(function (memberLocks) {\n\t\t\t\t_this7.attachMemberLockToMembers(memberLocks);\n\t\t\t\t_this7.set('memberLocks', memberLocks);\n\n\t\t\t\treturn memberLocks;\n\t\t\t}).finally(function () {\n\t\t\t\t_this7.set('controller.isLoadingMemberLocks', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Attach related `memberLock` results to each `member`\n   *\n   * @private\n   * @method attachMemberLockToMembers\n  \t * @param {Model.MemberLock[]} memberLocks\n   * @return {Model.MemberLock[]}\n   */\n\t\tattachMemberLockToMembers: function attachMemberLockToMembers(memberLocks) {\n\t\t\tif (!Ember.isNone(memberLocks)) {\n\t\t\t\tvar memberLocksByMember = this.getMemberLocksByMember(memberLocks);\n\n\t\t\t\tthis.get('members').forEach(function (member) {\n\t\t\t\t\tvar memberId = member.get('id');\n\n\t\t\t\t\tmember.set('memberLock', memberLocksByMember[memberId]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn memberLocks;\n\t\t},\n\n\n\t\t/**\n   * Convert `memberLock` resultset to an object keyed by the memberId\n   *\n   * @private\n   * @method memberLocksByMember\n  \t * @param {Model.MemberLock[]} memberLocks\n   * @return {object}\n   */\n\t\tgetMemberLocksByMember: function getMemberLocksByMember(memberLocks) {\n\t\t\tvar result = Ember.Object.create({});\n\n\t\t\tmemberLocks.forEach(function (memberLock) {\n\t\t\t\tvar memberId = memberLock.get('memberId');\n\n\t\t\t\tresult.set(memberId, memberLock);\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n   * Member Time Document\n   *\n   */\n\n\t\t/**\n   * Get all `memberTimeDocuments` records for all relevant members\n   *\n   * @private\n   * @async\n   * @method getMemberDocuments\n   * @return {Model.MmberTimeDocuments[]}\n   */\n\t\tgetMemberDocuments: function getMemberDocuments() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar memberIds = this.get('memberIds');\n\t\t\tvar start = this.get('controller.start');\n\t\t\tvar end = this.get('controller.end');\n\n\t\t\tvar queryParams = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end,\n\t\t\t\tcanceled: '_-NULL-_',\n\t\t\t\t_desc: ['created_on'],\n\t\t\t\tdeleted_on: '_-NULL-_',\n\t\t\t\tpage_size: 999999\n\t\t\t};\n\n\t\t\tthis.set('controller.isLoadingMemberTimeDocuments', true);\n\t\t\treturn this.get('store').findWhereIn('member-time-document', 'memberId', memberIds, queryParams).then(function (memberTimeDocuments) {\n\t\t\t\t_this8.set('memberTimeDocuments', memberTimeDocuments);\n\n\t\t\t\treturn _this8.attachDocumentsToMembers(memberTimeDocuments);\n\t\t\t}).finally(function () {\n\t\t\t\t_this8.set('controller.isLoadingMemberTimeDocuments', false);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Lookup the signature state for each member, passing along the `memberTimeDocuments` cache\n   *\n   * @private\n   * @async\n   * @method attachDocumentsToMembers\n  \t * @param {Model.MemberTimeDocument[]} memberTimeDocuments\n   * @return {Model.MemberTimeDocuments[]}\n   */\n\t\tattachDocumentsToMembers: function attachDocumentsToMembers(memberTimeDocuments) {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar mtdArray = memberTimeDocuments.toArray();\n\n\t\t\tEmber.run.later(function () {\n\t\t\t\treturn _this9.attachSignaturesToDocuments(memberTimeDocuments);\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(this.get('members').map(function (member) {\n\t\t\t\tif (!Ember.isNone(member.get('payPeriod'))) {\n\t\t\t\t\treturn _this9.getMemberSignatureState(member, mtdArray);\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve(member);\n\t\t\t\t}\n\t\t\t}));\n\t\t},\n\n\n\t\t/**\n   * SIDE EFFECT: memberTimeDocuments is modified\n   *\n   * @private\n   * @async\n   * @method attachSignaturesToDocuments\n  \t * @param {Model.MemberTimeDocument[]} memberTimeDocuments\n   */\n\t\tattachSignaturesToDocuments: function attachSignaturesToDocuments(memberTimeDocuments) {\n\t\t\treturn this.getSignatures(memberTimeDocuments).then(function (_ref) {\n\t\t\t\tvar selfSignatures = _ref.selfSignatures,\n\t\t\t\t    authoritativeSignatures = _ref.authoritativeSignatures;\n\n\t\t\t\tmemberTimeDocuments.forEach(function (mtd) {\n\t\t\t\t\tvar selfSigId = mtd.get('selfSignatureId');\n\t\t\t\t\tvar supSigId = mtd.get('authoritativeSignatureId');\n\n\t\t\t\t\tif (!Ember.isNone(selfSigId) && selfSignatures.has(selfSigId)) {\n\t\t\t\t\t\tmtd.set('selfSignature', selfSignatures.get(selfSigId));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(supSigId) && authoritativeSignatures.has(supSigId)) {\n\t\t\t\t\t\tmtd.set('authoritativeSignature', authoritativeSignatures.get(supSigId));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetSignatures: function getSignatures(memberTimeDocuments) {\n\t\t\tvar selfSignatureIds = memberTimeDocuments.filterBy('hasValidSelfSignature').mapBy('selfSignatureId').uniq();\n\t\t\tvar supSignatureIds = memberTimeDocuments.filterBy('hasValidAuthoritativeSignature').mapBy('authoritativeSignatureId').uniq();\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tselfSignatures: this.getSignaturesByType('self-signature', selfSignatureIds, true),\n\t\t\t\tauthoritativeSignatures: this.getSignaturesByType('authoritative-signature', supSignatureIds, this.get('signature.isSignatureModeSupervisor'))\n\t\t\t});\n\t\t},\n\n\n\t\t// promise returns a Map object, not an array\n\t\tgetSignaturesByType: function getSignaturesByType(signatureType, ids, isEnabled) {\n\t\t\tvar mapInit = new window.Map();\n\n\t\t\tif (!isEnabled) {\n\t\t\t\treturn Ember.RSVP.resolve(mapInit);\n\t\t\t}\n\n\t\t\treturn this.get('store').findWhereIn(signatureType, 'id', ids, { deleted_on: '_-NULL-_' }).then(function (signatures) {\n\t\t\t\tvar signaturesMap = signatures.reduce(function (result, signature) {\n\t\t\t\t\tresult.set(signature.get('id'), signature);\n\t\t\t\t\treturn result;\n\t\t\t\t}, mapInit);\n\n\t\t\t\treturn signaturesMap;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Uses cache of `memberTimeDocuments` to attach relevant `memberLock` result to the specified `member`\n   *\n   * @private\n   * @async\n   * @method getMemberSignatureState\n  \t * @param {Model.Member} member\n  \t * @param {array} memberTimeDocuments\n   * @return {Model.MemberTimeDocuments}\n   */\n\t\tgetMemberSignatureState: function getMemberSignatureState(member, memberTimeDocuments) {\n\t\t\t_assert.default.isObject(member);\n\t\t\t_assert.default.isArray(memberTimeDocuments);\n\n\t\t\tvar payPeriod = member.get('payPeriod');\n\n\t\t\treturn this.get('signature').getStateForPayPeriod(payPeriod, memberTimeDocuments).then(function (memberTimeDocument) {\n\t\t\t\tmember.set('memberTimeDocument', memberTimeDocument);\n\n\t\t\t\treturn memberTimeDocument;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-card', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tproject: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsort_order: {\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\treturn params;\n\t\t},\n\n\n\t\tactions: {\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-card/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\treplace: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params, transition) {\n\t\t\tvar start = params.start;\n\t\t\tvar end = params.end;\n\n\t\t\tvar pController = this.controllerFor('report/time-card');\n\t\t\tvar project = pController.get('project') || transition.queryParams.project;\n\t\t\tvar sort = transition.queryParams.sort_order || 'desc';\n\n\t\t\tif (start === 0) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\n\t\t\t\tstart = previousPeriod.get('start');\n\t\t\t\tend = previousPeriod.get('end');\n\t\t\t}\n\n\t\t\tpController.set('start', start);\n\t\t\tpController.set('end', end);\n\n\t\t\treturn this.store.manager('time-card-report', start, end, null, project, null, null, false, sort);\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-card/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/report/time-entries', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tproject: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsort_order: {\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\treturn params;\n\t\t},\n\n\n\t\tactions: {\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-entries/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\treplace: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\treplace: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params, transition) {\n\t\t\tvar start = params.start;\n\t\t\tvar end = params.end;\n\n\t\t\tvar pController = this.controllerFor('report/time-entries');\n\t\t\tvar project = transition.queryParams.project;\n\t\t\tvar sort = transition.queryParams.sort_order || 'desc';\n\n\t\t\tif (start === 0) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\n\t\t\t\tstart = previousPeriod.get('start');\n\t\t\t\tend = previousPeriod.get('end');\n\t\t\t}\n\n\t\t\tpController.set('start', start);\n\t\t\tpController.set('end', end);\n\n\t\t\treturn this.store.manager('time-entry-report', start, end, null, project, null, null, false, sort);\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-entries/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/report/time-off', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/report/time-off/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tmodel: function model() {\n\t\t\tvar pController = this.controllerFor('report/time-off');\n\t\t\tvar start = pController.get('start');\n\t\t\tvar end = pController.get('end');\n\n\t\t\tif (start === 0) {\n\t\t\t\tvar currentPeriod = this.get('payPeriods').getPayPeriod(_utils.Time.timestamp());\n\t\t\t\tvar previousPeriod = this.get('payPeriods').getPayPeriod(currentPeriod.get('startDate').subtract(1, 'days').unix());\n\t\t\t\tstart = previousPeriod.get('start');\n\t\t\t\tend = previousPeriod.get('end');\n\t\t\t}\n\n\t\t\treturn this.store.manager('time-off-report', start, end);\n\t\t}\n\t});\n});","define('busy-app/routes/report/time-off/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/reset', ['exports', 'ember-simple-auth/mixins/unauthenticated-route-mixin'], function (exports, _unauthenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_unauthenticatedRouteMixin.default, {});\n});","define('busy-app/routes/scheduling', ['exports', '@busy-web/utils', 'ember-simple-auth/mixins/authenticated-route-mixin', 'busy-app/utils/organization/overtime-period'], function (exports, _utils, _authenticatedRouteMixin, _overtimePeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tinterop: Ember.inject.service(\"interop\"),\n\n\t\tqueryParams: {\n\t\t\tstart: { replace: true },\n\t\t\tend: { replace: true },\n\t\t\tselected: { replace: true },\n\t\t\tcustom: { replace: true },\n\t\t\tisMobile: { replace: true },\n\t\t\tgroup: { replace: true }\n\t\t},\n\n\t\tallowGroupFilter: Ember.computed.not('auth.useGroupPermissionScoping'),\n\n\t\tbeforeModel: function beforeModel(transition) {\n\t\t\tif (Ember.get(this, 'features.schedulingInterop')) {\n\t\t\t\ttransition.abort();\n\t\t\t\treturn this.redirectToReact();\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tredirectToReact: function redirectToReact() {\n\t\t\tvar interop = Ember.get(this, \"interop\");\n\n\t\t\tvar reactAppPath = '/scheduling';\n\t\t\tvar reactAppUrl = interop.getReactAppUrl(reactAppPath, {}, false);\n\t\t\tvar windowHandle = interop.openUrl(reactAppUrl, null, {\n\t\t\t\tnewWindow: false,\n\t\t\t\treplace: true\n\t\t\t});\n\n\t\t\treturn windowHandle;\n\t\t},\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = params.start,\n\t\t\t    end = params.end,\n\t\t\t    selected = params.selected,\n\t\t\t    custom = params.custom,\n\t\t\t    isMobile = params.isMobile,\n\t\t\t    currentDay = params.currentDay,\n\t\t\t    group = params.group;\n\n\t\t\tvar controller = this.controllerFor('scheduling');\n\t\t\tcontroller.set('selected', selected);\n\n\t\t\t// start can be null or 0\n\t\t\tif (Ember.isNone(start) || !start) {\n\t\t\t\tstart = _utils.Time.date().startOf('day').unix();\n\t\t\t}\n\n\t\t\tvar overtimePeriod = (0, _overtimePeriod.getOvertimePeriodByDate)(this.get('auth.organizationOvertimePeriod'), start);\n\t\t\tvar weekStart = (0, _overtimePeriod.weekStartForPeriod)(overtimePeriod);\n\n\t\t\tif (!end) {\n\t\t\t\tif (selected === 'daily') {\n\t\t\t\t\t// set overtime period week\n\t\t\t\t\tend = _utils.Time.date(start).endOf('day').unix();\n\t\t\t\t} else {\n\t\t\t\t\tvar _createOvertimeBoundW = (0, _overtimePeriod.createOvertimeBoundWeekForPeriod)(overtimePeriod, start);\n\t\t\t\t\t// set overtime period week\n\n\n\t\t\t\t\tstart = _createOvertimeBoundW.start;\n\t\t\t\t\tend = _createOvertimeBoundW.end;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\torgPayPeriod: Ember.RSVP.resolve(this.get('auth.organizationPayPeriod')),\n\t\t\t\tmemberGroups: this.getMemberGroups()\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar memberGroups = _ref.memberGroups;\n\n\t\t\t\tvar currentPeriod = _this.get('payPeriod').getPayPeriod(start);\n\t\t\t\treturn { start: start, end: end, custom: custom, selected: selected, weekStart: weekStart, currentPeriod: currentPeriod, isMobile: isMobile, currentDay: currentDay, group: group, memberGroups: memberGroups };\n\t\t\t});\n\t\t},\n\t\tgetMemberGroups: function getMemberGroups() {\n\t\t\tvar params = { _asc: ['group_name'], page_size: 10000 };\n\t\t\treturn this.store.query('member-group', params);\n\t\t},\n\n\n\t\tactions: {\n\t\t\trefreshModel: function refreshModel() {\n\t\t\t\tthis.refresh();\n\t\t\t},\n\t\t\tselectDay: function selectDay(day) {\n\t\t\t\tvar currentDay = Ember.get(day, 'start');\n\t\t\t\tEmber.set(this.controller, 'currentDay', currentDay);\n\t\t\t\tthis.replaceWith('scheduling', { queryParams: { currentDay: currentDay } });\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/scheduling/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils', 'busy-app/utils/collection'], function (exports, _authenticatedRouteMixin, _utils, _collection) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\taccess: Ember.inject.service(),\n\t\tauth: Ember.inject.service(),\n\n\t\t// queryParams: {\n\t\t//   currentDay: { replace: true },\n\t\t// },\n\n\t\tmodel: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\t\tvar _ref2, data, reminders, links, members, memberGroupId, linksWithMembers, remindersWithLinks, days;\n\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\t\treturn this.loadModelData();\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_ref2 = _context.sent;\n\t\t\t\t\t\t\t\tdata = _ref2.data;\n\t\t\t\t\t\t\t\treminders = _ref2.reminders;\n\t\t\t\t\t\t\t\tlinks = _ref2.links;\n\t\t\t\t\t\t\t\tmembers = _ref2.members;\n\t\t\t\t\t\t\t\tmemberGroupId = Ember.get(this, 'auth.useGroupPermissionScoping') ? Ember.get(this, 'auth.member.memberGroupId') : Ember.get(data, 'group');\n\t\t\t\t\t\t\t\tlinksWithMembers = this.setLinkMembers(links, members);\n\t\t\t\t\t\t\t\tremindersWithLinks = this.setReminderLinks(reminders, linksWithMembers, memberGroupId);\n\n\t\t\t\t\t\t\t\t// create reminder day objects\n\n\t\t\t\t\t\t\t\tdays = setDayReminders(data.start, data.end, data.currentDay, remindersWithLinks);\n\n\t\t\t\t\t\t\t\t// return data and days\n\n\t\t\t\t\t\t\t\treturn _context.abrupt('return', { data: data, days: days });\n\n\t\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction model() {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn model;\n\t\t}(),\n\n\n\t\t// async lookup waterfall\n\t\tloadModelData: function () {\n\t\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n\t\t\t\tvar data, reminders, links, members;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t_context2.next = 2;\n\t\t\t\t\t\t\t\treturn this.modelFor('scheduling');\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdata = _context2.sent;\n\t\t\t\t\t\t\t\t_context2.next = 5;\n\t\t\t\t\t\t\t\treturn this.loadScheduleReminders(data);\n\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\treminders = _context2.sent;\n\t\t\t\t\t\t\t\t_context2.next = 8;\n\t\t\t\t\t\t\t\treturn this.loadScheduleReminderLinks(reminders);\n\n\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tlinks = _context2.sent;\n\t\t\t\t\t\t\t\t_context2.next = 11;\n\t\t\t\t\t\t\t\treturn this.loadMembers(links);\n\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\t\tmembers = _context2.sent;\n\t\t\t\t\t\t\t\treturn _context2.abrupt('return', { data: data, reminders: reminders, links: links, members: members });\n\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee2, this);\n\t\t\t}));\n\n\t\t\tfunction loadModelData() {\n\t\t\t\treturn _ref3.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn loadModelData;\n\t\t}(),\n\t\tloadScheduleReminders: function loadScheduleReminders(data) {\n\t\t\tvar scheduleQuery = {\n\t\t\t\t_lte: { start_time: data.end },\n\t\t\t\t_gte: { end_time: data.start },\n\t\t\t\t_desc: ['updated_on'],\n\t\t\t\t_asc: ['start_time'],\n\t\t\t\tdeleted_on: null\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').findAll('schedule-reminder', scheduleQuery).then(function (reminders) {\n\t\t\t\treturn reminders.toArray();\n\t\t\t});\n\t\t},\n\t\tloadScheduleReminderLinks: function loadScheduleReminderLinks(model) {\n\t\t\tvar linksQuery = {\n\t\t\t\tdeleted_on: null\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').findWhereIn('schedule-reminder-link', 'schedule_reminder_id', model.mapBy('id'), linksQuery);\n\t\t},\n\n\n\t\t// returns a collection of members keyed by the memberId\n\t\tloadMembers: function loadMembers(links) {\n\t\t\tvar query = {\n\t\t\t\tarchivedOn: null,\n\t\t\t\tdeleted_on: null\n\t\t\t};\n\n\t\t\treturn Ember.get(this, 'store').findWhereIn('member', 'id', links.mapBy('memberId').uniq(), query).then(function (members) {\n\t\t\t\treturn (0, _collection.toDictionary)(members, 'id');\n\t\t\t});\n\t\t},\n\n\n\t\t// loadGroupMembers() {\n\t\t// \t// short circuit if the Group Scoped Permissions feature is not relevant\n\t\t// \tif (!get(this, 'auth.useGroupPermissionScoping')) {\n\t\t// \t\treturn resolve(null);\n\t\t// \t}\n\n\t\t// \tconst query = {\n\t\t// \t\tarchived_on: null,\n\t\t// \t\tdeleted_on: null,\n\t\t// \t};\n\n\t\t// \tconst authMember = get(this, 'auth.member');\n\t\t// \tconst { id, memberGroupId } = getProperties(authMember, ['id', 'memberGroupId']);\n\n\t\t// \tsetProperties(query, { member_group_id: memberGroupId });\n\n\t\t// \tif (isNone(memberGroupId)) {\n\t\t// \t\tsetProperties(query, { id });\n\t\t// \t}\n\n\t\t// \treturn get(this, 'store')\n\t\t// \t\t.findAll('member', query)\n\t\t// \t\t.then(members => toDictionary(members, 'id'));\n\t\t// },\n\n\t\tsetLinkMembers: function setLinkMembers(links, members) {\n\t\t\tlinks.forEach(function (link) {\n\t\t\t\tvar memberId = Ember.get(link, 'memberId');\n\t\t\t\tvar member = members.get(memberId); // members is a Set keyed by the memberId\n\n\t\t\t\tEmber.setProperties(link, { member: member });\n\t\t\t});\n\n\t\t\t// only return links that have members (not archived)\n\t\t\treturn links.filterBy('member');\n\t\t},\n\n\n\t\t/*\n  \tif group scoped permissions is enabled, the memberGroupId is the auth members group\n  \tif that feature is not enabled, memberGroupId can be set by the group filter option\n  */\n\t\tsetReminderLinks: function setReminderLinks(reminders, links, memberGroupId) {\n\t\t\tvar _this = this;\n\n\t\t\tvar authMemberId = Ember.get(this, 'auth.member.id');\n\n\t\t\treminders.forEach(function (reminder) {\n\t\t\t\tvar access = Ember.get(_this, 'access');\n\t\t\t\tvar reminderId = Ember.get(reminder, 'id');\n\n\t\t\t\t// get all links for this reminder, these will be attached to the reminder\n\t\t\t\tvar scheduleLinks = links.filterBy('scheduleReminderId', reminderId).sortBy('member.firstName', 'member.lastName');\n\n\t\t\t\t// apply Group Scoped Permissions, or any selected group filters\n\t\t\t\t// this collection will be the one access checks are run against\n\t\t\t\tvar filteredLinks = scheduleLinks.filter(function (link) {\n\t\t\t\t\tif (!Ember.isNone(memberGroupId)) {\n\t\t\t\t\t\treturn Ember.get(link, 'member.memberGroupId') === memberGroupId;\n\t\t\t\t\t} else if (Ember.get(_this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\t// group scoping enabled, but member not in a group\n\t\t\t\t\t\treturn Ember.get(link, 'member.id') === Ember.get(_this, 'auth.member.id');\n\t\t\t\t\t} else if (memberGroupId === 'ungrouped') {\n\t\t\t\t\t\treturn Ember.isNone(Ember.get(link, 'member.id'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// check if this auth member can view ANY of the group filtered members\n\t\t\t\tvar canShow = filteredLinks.any(function (l) {\n\t\t\t\t\treturn access.canTakeActionFor('timeEvents', Ember.get(l, 'member'));\n\t\t\t\t});\n\n\t\t\t\t// check if this auth member can edit ALL of the linked members\n\t\t\t\tvar canEdit = canShow && scheduleLinks.every(function (link) {\n\t\t\t\t\tvar canEditMember = access.canTakeActionFor('timeEvents', Ember.get(link, 'member'));\n\n\t\t\t\t\t// if group scoped permissions is enabled, all members must also be part of the allowed group\n\t\t\t\t\tif (canEditMember && Ember.get(_this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\t\t\treturn Ember.get(link, 'member.id') === authMemberId;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn Ember.get(link, 'member.memberGroupId') === memberGroupId;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn canEditMember;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tEmber.setProperties(reminder, {\n\t\t\t\t\tcanEdit: canEdit,\n\t\t\t\t\tcanShow: canShow,\n\t\t\t\t\tscheduleLinks: scheduleLinks\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// filter out any models the auth member can not view\n\t\t\treturn reminders.filterBy('canShow');\n\t\t},\n\t\tcheckMemberGroupFilter: function checkMemberGroupFilter(scheduleLinks, groupFilter) {\n\t\t\tif (Ember.isNone(groupFilter)) {\n\t\t\t\treturn scheduleLinks;\n\t\t\t}\n\n\t\t\tvar groupFilterId = groupFilter === 'ungrouped' ? null : groupFilter;\n\n\t\t\treturn scheduleLinks.any(function (link) {\n\t\t\t\treturn link.get('member.memberGroupId') == groupFilterId;\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\tselectDay: function selectDay(day) {\n\t\t\t\tEmber.get(this.controller, 'model.days').forEach(function (item) {\n\t\t\t\t\tif (Ember.get(item, 'start') === Ember.get(day, 'start')) {\n\t\t\t\t\t\tEmber.set(item, 'selected', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tEmber.set(item, 'selected', false);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// causes the event to\n\t\t\t\t// bubble to the parent route\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/**\n  * Merges models together in to a ReminderDay Object\n  * for each day in the date range\n  *\n  * takes a range start and end, and all reminders\n  * loaded for the same range\n  *\n  * @method setDayReminders\n  * @param start {number} unix timestamp in seconds\n  * @param end {number} unix timestamp in seconds\n  * @return {ReminderDay[]}\n  */\n\tvar setDayReminders = function setDayReminders(start, end, selectedDay, models) {\n\t\tvar days = generateDays(start, end, selectedDay);\n\t\treturn days.map(function (day) {\n\t\t\tvar dayModels = getDayReminders(day, models);\n\t\t\tEmber.set(day, 'reminders', dayModels);\n\t\t\treturn day;\n\t\t});\n\t};\n\n\t/**\n  * generates an array of day objects from the start to end time\n  *\n  * @method generateDays\n  * @param start {number} unix timestamp in seconds\n  * @param end {number} unix timestamp in seconds\n  * @return {ReminderDay[]}\n  */\n\tvar generateDays = function generateDays(start, end, selectedDay) {\n\t\tvar today = _utils.Time.date().startOf('day').unix();\n\t\tif (!Ember.isEmpty(selectedDay)) {\n\t\t\ttoday = _utils.Time.date(selectedDay).startOf('day').unix();\n\t\t}\n\n\t\tvar current = start;\n\t\tvar dateRange = [];\n\n\t\t// create days array\n\t\twhile (current <= end) {\n\t\t\t// set selected to true if today === current\n\t\t\tvar selected = today === current;\n\n\t\t\t// create and push a new day object\n\t\t\tdateRange.pushObject(createDay(current, selected));\n\n\t\t\t// move ahead one day\n\t\t\tcurrent = _utils.Time.date(current).add(1, 'days').unix();\n\t\t}\n\n\t\tif (!Ember.isEmpty(dateRange) && !dateRange.findBy('selected', true)) {\n\t\t\tEmber.set(dateRange[0], 'selected', true);\n\t\t}\n\n\t\t// return sorted array by start timestamp\n\t\treturn dateRange.sortBy('start');\n\t};\n\n\t/**\n  * filters models for a day\n  *\n  * @method getDayReminders\n  * @param day {ReminderDay} a day object with start and end of day times\n  * @param models {ScheduleReminder}\n  * @return {ScheduleReminder[]}\n  */\n\tvar getDayReminders = function getDayReminders(day, models) {\n\t\tvar start = Ember.get(day, 'start');\n\t\tvar end = Ember.get(day, 'end');\n\n\t\treturn models.filter(function (model) {\n\t\t\tvar isMatch = false;\n\n\t\t\t// create unix times for start of day and end of day model times\n\t\t\t//\n\t\t\t// NOTE: timestamp may represent start and end of days on different days\n\t\t\t//\n\t\t\tvar mstart = _utils.Time.date(Ember.get(model, 'startTime')).startOf('day').unix();\n\t\t\tvar mend = _utils.Time.date(Ember.get(model, 'endTime')).endOf('day').unix();\n\n\t\t\tif (mstart === start) {\n\t\t\t\t// model start equals day start\n\t\t\t\t// matches filter\n\t\t\t\tisMatch = true;\n\t\t\t} else if (mend === end) {\n\t\t\t\t// model end equals day end\n\t\t\t\t// matches filter\n\t\t\t\tisMatch = true;\n\t\t\t}\n\t\t\treturn isMatch;\n\t\t});\n\t};\n\n\t/**\n  * creates a new day object to represent the day form start to end\n  *\n  * @method createDay\n  * @param time {number} unix timestamp in seconds represents a time for the day to create\n  * @param selected {boolean} flag for if this day should show selected in the ui\n  * @return {object} day object\n  */\n\tvar createDay = function createDay(time) {\n\t\tvar selected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\treturn ReminderDay.create({\n\t\t\tselected: selected,\n\t\t\tstart: _utils.Time.date(time).startOf('day').unix(),\n\t\t\tend: _utils.Time.date(time).endOf('day').unix()\n\t\t});\n\t};\n\n\t/**\n  * ReminderDay object\n  */\n\tvar ReminderDay = Ember.Object.extend({\n\t\tselected: false,\n\t\tstart: null,\n\t\tend: null,\n\n\t\treminders: null,\n\n\t\ttoday: Ember.computed('start', function () {\n\t\t\treturn _utils.Time.date().startOf('day').unix() === this.get('start');\n\t\t}),\n\n\t\tday: Ember.computed('start', function () {\n\t\t\treturn this.formatDate(Ember.get(this, 'start'));\n\t\t}),\n\n\t\tformatDate: function formatDate(time) {\n\t\t\tvar d = _utils.Time.date(time);\n\t\t\treturn d.year() !== _utils.Time.date().year() ? d.format('ddd, MMM D, YYYY') : d.format('ddd, MMM D');\n\t\t}\n\t});\n});","define('busy-app/routes/scheduling/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define(\"busy-app/routes/signup\", [\"exports\", \"ember-simple-auth/mixins/unauthenticated-route-mixin\"], function (exports, _unauthenticatedRouteMixin) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_unauthenticatedRouteMixin.default, {\n\t\tinterop: Ember.inject.service(\"interop\"),\n\t\tfeatures: Ember.inject.service(\"features\"),\n\n\t\tmodel: function model() {\n\t\t\tEmber.$(\"body\").addClass(\"signup\");\n\t\t\treturn Ember.RSVP.resolve(null);\n\t\t},\n\t\tbeforeModel: function beforeModel(transition) {\n\t\t\tif (Ember.get(this, \"features.onboardingInterop\")) {\n\t\t\t\ttransition.abort();\n\t\t\t\treturn this.redirectToReact();\n\t\t\t}\n\t\t},\n\t\tredirectToReact: function redirectToReact() {\n\t\t\tvar interop = Ember.get(this, \"interop\");\n\n\t\t\tvar search = window.location.search;\n\n\t\t\tvar onboardPath = \"/login\" + search;\n\t\t\tvar onboardUrl = interop.getReactAppUrl(onboardPath, {}, false);\n\n\t\t\tvar windowHandle = interop.openUrl(onboardUrl, null, {\n\t\t\t\tnewWindow: false,\n\t\t\t\treplace: true\n\t\t\t});\n\n\t\t\treturn windowHandle;\n\t\t}\n\t});\n});","define('busy-app/routes/ticket', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend({\n\t\tinterop: Ember.inject.service('interop'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\tqueryParams: {\n\t\t\tverify_email: { refreshModel: false },\n\t\t\treset_password: { refreshModel: false },\n\t\t\tinvitation: { refreshModel: false },\n\t\t\tunsubscribe: { refreshModel: false }\n\t\t},\n\n\t\tmodel: function model(queryParams) {\n\t\t\tvar reset_password = Ember.get(queryParams, 'reset_password');\n\t\t\tvar unsubscribe = Ember.get(queryParams, 'unsubscribe');\n\t\t\tvar onboardingInterop = Ember.get(this, 'features.onboardingInterop');\n\n\t\t\tif (onboardingInterop) {\n\t\t\t\tif (!Ember.isNone(reset_password)) {\n\t\t\t\t\treturn this.redirectToReact({ reset_password: reset_password });\n\t\t\t\t} else if (!Ember.isNone(unsubscribe)) {\n\t\t\t\t\treturn this.redirectToReact({ unsubscribe: unsubscribe });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.resolve(null);\n\t\t},\n\t\tredirectToReact: function redirectToReact(ticketParams) {\n\t\t\tvar interop = Ember.get(this, 'interop');\n\t\t\tvar resetPasswordUrl = interop.getReactAppUrl('/ticket', ticketParams, false);\n\t\t\tvar windowHandle = interop.openUrl(resetPasswordUrl, null, { newWindow: false });\n\n\t\t\treturn windowHandle;\n\t\t}\n\t});\n});","define('busy-app/routes/time-card', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\t__controller: null,\n\t\ttargetName: null,\n\n\t\tsetupController: function setupController() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.set('__controller', true);\n\t\t},\n\n\n\t\t/**\n   * Gets the target routeName from the transition object\n   *\n   * @private\n   * @method getTarget\n   * @param transition {object}\n   */\n\t\tgetTarget: function getTarget(transition) {\n\t\t\tif (!Ember.isNone(transition)) {\n\t\t\t\tvar targetName = Ember.get(transition, 'targetName');\n\t\t\t\t// set the target routes name\n\t\t\t\tthis.set('targetName', targetName);\n\t\t\t}\n\t\t},\n\n\t\t/**\n   * Observer triggered on transition to change the pageTitle\n   *\n   * @public\n   * @method setTarget\n   */\n\t\tsetTarget: Ember.observer('targetName', '__controller', function () {\n\t\t\t// get the target route name\n\t\t\tvar targetName = this.get('targetName');\n\t\t\tif (!Ember.isEmpty(targetName) && this.get('__controller')) {\n\t\t\t\t// get the route name from the target name\n\t\t\t\tvar routeName = targetName.split('.')[1];\n\t\t\t\tif (!Ember.isEmpty(routeName)) {\n\t\t\t\t\t// format the route name\n\t\t\t\t\tvar title = this.formatTitle(routeName);\n\n\t\t\t\t\t// set the pageTitle to the formated route name.\n\t\t\t\t\tvar controller = this.controllerFor('time-card');\n\t\t\t\t\tcontroller.set('pageTitle', title);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Formats a title for the route name.\n   * This takes a dasherized string an adds spaces and capital letters for a title format.\n   *\n   * @public\n   * @method formatTitle\n   * @param routeName {string} Dasherized string\n   * @return {string}\n   */\n\t\tformatTitle: function formatTitle(routeName) {\n\t\t\t// split the name on the dashes\n\t\t\tvar titleParts = routeName.split('-');\n\n\t\t\t// loop the parts and clssify the strings\n\t\t\tvar title = [];\n\t\t\ttitleParts.forEach(function (item) {\n\t\t\t\treturn title.push(item.classify());\n\t\t\t});\n\n\t\t\t// return the strings joined with spaces\n\t\t\treturn title.join(' ');\n\t\t},\n\n\n\t\tactions: {\n\t\t\tloading: function loading(transition) {\n\t\t\t\tthis.getTarget(transition);\n\t\t\t\tthis._super.apply(this, arguments);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/time-card/full-report', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/time-card/full-report/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmobile: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tsort: {\n\t\t\t\treplace: true,\n\t\t\t\tas: 'sort'\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = parseInt(params.start, 10);\n\t\t\tvar end = parseInt(params.end, 10);\n\t\t\tvar member_id = params.member_id;\n\n\t\t\treturn this.getTimeCardReport(start, end, member_id, params.sort).then(function (data) {\n\t\t\t\treturn _this.appendSignatureData(member_id, data);\n\t\t\t});\n\t\t},\n\t\tgetTimeCardReport: function getTimeCardReport(start, end, member_id, sort) {\n\t\t\treturn this.store.manager('time-card-report', start, end, member_id, null, null, null, false, sort).then(function (data) {\n\t\t\t\treturn data.get('firstObject');\n\t\t\t});\n\t\t},\n\t\tgetOpenTimeEntries: function getOpenTimeEntries(end, member_id) {\n\t\t\tvar query = {\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\tend_time: '_-NULL-_',\n\t\t\t\tmember_id: member_id\n\t\t\t};\n\n\t\t\treturn this.get('store').query('time-entry', query);\n\t\t},\n\t\tappendSignatureData: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(memberId, data) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar doc, docPromise;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee3$(_context3) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context3.prev = _context3.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tif (this.get('features.signatures')) {\n\t\t\t\t\t\t\t\t\t_context3.next = 2;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', Ember.RSVP.resolve(data));\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdoc = data.get('memberTimeDocument');\n\t\t\t\t\t\t\t\tdocPromise = Ember.RSVP.resolve(doc);\n\n\t\t\t\t\t\t\t\tif (Ember.isNone(doc)) {\n\t\t\t\t\t\t\t\t\t// create a new memberTimeDocument, then reload the model\n\t\t\t\t\t\t\t\t\tdocPromise = this.createMemberTimeDocument(data.get('currentPeriod'), memberId);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn _context3.abrupt('return', docPromise.then(function () {\n\t\t\t\t\t\t\t\t\tvar _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(memberTimeDocument) {\n\t\t\t\t\t\t\t\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\t\t\t\t\t\t\t\twhile (1) {\n\t\t\t\t\t\t\t\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _context2.abrupt('return', Ember.RSVP.hash({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselfSignature: _this2.setSelfSignature(memberTimeDocument),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tauthoritativeSignature: _this2.setAuthoritativeSignature(memberTimeDocument),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsiblingHasSelfSignature: memberTimeDocument.get('siblingHasSelfSignature'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsiblingHasAuthoritativeSignature: memberTimeDocument.get('siblingHasAuthoritativeSignature')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).then(function () {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(props) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar siblingHasSelfSignature, siblingHasAuthoritativeSignature;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twhile (1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsiblingHasSelfSignature = props.siblingHasSelfSignature, siblingHasAuthoritativeSignature = props.siblingHasAuthoritativeSignature;\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmemberTimeDocument.set('hasPreviousSelfSignature', siblingHasSelfSignature);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmemberTimeDocument.set('hasPreviousAuthoritativeSignature', siblingHasAuthoritativeSignature);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (Ember.isNone(data.get('memberTimeDocument'))) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// model.memberTimeDocument is a computed derived from model.model.memberTimeDocuments on utils/models/collections/time-card-report\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// append the new doc to the memberTimeDocuments collection instead of overriding the computed property\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.set('model.memberTimeDocuments', [].concat(_toConsumableArray(data.get('model.memberTimeDocuments')), [memberTimeDocument]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _context.abrupt('return', data);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}, _callee, _this2);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn function (_x4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _ref3.apply(this, arguments);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}()));\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}, _callee2, _this2);\n\t\t\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\t\t\treturn function (_x3) {\n\t\t\t\t\t\t\t\t\t\treturn _ref2.apply(this, arguments);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}()));\n\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context3.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee3, this);\n\t\t\t}));\n\n\t\t\tfunction appendSignatureData(_x, _x2) {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn appendSignatureData;\n\t\t}(),\n\t\tcreateMemberTimeDocument: function createMemberTimeDocument(payPeriod, memberId) {\n\t\t\tvar _payPeriod$getPropert = payPeriod.getProperties('start', 'end'),\n\t\t\t    start = _payPeriod$getPropert.start,\n\t\t\t    end = _payPeriod$getPropert.end;\n\n\t\t\treturn this.get('signature').createMemberTimeDocument(start, end, memberId);\n\t\t},\n\t\tsetSelfSignature: function setSelfSignature(memberTimeDocument) {\n\t\t\tif (Ember.isNone(memberTimeDocument)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t} else {\n\t\t\t\treturn memberTimeDocument.getSelfSignature();\n\t\t\t}\n\t\t},\n\t\tsetAuthoritativeSignature: function setAuthoritativeSignature(memberTimeDocument) {\n\t\t\tvar _this3 = this;\n\n\t\t\tif (!this.get('features.signatures-supervisor') || Ember.isNone(memberTimeDocument)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t} else {\n\t\t\t\treturn memberTimeDocument.getAuthoritativeSignature().then(function (authoritativeSignature) {\n\t\t\t\t\treturn _this3.appendSupervisorMember(authoritativeSignature);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tappendSupervisorMember: function appendSupervisorMember(authoritativeSignature) {\n\t\t\tif (Ember.isNone(authoritativeSignature) || Ember.isNone(authoritativeSignature.get('proxyMemberId'))) {\n\t\t\t\treturn Ember.RSVP.resolve(authoritativeSignature);\n\t\t\t} else {\n\t\t\t\treturn this.get('store').findRecord('member', authoritativeSignature.get('proxyMemberId')).then(function (supervisorMember) {\n\t\t\t\t\tif (!Ember.isNone(supervisorMember)) {\n\t\t\t\t\t\tauthoritativeSignature.set('member', supervisorMember);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn authoritativeSignature;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\tactions: {\n\t\t\t// refreshRoute() {\n\t\t\t// \tconsole.log('route:action:refreshRoute');\n\t\t\t//\n\t\t\t// \treturn this.refreshRoute();\n\t\t\t// }\n\t\t}\n\t});\n});","define('busy-app/routes/time-card/full-report/loading', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend({});\n});","define('busy-app/routes/time-card/index', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/routes/time-card/pay-period', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tstore: Ember.inject.service('store'),\n\t\tpayPeriod: Ember.inject.service('pay-period'),\n\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tend: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tpayPeriodDays: null,\n\t\tpayPeriodSeconds: null,\n\t\tpayPeriodCost: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\t// set payPeriodDays after init\n\t\t\tthis.set('payPeriodDays', []);\n\t\t},\n\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = Number(params.start);\n\t\t\tvar end = Number(params.end);\n\t\t\tvar memberId = params.member_id;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\t\t\t_utils.Assert.isUUID(memberId);\n\n\t\t\t// load payperiod data parallel to the main model data\n\t\t\tEmber.run.later(this, function () {\n\t\t\t\treturn _this.setPayPeriodData(start, end, memberId);\n\t\t\t});\n\n\t\t\treturn this.store.manager('time-entry-pto-day', start, end, memberId).then(function (entry) {\n\t\t\t\t// set time interval\n\t\t\t\t_this.setOpenEntryTimeInterval(entry);\n\n\t\t\t\t// return entry models\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t},\n\n\t\t/**\n   * Sets the time interval for the open entry to update\n   * the total seconds\n   *\n   * @public\n   * @method setOpenEntryTimeInterval\n   * @param models {array} array of time entry day objects\n   * @param timer {number} the number of milliseconds before refreshing the total seconds\n   */\n\t\tsetOpenEntryTimeInterval: function setOpenEntryTimeInterval(models) {\n\t\t\tvar timer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60000;\n\n\t\t\tmodels.forEach(function (day) {\n\t\t\t\t// check if day has open time in it.\n\t\t\t\tif (day.get('hasOpenTime')) {\n\t\t\t\t\t// loop through time entry range objects\n\t\t\t\t\tday.get('model').forEach(function (item) {\n\t\t\t\t\t\t// check if range object is an open entry an the time interval is not already set\n\t\t\t\t\t\tif (item.get('isOpenEntry') && item.get('model.timeInterval') !== timer) {\n\t\t\t\t\t\t\titem.get('model').setTimeInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * load pay period data for the start and end time.\n   *\n   */\n\t\tsetPayPeriodData: function setPayPeriodData(start_time, end_time, member_id) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar controller = this.controllerFor('time-card/pay-period');\n\t\t\tvar queryParams = { start_time: start_time, end_time: end_time, member_id: member_id };\n\n\t\t\tthis.get('store').query('pay-period-member-seconds', queryParams).then(function (payPeriodSeconds) {\n\t\t\t\tvar payPeriod = payPeriodSeconds.get('firstObject');\n\t\t\t\tif (Ember.isNone(payPeriod)) {\n\t\t\t\t\tpayPeriod = _this2.get('payPeriod').getPayPeriod(start_time);\n\t\t\t\t\tpayPeriod = _this2.get('store').createRecord('pay-period-member-seconds', {\n\t\t\t\t\t\tstartTime: payPeriod.get('start'),\n\t\t\t\t\t\tendTime: payPeriod.get('end'),\n\t\t\t\t\t\tregularSeconds: 0,\n\t\t\t\t\t\tovertimeSeconds: 0,\n\t\t\t\t\t\tdoubletimeSeconds: 0,\n\t\t\t\t\t\tmemberId: member_id\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t_this2.setPayPeriodMemberTimeDocument(payPeriod);\n\t\t\t\tcontroller.set('payPeriodSeconds', payPeriod);\n\t\t\t});\n\n\t\t\tthis.get('store').query('pay-period-member-cost', queryParams).then(function (payPeriodCost) {\n\t\t\t\tcontroller.set('payPeriodCost', payPeriodCost.get('firstObject'));\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * load the member time document for this pay period\n   *\n   * @private\n   */\n\t\tsetPayPeriodMemberTimeDocument: function setPayPeriodMemberTimeDocument(payPeriod) {\n\t\t\tif (this.get('features.signatures') && this.get('signature.isTimecardSigningEnabled')) {\n\t\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\t\tpayPeriod.set('isLoadingSignatureState', true);\n\n\t\t\t\treturn this.get('signature').getStateForPayPeriod(payPeriod).then(function (memberTimeDocument) {\n\t\t\t\t\tpayPeriod.set('isLoadingSignatureState', false);\n\t\t\t\t\tpayPeriod.set('memberTimeDocument', memberTimeDocument);\n\n\t\t\t\t\treturn payPeriod;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Mock api call for testing\n   *\n   * @private\n   * @method getMockedPayPeriodDay\n   * @param startOfDay {date} moment date object\n   * @return {object}\n   */\n\t\tgetMockedPayPeriodDay: function getMockedPayPeriodDay(startOfDay) {\n\t\t\t_utils.Assert.isMoment(startOfDay);\n\n\t\t\treturn Ember.Object.create({\n\t\t\t\tstart: startOfDay.unix(),\n\t\t\t\ttimeOffTypes: null,\n\t\t\t\thasConflict: false,\n\t\t\t\ttotalSeconds: 0\n\t\t\t});\n\t\t},\n\n\n\t\tactions: {\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/time-card/time-entries', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin', '@busy-web/utils'], function (exports, _authenticatedRouteMixin, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\n\t\tqueryParams: {\n\t\t\tstart: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = parseInt(params.start, 10);\n\t\t\tvar memberId = params.member_id;\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isUUID(memberId);\n\n\t\t\tvar startOfDay = _utils.Time.date(params.start).startOf('day').unix();\n\t\t\tvar endOfDay = _utils.Time.date(params.start).endOf('day').unix();\n\n\t\t\treturn this.store.manager('time-entry-pto-range', startOfDay, endOfDay, params.member_id).then(function (model) {\n\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\tif (item.get('isOpenEntry') && item.get('model.timeInterval') !== 60000) {\n\t\t\t\t\t\titem.get('model').setTimeInterval(60000);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn _this.store.findRecord('member', memberId).then(function (member) {\n\t\t\t\t\treturn { member: member, content: model };\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tactions: {\n\t\t\treloadModel: function reloadModel() {\n\t\t\t\tthis.refresh();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/routes/time-card/time-entry', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tid: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\t//return this.store.findRecord('time-entry', params.id);\n\n\t\t\tvar getter = this.store.getter().findRecord('time-entry', params.id).join('member', 'time-entry', 'member_id', { deleted_on: '_-NULL-_' }).join('project', 'time-entry', 'project_id', { deleted_on: '_-NULL-_' }).join('cost-code', 'time-entry', 'cost_code_id', { deleted_on: '_-NULL-_' }).join('equipment', 'time-entry', 'equipment_id', { deleted_on: '_-NULL-_' }).join('member-location', 'time-entry', 'start_location_id', { deleted_on: '_-NULL-_' }, 'startLocation').join('member-location', 'time-entry', 'end_location_id', { deleted_on: '_-NULL-_' }, 'endLocation').joinAll('time-entry-break', 'time-entry', 'id', { _asc: ['start_time'], deleted_on: '_-NULL-_' }).join('member-location', 'time-entry-break', 'start_location_id', { deleted_on: '_-NULL-_' }, 'startLocation').join('member-location', 'time-entry-break', 'end_location_id', { deleted_on: '_-NULL-_' }, 'endLocation');\n\n\t\t\treturn getter.fetch().then(function (data) {\n\t\t\t\tdata.timeEntry.get('timeEntryBreaks').forEach(function (item) {\n\t\t\t\t\titem.set('timeEntry', data.timeEntry);\n\t\t\t\t});\n\t\t\t\treturn data.timeEntry;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/time-card/time-off-entry', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {\n\t\tqueryParams: {\n\t\t\tid: {\n\t\t\t\trefreshModel: true\n\t\t\t},\n\t\t\tmember_id: {\n\t\t\t\trefreshModel: true\n\t\t\t}\n\t\t},\n\n\t\tmodel: function model(params) {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.store.findRecord('time-off', params.id).then(function (model) {\n\t\t\t\t_this.store.findRecord('member', params.member_id).then(function (member) {\n\t\t\t\t\tmodel.set('member', member);\n\t\t\t\t\tif (model.get('memberId') !== model.get('submitterMemberId')) {\n\t\t\t\t\t\t_this.store.findRecord('member', model.get('submitterMemberId')).then(function (submitMember) {\n\t\t\t\t\t\t\tmodel.set('submitMember', submitMember);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn model;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/routes/verify-email', ['exports', 'ember-simple-auth/mixins/authenticated-route-mixin'], function (exports, _authenticatedRouteMixin) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Route.extend(_authenticatedRouteMixin.default, {});\n});","define('busy-app/serializers/application', ['exports', '@busy-web/data'], function (exports, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _data.JsonApiSerializer.extend({});\n});","define('busy-app/serializers/json', ['exports', '@busy-web/data/serializers/json'], function (exports, _json) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _json.default;\n    }\n  });\n});","define('busy-app/services/access', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kLevelSelf = 1; /**\n                      * @module Services\n                      *\n                      */\n\n\tvar kLevelLower = 2;\n\tvar kLevelSame = 4;\n\tvar kLevelHigher = 8;\n\n\t//const kLevels = [kLevelHigher, kLevelSame, kLevelLower, kLevelSelf];\n\n\t/**\n  * `Services/Access`\n  *\n  * @class Access\n  * @namespace Services\n  * @extends Service\n  * @uses Services.Auth\n  */\n\texports.default = Ember.Service.extend({\n\t\t/**\n   * @private\n   * @property auth\n   * @type Services.Auth\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tauthPosition: Ember.computed.alias('auth.authMemberPosition'),\n\t\townerId: Ember.computed.alias('auth.organization.ownedBy'),\n\t\tauthId: Ember.computed.alias('auth.member.id'),\n\n\t\tpositions: Ember.computed.alias('auth.positions'),\n\n\t\tisOwner: function isOwner(forMemberId) {\n\t\t\tif (!Ember.isNone(forMemberId) && forMemberId === Ember.get(this, 'ownerId')) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\thasPermissionFor: function hasPermissionFor(action) {\n\t\t\tvar hasPermissionFor = false;\n\t\t\tif (!Ember.isNone(Ember.get(this, 'authPosition.id'))) {\n\t\t\t\thasPermissionFor = this._hasPermissionFor(action);\n\t\t\t}\n\t\t\treturn hasPermissionFor;\n\t\t},\n\n\n\t\t// can the authenticated user perform ANY of the actions\n\t\thasPermissionForAny: function hasPermissionForAny(actions) {\n\t\t\tvar _this = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isArray(actions);\n\n\t\t\treturn actions.reduce(function (result, action) {\n\t\t\t\treturn result || _this.hasPermissionFor(action);\n\t\t\t}, false);\n\t\t},\n\n\n\t\t// can the authenticated user perform EVERY action\n\t\thasPermissionForAll: function hasPermissionForAll(actions) {\n\t\t\tvar _this2 = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isArray(actions);\n\n\t\t\treturn actions.reduce(function (result, action) {\n\t\t\t\treturn result && _this2.hasPermissionFor(action);\n\t\t\t}, true);\n\t\t},\n\t\tcanTakeActionFor: function canTakeActionFor(action, forMember) {\n\t\t\tvar canTakeActionFor = false;\n\n\t\t\tif (!Ember.isNone(forMember) && !Ember.isNone(Ember.get(forMember, 'content'))) {\n\t\t\t\tforMember = Ember.get(forMember, 'content');\n\t\t\t}\n\n\t\t\tif (this.isOwner(Ember.get(this, 'authId'))) {\n\t\t\t\tcanTakeActionFor = true;\n\t\t\t} else if (!Ember.isNone(forMember) && !Ember.isNone(forMember.id) && !Ember.isNone(Ember.get(this, 'authPosition.id'))) {\n\t\t\t\tcanTakeActionFor = this._canTakeActionFor(action, forMember);\n\t\t\t}\n\t\t\treturn canTakeActionFor;\n\t\t},\n\n\n\t\t// can the authenticated user perform ANY of the actions on the member\n\t\tcanTakeActionForAny: function canTakeActionForAny(actions, forMember) {\n\t\t\tvar _this3 = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isArray(actions);\n\t\t\t_utils.Assert.isObject(forMember);\n\n\t\t\treturn actions.reduce(function (result, action) {\n\t\t\t\treturn result || _this3.canTakeActionFor(action, forMember);\n\t\t\t}, false);\n\t\t},\n\n\n\t\t// can the authenticated user perform EVERY action on the member\n\t\tcanTakeActionForAll: function canTakeActionForAll(actions, forMember) {\n\t\t\tvar _this4 = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isArray(actions);\n\t\t\t_utils.Assert.isObject(forMember);\n\n\t\t\treturn actions.reduce(function (result, action) {\n\t\t\t\treturn result && _this4.canTakeActionFor(action, forMember);\n\t\t\t}, true);\n\t\t},\n\t\t_hasPermissionFor: function _hasPermissionFor(action) {\n\t\t\t_utils.Assert.test('The permission passed to hasPermissionFor does not exist.', Ember.get(this, 'authPosition.' + action) !== undefined);\n\n\t\t\treturn Ember.get(this, 'authPosition.' + action);\n\t\t},\n\t\t_canTakeActionFor: function _canTakeActionFor(action, forMember) {\n\t\t\t_utils.Assert.test('The permission passed to canTakeActionFor does not exist.', Ember.get(this, 'authPosition.' + action) !== undefined);\n\t\t\t_utils.Assert.test('The canTakeAction forMember must have a position attached to the member', !Ember.isNone(Ember.get(forMember, 'positionId')));\n\n\t\t\t// the level of the forMember in relation to the level of\n\t\t\t// the auth member\n\t\t\tvar targetLevel = this.permissionLevelType(forMember);\n\n\t\t\t// the auth members access level\n\t\t\tvar accessLevel = Ember.get(this, 'authPosition.' + action);\n\n\t\t\t// check if the auth member has access to take action on the forMember\n\t\t\tvar canTakeAction = this.canTakeAction(targetLevel, accessLevel);\n\n\t\t\treturn canTakeAction;\n\t\t},\n\t\tcanTakeAction: function canTakeAction(targetLevel, accessLevel) {\n\t\t\tvar settings = this.parseSetting(accessLevel);\n\t\t\tvar canTakeAction = false;\n\n\t\t\t// admin level access.\n\t\t\tif (accessLevel >= kLevelSelf + kLevelLower + kLevelSame + kLevelHigher) {\n\t\t\t\tcanTakeAction = true;\n\t\t\t} else if (targetLevel === kLevelSelf && settings.self) {\n\t\t\t\t// self permisions\n\t\t\t\tcanTakeAction = true;\n\t\t\t} else if (targetLevel === kLevelLower && settings.lower) {\n\t\t\t\t// lower permissions\n\t\t\t\tcanTakeAction = true;\n\t\t\t} else if (targetLevel === kLevelSame && settings.same) {\n\t\t\t\t// same level permisions\n\t\t\t\tcanTakeAction = true;\n\t\t\t} else if (targetLevel === kLevelHigher && settings.higher) {\n\t\t\t\t// higher level permissions\n\t\t\t\tcanTakeAction = true;\n\t\t\t}\n\t\t\treturn canTakeAction;\n\t\t},\n\t\tparseSetting: function parseSetting(value) {\n\t\t\tvar higher = value >= kLevelHigher;\n\t\t\tvalue %= kLevelHigher;\n\n\t\t\tvar same = value >= kLevelSame;\n\t\t\tvalue %= kLevelSame;\n\n\t\t\tvar lower = value >= kLevelLower;\n\t\t\tvalue %= kLevelLower;\n\n\t\t\tvar self = value >= kLevelSelf;\n\n\t\t\treturn { higher: higher, same: same, lower: lower, self: self };\n\t\t},\n\t\tpermissionLevelType: function permissionLevelType(forMember) {\n\t\t\tvar forPosition = Ember.get(this, 'positions').findBy('id', Ember.get(forMember, 'positionId'));\n\t\t\tvar type = 0;\n\t\t\tif (!Ember.isNone(forPosition)) {\n\t\t\t\tif (Ember.get(this, 'authId') === Ember.get(forMember, 'id')) {\n\t\t\t\t\ttype = kLevelSelf;\n\t\t\t\t} else if (Ember.get(forPosition, 'level') === Ember.get(this, 'authPosition.level')) {\n\t\t\t\t\ttype = kLevelSame;\n\t\t\t\t} else if (Ember.get(forPosition, 'level') > Ember.get(this, 'authPosition.level')) {\n\t\t\t\t\ttype = kLevelLower;\n\t\t\t\t} else if (Ember.get(forPosition, 'level') < Ember.get(this, 'authPosition.level')) {\n\t\t\t\t\ttype = kLevelHigher;\n\t\t\t\t}\n\t\t\t} else if (this.isOwner(Ember.get(this, 'authId'))) {\n\t\t\t\ttype = 16;\n\t\t\t}\n\t\t\treturn type;\n\t\t}\n\t});\n});","define('busy-app/services/ajax', ['exports', 'ember-ajax/services/ajax'], function (exports, _ajax) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _ajax.default;\n    }\n  });\n});","define('busy-app/services/analytics', ['exports', 'busy-app/utils/integrations/google-tag-manager', 'busy-app/utils/integrations/google-maps', 'busy-app/utils/integrations/appcues', 'busy-app/utils/integrations/busy-event', 'busy-app/utils/integrations/full-story', 'busy-app/utils/integrations/intercom', 'busy-app/utils/integrations/receptive'], function (exports, _googleTagManager, _googleMaps, _appcues, _busyEvent, _fullStory, _intercom, _receptive) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\teventEmitter: Ember.inject.service(),\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tvar owner = Ember.getOwner(this);\n\n\t\t\t// google tab manager should be included first.\n\t\t\tthis.TagManager = _googleTagManager.default.create(owner.ownerInjection());\n\n\t\t\t// google maps\n\t\t\tthis.GoogleMaps = _googleMaps.default.create(owner.ownerInjection());\n\n\t\t\t// more integrations\n\t\t\tthis.Intercom = _intercom.default.create(owner.ownerInjection());\n\t\t\tthis.Busylitics = _busyEvent.default.create(owner.ownerInjection());\n\n\t\t\tthis.Appcues = _appcues.default.create(owner.ownerInjection());\n\n\t\t\t_fullStory.default.create(owner.ownerInjection());\n\t\t\t_receptive.default.create(owner.ownerInjection());\n\n\t\t\t// listener for route transitions\n\t\t\tthis.get('eventEmitter').on('router', 'transition', function () {\n\t\t\t\treturn _this.updateRoute();\n\t\t\t});\n\t\t},\n\t\tupdateRoute: function updateRoute() {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.TagManager.update();\n\t\t\tthis.Intercom.update();\n\t\t\tthis.Busylitics.pageView();\n\n\t\t\tEmber.run.next(function () {\n\t\t\t\t_this2.Appcues.start();\n\t\t\t});\n\t\t},\n\t\tupdateCompany: function updateCompany(companyInfo) {\n\t\t\tthis.Intercom.updateCompany(companyInfo);\n\t\t},\n\t\taddEvent: function addEvent(eventType, params) {\n\t\t\tthis.Busylitics.send(eventType, params);\n\t\t},\n\t\tgenerateTitle: function generateTitle(pathName) {\n\t\t\tthis.Busylitics.generateTitle(pathName);\n\t\t},\n\t\taddPageView: function addPageView(title) {\n\t\t\tthis.Busylitics.pageView(title);\n\t\t},\n\t\topenIntercom: function openIntercom() {\n\t\t\tthis.Intercom.show();\n\t\t\treturn this;\n\t\t},\n\t\tcloseIntercom: function closeIntercom() {\n\t\t\tthis.Intercom.hide();\n\t\t\treturn this;\n\t\t}\n\t});\n});","define('busy-app/services/auth', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/debug'], function (exports, _emberData, _utils, _debug) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\t/**\n   * @private\n   * @property store\n   * @type Services.Store\n   */\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * @private\n   * @property session\n   * @type Services.Session\n   */\n\t\tsession: Ember.inject.service('session'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tdataStore: Ember.inject.service('data-store'),\n\t\tinterop: Ember.inject.service('interop'),\n\n\t\tsessionId: _utils.UUID.generate(),\n\n\t\tmemberId: Ember.computed('session.isAuthenticated', function () {\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\tvar auth = this.get('dataStore').find('auth-member') || {};\n\t\t\t\treturn Ember.get(auth, 'id');\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}),\n\n\t\ttoken: Ember.computed('session.isAuthenticated', function () {\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\tvar auth = this.get('dataStore').find('auth-member') || {};\n\t\t\t\treturn Ember.get(auth, 'token');\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the current auth member\n   *\n   * @public\n   * @property member\n   * @type {DS.Model}\n   */\n\t\tmember: Ember.computed('memberId', 'session.isAuthenticated', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar id = this.get('memberId');\n\t\t\tif (!Ember.isEmpty(id) && this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.get('store').findRecord('member', id).then(function (model) {\n\t\t\t\t\t\tif (!Ember.isNone(model.get('archivedOn')) || !Ember.isNone(model.get('deletedOn'))) {\n\t\t\t\t\t\t\t_this.invalidateSession();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn model;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the current auth organization\n   *\n   * @public\n   * @property organization\n   * @type {DS.Model}\n   */\n\t\torganization: Ember.computed('session.isAuthenticated', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.get('store').queryRecord('organization', { page_size: 1 }).then(function (org) {\n\t\t\t\t\t\t_this2.addToAuthMap(org);\n\t\t\t\t\t\treturn org;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the current auth organizationInfo\n   *\n   * @public\n   * @property organizationInfo\n   * @type {DS.Model}\n   */\n\t\torganizationInfo: Ember.computed('organization.id', function () {\n\t\t\tvar id = this.get('organization.id');\n\t\t\tif (!Ember.isEmpty(id)) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.get('store').queryRecord('organization-info', { organizationId: id })\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the current auth member\n   *\n   * @public\n   * @property member\n   * @type {DS.Model}\n   */\n\t\torganizationPayPeriod: Ember.computed('session.isAuthenticated', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tif ((0, _debug.disable_test_runner)()) return [];\n\n\t\t\tif (this.get('session.isAuthenticated')) {\n\n\t\t\t\tvar query = { _desc: ['start_date'], deleted_on: null };\n\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.get('store').findAll('organization-pay-period', query).then(function (periods) {\n\t\t\t\t\t\t// create default period if no periods were found.\n\t\t\t\t\t\tif (Ember.isEmpty(periods)) {\n\t\t\t\t\t\t\tvar defaultPeriod = _this3.get('store').createRecord('organization-pay-period', {\n\t\t\t\t\t\t\t\tpayPeriodType: 10,\n\t\t\t\t\t\t\t\tstartDate: 345600,\n\t\t\t\t\t\t\t\tdayOne: 1\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn [defaultPeriod];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn periods;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the current auth member\n   *\n   * @public\n   * @property member\n   * @type {DS.Model}\n   */\n\t\torganizationOvertimePeriod: Ember.computed('session.isAuthenticated', function () {\n\t\t\tif ((0, _debug.disable_test_runner)()) return [];\n\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\tvar query = { _desc: ['start_time'], deleted_on: null };\n\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.get('store').findAll('organization-overtime-period', query)\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tisOwner: Ember.computed('member.id', 'organization.ownedBy', function () {\n\t\t\treturn !Ember.isNone(this.get('member.id')) && this.get('member.id') === this.get('organization.ownedBy');\n\t\t}),\n\n\t\towner: Ember.computed('organization.ownedBy', 'member.id', 'isOwner', function () {\n\t\t\tif (this.get('isOwner')) {\n\t\t\t\treturn this.get('member');\n\t\t\t} else {\n\t\t\t\tif (!Ember.isNone(this.get('organization.ownedBy'))) {\n\t\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\t\tpromise: this.get('store').findRecord('member', this.get('organization.ownedBy'))\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property for the organizations choice of currency symbol to use.\n   *\n   * @public\n   * @property currencySymbol\n   * @type string\n   */\n\t\tcurrencySymbol: Ember.computed('organizationInfo.currencyCode', function () {\n\t\t\tif (!Ember.isNone(this.get('organizationInfo.currencyCode'))) {\n\t\t\t\tvar cur = _utils.Currency.code(this.get('organizationInfo.currencyCode'));\n\t\t\t\treturn cur.get('symbol');\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the the positions for this organization\n   *\n   * @public\n   * @property positions\n   * @type {DS.Model}\n   */\n\t\tpositions: Ember.computed('session.isAuthenticated', function () {\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseArray.create({\n\t\t\t\t\tpromise: this.get('store').findAll('position', { _asc: ['level'] })\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Computed property to get the the position for the auth member\n   *\n   * @public\n   * @property authMemberPosition\n   * @type {DS.Model}\n   */\n\t\tauthMemberPosition: Ember.computed('positions.@each.id', 'member.positionId', function () {\n\t\t\tif (!Ember.isNone(this.get('member.positionId')) && !Ember.isEmpty(this.get('positions'))) {\n\t\t\t\treturn this.get('positions').findBy('id', this.get('member.positionId'));\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}),\n\n\t\taddToAuthMap: function addToAuthMap(organization) {\n\t\t\tthis.get('dataStore').addAuthAccount(organization);\n\t\t},\n\n\n\t\tmemberCountRefresh: 0,\n\n\t\t/**\n   * Computed property to get the current member count for this organization\n   *\n   * @public\n   * @property memberCount\n   * @type {DS.Model}\n   */\n\t\tmemberMeta: Ember.computed('memberCountRefresh', 'session.isAuthenticated', function () {\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.get('store').query('member', { page_size: 1, archived_on: '_-NULL-_' }).then(function (models) {\n\t\t\t\t\t\treturn models.get('meta');\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tmemberCount: Ember.computed('memberMeta', 'memberMeta.totalRows', function () {\n\t\t\tvar promisedData = Ember.RSVP.resolve(this.get('memberMeta'));\n\n\t\t\treturn promisedData.then(function (data) {\n\t\t\t\tvar memberMeta = Ember.Object.create(data);\n\t\t\t\treturn memberMeta.getWithDefault('totalRows', 1);\n\t\t\t});\n\t\t}),\n\n\t\tinvalidateSession: function invalidateSession() {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar switching = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\treturn this.get('session').invalidate('authenticator:basic', {}).then(function () {\n\t\t\t\tif (Ember.get(_this4, 'features.onboardingInterop')) {\n\t\t\t\t\treturn _this4.redirectToLogin(switching);\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tredirectToLogin: function redirectToLogin() {\n\t\t\tvar switching = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\tvar interop = Ember.get(this, 'interop');\n\t\t\tvar reactUrl = switching ? interop.getReactAppUrl('/login', { switch: true }, false) : interop.getReactAppUrl('/logout', {}, false);\n\n\t\t\tvar windowHandle = interop.openUrl(reactUrl, null, { newWindow: false });\n\n\t\t\treturn windowHandle;\n\t\t},\n\n\n\t\t/**\n   * Computed property to indicate whether the current user's permissions should be restricted to their own group\n   * \tWARNING: This attribute relies on promises being resolved\n   *\n   * @public\n   * @property useGroupPermissionScoping\n   * @type {Boolean}\n   */\n\t\tuseGroupPermissionScoping: Ember.computed.and('features.groupPermissions', 'authMemberPosition.scopeByGroup')\n\t});\n});","define('busy-app/services/container', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar ContainerArray = Ember.Object.extend({\n\t\t__map: null,\n\n\t\tsetup: Ember.on('init', function () {\n\t\t\tthis.set('__map', new window.Map());\n\t\t}),\n\n\t\taddModel: function addModel(model) {\n\t\t\tvar _this = this;\n\n\t\t\t_utils.Assert.isObject(model);\n\n\t\t\tvar groups = model.get('__group');\n\t\t\tgroups.forEach(function (key) {\n\t\t\t\tvar id = model.get(key);\n\t\t\t\tvar type = key.replace('Id', '');\n\t\t\t\tif (Ember.isNone(_this.get(type))) {\n\t\t\t\t\t_this.set(type, []);\n\t\t\t\t}\n\n\t\t\t\tvar container = _this.findContainer(type, id);\n\t\t\t\tif (Ember.isNone(container)) {\n\t\t\t\t\tvar typeArray = _this.get(type);\n\t\t\t\t\tvar idx = typeArray.length;\n\t\t\t\t\tcontainer = _this.createContainer(model);\n\t\t\t\t\ttypeArray.pushObject(container);\n\t\t\t\t\t_this.get('__map').set(id, idx);\n\t\t\t\t}\n\t\t\t\tcontainer.add(model);\n\t\t\t});\n\t\t},\n\t\tfindContainer: function findContainer(type, key) {\n\t\t\tvar idx = this.get('__map').get(key);\n\t\t\tif (!Ember.isNone(idx)) {\n\t\t\t\treturn this.get(type).objectAt(key);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tcreateContainer: function createContainer(model) {\n\t\t\t_utils.Assert.isObject(model);\n\n\t\t\tvar props = model.get('__aggregate');\n\t\t\t_utils.Assert.isArray(props);\n\n\t\t\tprops = props.map(function (key) {\n\t\t\t\treturn 'model.@each.' + key;\n\t\t\t});\n\n\t\t\tvar container = Ember.Object.extend({\n\t\t\t\tmodel: null,\n\n\t\t\t\tadd: function add(model) {\n\t\t\t\t\tthis.get('model').pushObject(model);\n\t\t\t\t},\n\n\n\t\t\t\trecalculate: Ember.computed.apply(undefined, _toConsumableArray(props).concat([function () {\n\t\t\t\t\tvar _this2 = this;\n\n\t\t\t\t\tprops.forEach(function (key) {\n\t\t\t\t\t\t_this2.set(key, _this2.get('model').mapBy(key).reduce(function (a, b) {\n\t\t\t\t\t\t\treturn a + b;\n\t\t\t\t\t\t}, 0));\n\t\t\t\t\t});\n\t\t\t\t}]))\n\t\t\t});\n\n\t\t\treturn container.create({ model: [] });\n\t\t}\n\t});\n\n\t/**\n  * `Service/Container`\n  *\n  * @class Container\n  * @namespace Service\n  * @extends Service\n  */\n\texports.default = Ember.Service.extend({\n\t\tbuild: function build(models) {\n\t\t\tvar containerArray = ContainerArray.create();\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\tcontainerArray.addModel(model);\n\t\t\t});\n\n\t\t\treturn containerArray;\n\t\t}\n\t});\n});","define('busy-app/services/cookies', ['exports', 'ember-cookies/services/cookies'], function (exports, _cookies) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _cookies.default;\n});","define('busy-app/services/data-store', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction getStoreObject(key) {\n\t\t(true && !(typeof key === 'string') && Ember.assert(\"You must provide a string as the first param to getStoreObject\", typeof key === 'string'));\n\n\n\t\treturn JSON.parse(localStorage.getItem(key)) || {};\n\t}\n\n\tfunction setStoreObject(key, value) {\n\t\t(true && !(typeof key === 'string') && Ember.assert(\"You must provide a string as the first param to setStoreObject\", typeof key === 'string'));\n\t\t(true && !((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') && Ember.assert(\"You must provide an object as the second param to setStoreObject\", (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object'));\n\n\n\t\tlocalStorage.setItem(key, JSON.stringify(value));\n\t}\n\n\tvar AUTH_MAP_KEY = 'busy-app-session:map';\n\tvar SWITCH_KEY = 'busy-app-session:switch';\n\tvar ACTIVE_MEMBER_KEY = 'busy-app-session:active';\n\tvar SIMPLE_AUTH_KEY = 'ember_simple_auth-session'; // has to be ember-simple-auth key\n\n\texports.default = Ember.Service.extend({\n\t\tstate: 'unathenticated',\n\n\t\tstore: Ember.inject.service('store'),\n\t\tsession: Ember.inject.service('session'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tsave: function save(type, data) {\n\t\t\tvar hasMany = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n\t\t\t_utils.Assert.test(\"save requires all data to have an id\", data.id);\n\n\t\t\tif (hasMany) {\n\t\t\t\tvar model = this.find(type, { id: data.id });\n\t\t\t\tvar modelArray = this.find(type);\n\t\t\t\tvar idx = modelArray.length;\n\t\t\t\tif (model) {\n\t\t\t\t\tidx = modelArray.indexOf(model);\n\t\t\t\t}\n\t\t\t\tmodelArray[idx] = data;\n\t\t\t\tlocalStorage.setItem(type, JSON.stringify(modelArray));\n\t\t\t} else {\n\t\t\t\tlocalStorage.setItem(type, JSON.stringify(data));\n\t\t\t}\n\t\t},\n\t\tfind: function find(type) {\n\t\t\tvar search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tvar list = localStorage.getItem(type);\n\t\t\tif (Ember.isEmpty(list)) {\n\t\t\t\tlist = [];\n\t\t\t} else {\n\t\t\t\tlist = JSON.parse(list);\n\t\t\t}\n\n\t\t\tif (Ember.typeOf(list) === 'array') {\n\t\t\t\tObject.keys(search).forEach(function (key) {\n\t\t\t\t\tvar value = search[key];\n\t\t\t\t\tlist = list.filter(function (item) {\n\t\t\t\t\t\treturn item[key] === value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn list.length === 1 ? list[0] : list;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * this is the reference point for the suspended auth\n   * data stored in localStorage.\n   *\n   * @public\n   * @method suspendedKey\n   */\n\t\tsuspendedKey: function suspendedKey() {\n\t\t\treturn localStorage.getItem(SWITCH_KEY);\n\t\t},\n\n\n\t\t/**\n   * removes the authenticated member but keeps the data stored\n   * in localStorage referenced with suspendedKey() for retrieval\n   *\n   * @public\n   * @method suspendAuth\n   */\n\t\tsuspendAuth: function suspendAuth() {\n\t\t\tvar oldKey = localStorage.getItem(ACTIVE_MEMBER_KEY);\n\t\t\tlocalStorage.setItem(SWITCH_KEY, oldKey);\n\t\t\tlocalStorage.setItem(ACTIVE_MEMBER_KEY, '');\n\t\t\tthis.set('state', 'suspended');\n\n\t\t\treturn this.get('auth').invalidateSession(true);\n\t\t},\n\n\n\t\t/**\n   * switches the authenticated account using the same key\n   * that is passed to addAuthAccount(key, value)\n   *\n   * @public\n   * @method switchAuth\n   */\n\t\tswitchAuth: function switchAuth(key) {\n\t\t\t(true && !(Ember.typeOf(key) === 'string') && Ember.assert('key must be a string in switchKey(key)', Ember.typeOf(key) === 'string'));\n\n\t\t\tvar authMap = getStoreObject(AUTH_MAP_KEY);\n\n\t\t\t(true && !(Ember.get(authMap, key) !== undefined) && Ember.assert('The key provided to switchKey(key) was not found in auth', Ember.get(authMap, key) !== undefined));\n\n\n\t\t\tlocalStorage.setItem(SWITCH_KEY, '');\n\t\t\tlocalStorage.setItem(ACTIVE_MEMBER_KEY, key);\n\t\t\treturn this.get('session').authenticate('authenticator:basic', null, null, Ember.get(authMap, key + '.auth'));\n\t\t},\n\n\n\t\t/**\n   * restores the auth account after the suspendAuth() method has been\n   * invoked.\n   *\n   * @public\n   * @method resumeAuth\n   */\n\t\tresumeAuth: function resumeAuth() {\n\t\t\tvar oldKey = this.suspendedKey();\n\t\t\tthis.switchAuth(oldKey);\n\t\t},\n\n\n\t\t/**\n   * gets all auth account data from the localStorage. returns\n   * an array of auth objects\n   *\n   * @public\n   * @method getAuthAccounts\n   */\n\t\tgetAuthAccounts: function getAuthAccounts() {\n\t\t\tvar accounts = getStoreObject(AUTH_MAP_KEY);\n\t\t\tvar data = Object.keys(accounts).map(function (key) {\n\t\t\t\tvar item = accounts[key];\n\t\t\t\treturn item.org;\n\t\t\t});\n\n\t\t\treturn this.get('store').push({ data: data });\n\t\t},\n\t\tgetAuthId: function getAuthId() {\n\t\t\treturn localStorage.getItem(ACTIVE_MEMBER_KEY);\n\t\t},\n\n\n\t\t/**\n   * adds an account reference value to the account map for lookup of other accounts\n   *\n   * @public\n   * @method addAuthAccount\n   * @param key {string}\n   * @param value {string}\n   */\n\t\taddAuthAccount: function addAuthAccount(organization) {\n\t\t\tvar auth = getStoreObject(SIMPLE_AUTH_KEY);\n\t\t\tif (auth && auth.authenticated) {\n\t\t\t\tauth = auth.authenticated;\n\n\t\t\t\tvar org = {\n\t\t\t\t\tid: organization.id,\n\t\t\t\t\ttype: 'organization',\n\t\t\t\t\tattributes: organization.toJSON()\n\t\t\t\t};\n\n\t\t\t\tvar accounts = getStoreObject(AUTH_MAP_KEY);\n\t\t\t\taccounts[organization.id] = { auth: auth, org: org };\n\t\t\t\tsetStoreObject(AUTH_MAP_KEY, accounts);\n\t\t\t\tlocalStorage.setItem(ACTIVE_MEMBER_KEY, organization.id);\n\t\t\t\tlocalStorage.setItem(SWITCH_KEY, '');\n\t\t\t}\n\t\t},\n\t\tauthenticated: function authenticated(data) {\n\t\t\tthis.set('state', 'authenticated');\n\t\t\tthis.save('auth-member', data, false);\n\t\t},\n\t\tclear: function clear() {\n\t\t\tif (this.get('state') === 'authenticated') {\n\t\t\t\tthis.set('state', 'unathenticated');\n\t\t\t\tlocalStorage.clear();\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/services/discovery', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/settings'], function (exports, _utils, _logger, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar MAX_AGE = 60 * 60 * 24; // 1 day = 86400 seconds;\n\t/* eslint-disable ember/jquery-ember-run */\n\n\t/**\n  * @module Services\n  *\n  */\n\n\t/**\n  * @typedef Manifest\n  * @type {object}\n  * @property Object.<string, ManifestEntry>\n  */\n\n\t/**\n  * @typedef ManifestEntry\n  * @type {object}\n  * @property {ManifestEntryMeta} meta\n  * @property {string} url\n  * @property {string} protocol\n  * @property {string} port\n  * @property {string} domain\n  * @property {string} path\n  */\n\n\t/**\n  * @typedef ManifestEntryMeta\n  * @type {object}\n  * @property {string} description\n  * @property {string} type\n  * @property {string} method\n  */\n\n\tvar DISCOVERY_URL = _settings.default.get('discovery_url');\n\tvar MANIFEST_FALLBACK = _settings.default.get('manifest_fallback');\n\n\t/**\n  * `Services/Discovery`\n  *\n  * @class Discovery\n  * @namespace Services\n  * @extends Service\n  * @uses Services.Auth\n  */\n\texports.default = Ember.Service.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\t/**\n   * @private\n   * @type {number} _lastUpdate\n   */\n\t\t_lastUpdate: 0,\n\n\t\t/**\n   * @private\n   * @type {Manifest} _manifest\n   */\n\t\t_manifest: null,\n\n\t\t/**\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tEmber.set(this, '_manifest', MANIFEST_FALLBACK);\n\t\t},\n\n\n\t\t/**\n   * Public Methods\n   *\n   */\n\n\t\t/**\n   * Get the manifest\n   *\n   * If there's a valid in the cache, that version is returned\n   * If not, load the remote manifest and return that\n   *\n   * @public\n   * @async\n   * @method getManifest\n   * @reject {Error}\n   * @fulfill {Manifest}\n   * @return {Promise<Manifest>}\n   */\n\t\tgetManifest: function getManifest() {\n\t\t\tvar isValid = this._getIsValidManifest();\n\n\t\t\tif (isValid) {\n\t\t\t\t// Logger.info(this, 'Manifest cache hit');\n\t\t\t\tvar _manifest = Ember.get(this, '_manifest');\n\t\t\t\treturn Ember.RSVP.Promise.resolve(_manifest);\n\t\t\t} else {\n\t\t\t\t// Logger.info(this, 'Manifest cache miss');\n\t\t\t\treturn this._loadManifest();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get the ManifestEntry for the provided key\n   *\n   * @public\n   * @async\n   * @method getManifestEntry\n   * @param key {string}\n   * @reject {Error}\n   * @fulfill {ManifestEntry}\n   * @return {Promise<ManifestEntry>}\n   */\n\t\tgetManifestEntry: function getManifestEntry(key) {\n\t\t\tif (!key || !key.length) {\n\t\t\t\tthrow new Error('key must be provided');\n\t\t\t}\n\n\t\t\treturn this.getManifest().then(function (manifest) {\n\t\t\t\tif (!Ember.isNone(manifest) && manifest.hasOwnProperty(key)) {\n\t\t\t\t\treturn Ember.get(manifest, key);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.error('Requested manifest key not found', { manifest: manifest, key: key });\n\t\t\t\t\treturn Ember.RSVP.Promise.reject('Requested manifest key not found');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Do an ajax call to the relevant manifest url, as specified in the provided key\n   * Standard jQuery AjaxSettings can be provided\n   *\n   * @public\n   * @async\n   * @method ajax\n   * @param key {string}\n   * @param customProps {JQuery.AjaxSettings}\n   * @returns {JQuery.jqXHR}\n   */\n\t\tajax: function ajax(key) {\n\t\t\tvar _this = this;\n\n\t\t\tvar customProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tif (!key || !key.length) {\n\t\t\t\tthrow new Error('key must be provided');\n\t\t\t}\n\n\t\t\tif (customProps.url) {\n\t\t\t\tthrow new Error('Do not set { url } property');\n\t\t\t}\n\n\t\t\tvar defaultProps = {\n\t\t\t\tmethod: 'GET',\n\t\t\t\tbeforeSend: function beforeSend(xhr) {\n\t\t\t\t\txhr.setRequestHeader('Key-Authorization', Ember.get(_this, 'auth.token'));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar ajaxProps = Object.assign({}, defaultProps, customProps);\n\n\t\t\treturn this.getManifestEntry(key).then(function (entry) {\n\t\t\t\tajaxProps.url = entry.url;\n\n\t\t\t\treturn Ember.$.ajax(ajaxProps);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Private Methods\n   *\n   */\n\n\t\t/**\n   * Load the remote discovery manifest via a jQuery ajax\n   *\n   * @private\n   * @async\n   * @method _loadManifest\n   * @reject {Error}\n   * @fulfill {Manifest}\n   * @return {Promise<Manifest>}\n   */\n\t\t_loadManifest: function _loadManifest() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// the DISCOVERY_URL does not require authentication, so no Key-Authorization header is provided\n\t\t\treturn Ember.$.get(DISCOVERY_URL).then(function (manifest) {\n\t\t\t\treturn _this2._onManifestLoad(manifest);\n\t\t\t}).catch(function (e) {\n\t\t\t\treturn _this2._onManifestLoadError(e);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * On success handler for _loadManifest.\n   *\n   * Saves the manifest data to a local variable, _manifest\n   * Saves the current timestamp for cache management\n   *\n   * @private\n   * @method _onManifestLoad\n   * @param {Manifest} _manifest\n   * @return {Manifest}\n   */\n\t\t_onManifestLoad: function _onManifestLoad(manifest) {\n\t\t\t_logger.default.info(this, 'Manifest loaded', manifest);\n\n\t\t\tEmber.setProperties(this, {\n\t\t\t\t_manifest: manifest,\n\t\t\t\t_lastUpdate: _utils.Time.timestamp()\n\t\t\t});\n\n\t\t\treturn manifest;\n\t\t},\n\n\n\t\t/**\n   * On error handler for _loadManifest.\n   *\n   * If there is already a manifest in the local cache use it and fail silently\n   * If there is no cached manifest, reject the promise so the error can be handled\n   *\n   * @private\n   * @method _onManifestLoadError\n   * @param {Error} error\n   * @return {Manifest|Error}\n   */\n\t\t_onManifestLoadError: function _onManifestLoadError(error) {\n\t\t\t_logger.default.error('Manifest failed to load', error);\n\n\t\t\tvar cachedManifest = Ember.get(this, '_manifest');\n\n\t\t\t// if there's a manifest cached, go ahead and return it instead of failing\n\t\t\tif (!Ember.isNone(cachedManifest)) {\n\t\t\t\t_logger.default.warn('Using fallback manifest');\n\t\t\t\treturn cachedManifest;\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.Promise.reject(error);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Determine if the there is a locally cached manifest that is not expired\n   *\n   * @private\n   * @method _getIsValidManifest\n   * @return {boolean}\n   */\n\t\t_getIsValidManifest: function _getIsValidManifest() {\n\t\t\tvar isCached = !Ember.isNone(Ember.get(this, '_manifest'));\n\t\t\tvar isCurrent = !this._getIsManifestExpired();\n\n\t\t\treturn isCached && isCurrent;\n\t\t},\n\n\n\t\t/**\n   * Determine if the `_lastUpdate` timestamp is too old for the manifest to be used\n   *\n   * @private\n   * @method _getIsManifestExpired\n   * @return {boolean}\n   */\n\t\t_getIsManifestExpired: function _getIsManifestExpired() {\n\t\t\tvar _lastUpdate = Ember.get(this, '_lastUpdate');\n\t\t\tvar now = _utils.Time.timestamp();\n\t\t\tvar age = now - _lastUpdate;\n\t\t\tvar isExpired = age > MAX_AGE;\n\n\t\t\treturn isExpired;\n\t\t}\n\t});\n});","define('busy-app/services/escape-handler', ['exports', '@busy-web/components/services/escape-handler'], function (exports, _escapeHandler) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _escapeHandler.default;\n    }\n  });\n});","define('busy-app/services/event-emitter', ['exports', '@busy-web/utils', 'busy-app/events/router', 'busy-app/events/dom'], function (exports, _utils, _router, _dom) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Service.extend({\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\twindow.addEventListener('resize', function (event) {\n\t\t\t\tif (_this.__throttle) {\n\t\t\t\t\tEmber.run.cancel(_this.__throttle);\n\t\t\t\t}\n\n\t\t\t\t_this.__throttle = Ember.run.later(null, function () {\n\t\t\t\t\t_this.send('dom', 'resize', event);\n\t\t\t\t}, 100);\n\t\t\t});\n\t\t},\n\n\n\t\t_eventsTypes: Ember.computed(function () {\n\t\t\treturn {\n\t\t\t\trouter: _router.default.create(),\n\t\t\t\tdom: _dom.default.create()\n\t\t\t};\n\t\t}),\n\n\t\ton: function on(type, name, callback) {\n\t\t\tvar target = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n\t\t\t_utils.Assert.isString(type);\n\t\t\t_utils.Assert.isString(name);\n\n\t\t\tvar eventType = Ember.get(this, '_eventsTypes.' + type);\n\n\t\t\t_utils.Assert.test('The event type ' + type + ' does not exist', !Ember.isNone(eventType));\n\n\t\t\teventType.on(name, target, callback);\n\t\t},\n\t\toff: function off(type, name, callback) {\n\t\t\tvar target = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n\t\t\t_utils.Assert.isString(type);\n\t\t\t_utils.Assert.isString(name);\n\n\t\t\tvar eventType = Ember.get(this, '_eventsTypes.' + type);\n\n\t\t\t_utils.Assert.test('The event type ' + type + ' does not exist', !Ember.isNone(eventType));\n\n\t\t\teventType.off(name, target, callback);\n\t\t},\n\t\tsend: function send(type, name) {\n\t\t\t_utils.Assert.isString(type);\n\t\t\t_utils.Assert.isString(name);\n\n\t\t\tvar eventType = Ember.get(this, '_eventsTypes.' + type);\n\n\t\t\t_utils.Assert.test('The event type ' + type + ' does not exist', !Ember.isNone(eventType));\n\n\t\t\tfor (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\t\t\targs[_key - 2] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar hasEvent = eventType.send.apply(eventType, [name].concat(_toConsumableArray(args)));\n\n\t\t\t_utils.Assert.test('The event type ' + type + ' does not support a trigger for ' + name, hasEvent);\n\t\t}\n\t});\n});","define('busy-app/services/features', ['exports', 'ember-feature-flags/services/features', 'busy-app/config/environment'], function (exports, _features, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _features.default.extend({\n    config: _environment.default,\n    init: function init() {\n      this._super.apply(this, arguments);\n\n      if (_environment.default.featureFlags) {\n        this.setup(_environment.default.featureFlags);\n      }\n    }\n  });\n});","define('busy-app/services/google-maps-api', ['exports', 'ember-google-maps/services/google-maps-api'], function (exports, _googleMapsApi) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _googleMapsApi.default;\n    }\n  });\n});","define('busy-app/services/graylog', ['exports', '@busy-web/graylog/services/graylog'], function (exports, _graylog) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _graylog.default;\n    }\n  });\n});","define('busy-app/services/integration', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\t/**\n   * Lookup the RPC endpoint for the given integration. If no matching mapping is defined in `endpointMap`, the integration name itself is returned.\n   *\n   * @public\n   * @method rpcGetEndpoint\n   * @param integrationName {string} The name of the integration\n   * @returns {string}\n   */\n\t\trpcGetEndpoint: function rpcGetEndpoint(integrationName) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\tvar endpointMap = {\n\t\t\t\t// procore: 'procore',\n\t\t\t};\n\n\t\t\tvar endpoint = endpointMap.hasOwnProperty(integrationName) ? endpointMap[integrationName] : integrationName; // pass through the integrationName if there isn't a mapping\n\n\t\t\treturn endpoint;\n\t\t},\n\n\n\t\t/**\n   * Convenience wrapper to call the correct endpoint point with the requested RPC function\n   *\n   * @public\n   * @method rpcRequest\n   * @param integrationName {string} The name of the integration\n   * @param rpcFn {string} The function to be called on the RPC\n   * @param rpcParams {object} The parameters to be passed to the RPC\n   * @param [customUri] {string} An optional custom URL to be passed to the RPC\n   * @returns {EmberPromise}\n   */\n\t\trpcRequest: function rpcRequest(integrationName, rpcFn, rpcParams) {\n\t\t\tvar customUri = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 4);\n\t\t\t_utils.Assert.isString(integrationName);\n\t\t\t_utils.Assert.isString(rpcFn);\n\n\t\t\tif (!Ember.isNone(rpcParams)) {\n\t\t\t\t_utils.Assert.isObject(rpcParams);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(customUri)) {\n\t\t\t\t_utils.Assert.isString(customUri);\n\t\t\t}\n\n\t\t\tvar endpoint = this.rpcGetEndpoint(integrationName);\n\t\t\t_logger.default.info('Integration', 'rpcRequest', { endpoint: endpoint, rpcFn: rpcFn, rpcParams: rpcParams, customUri: customUri });\n\t\t\treturn this.get('store').rpcRequest(endpoint, rpcFn, rpcParams, customUri).then(function (results) {\n\t\t\t\t_logger.default.info('Integration', 'rpcRequest', { results: results });\n\t\t\t\treturn results;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error('Integration', 'rpcRequest', { err: err });\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Run a customizable method depending on the status code of the provided error.\n   *\n   * The default handler is `getConnectionError()` in this service\n   *\n   * @public\n   * @method rpcErrorHandler\n   * @param err {object} The error object to handle, must contain an HTTPS status code in `.status`\n   * @param err.status {number} HTTPS status code\n   * @param customHandlers {object} A hash of functions to be called depending on the status code\n   * @returns {varies}\n   *\n   * @example\n   *\trpcErrorHandler(err, {\n   *\t\t405: (err) => Logger.error('Method not allowed'),\n   *\t\t409: () => { return this.get('target.router').refresh(),\n   *\t});\n   */\n\t\trpcErrorHandler: function rpcErrorHandler(err, customHandlers) {\n\t\t\tvar _this = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2);\n\t\t\t_utils.Assert.isObject(err);\n\n\t\t\tif (!Ember.isNone(customHandlers)) {\n\t\t\t\t_utils.Assert.isObject(customHandlers);\n\t\t\t}\n\n\t\t\t// customHandlers.default will override this default\n\t\t\tvar defaultHandlers = {\n\t\t\t\tdefault: function _default() {\n\t\t\t\t\treturn _this.getConnectionError(err);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// create a new object with customHandlers merged over the default handlers\n\t\t\tvar errorHandlers = Ember.merge(defaultHandlers, customHandlers);\n\n\t\t\tif (err && err.hasOwnProperty('status')) {\n\t\t\t\tvar handlerKey = errorHandlers.hasOwnProperty(err.status) ? err.status : 'default';\n\t\t\t\tvar handler = errorHandlers[handlerKey];\n\n\t\t\t\treturn handler(err);\n\t\t\t} else {\n\t\t\t\treturn this.getUnhandledError(err);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get the remote URL where the client should be sent to start the OAuth dance\n   *\n   * @public\n   * @method rpcGrantUrl\n   * @param integrationName {string} The name of the integration\n   * @returns {string}\n   */\n\t\trpcGrantUrl: function rpcGrantUrl(integrationName) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\treturn this.rpcRequest(integrationName, 'grant_url');\n\t\t},\n\n\n\t\t/**\n   * Store the code obtained from the OAuth provider\n   *\n   * @public\n   * @method rpcSetCredentials\n   * @param integrationName {string} The name of the integration\n   * @param grant_code {string} The code returned from the remote OAuth provider\n   * @returns {Models.OrganizationIntegration}\n   */\n\t\trpcSetCredentials: function rpcSetCredentials(integrationName, grant_code) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\t\t\t_utils.Assert.isString(grant_code);\n\n\t\t\treturn this.rpcRequest(integrationName, 'set-credentials', { grant_code: grant_code });\n\t\t},\n\n\n\t\t/**\n   * Disconnect the given integration from the organization\n   *\n   * @public\n   * @method rpcDisconnect\n   * @param integrationName {string} The name of the integration\n   * @returns {Models.OrganizationIntegration}\n   */\n\t\trpcDisconnect: function rpcDisconnect(integrationName) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\treturn this.rpcRequest(integrationName, 'disconnect');\n\t\t},\n\n\n\t\t/**\n   * Request an import cycle be started for the given integration\n   *\n   * @public\n   * @method rpcTriggerImport\n   * @param integrationName {string} The name of the integration\n   * @returns {null}\n   */\n\t\trpcTriggerImport: function rpcTriggerImport(integrationName) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\treturn this.rpcRequest(integrationName, 'trigger-import');\n\t\t},\n\n\n\t\t/**\n   * Returns an EmberObject with an `errorType` of 'Connection Error' and `errorMessage` set to the supllied error's `statusText`\n   *\n   * @public\n   * @method getConnectionError\n   * @param err {object} error object returned from an RPC call\n   * @returns {EmberObject}\n   */\n\t\tgetConnectionError: function getConnectionError(err) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(err);\n\n\t\t\treturn Ember.Object.create({\n\t\t\t\terrorType: 'Connection Error',\n\t\t\t\terrorMessage: err.statusText\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Returns an EmberObject with an `errorType` of 'Error' and `errorMessage` as stringified version of the supplied error object\n   *\n   * @public\n   * @method getUnhandledError\n   * @param err {object} error object thrown by a failed RPC call\n   * @returns {EmberObject}\n   */\n\t\tgetUnhandledError: function getUnhandledError(err) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(err);\n\n\t\t\treturn Ember.Object.create({\n\t\t\t\terrorType: 'Error',\n\t\t\t\terrorMessage: JSON.stringify(err)\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n  * Returns a promise containing whatever it is passed after the specified delay\n  *\n  * @public\n  * @method mockApiCall\n  * @param result {any} what to return\n  * @param delay {integer} how many milliseconds to wait\n  * @returns {RSVP.Promise}\n  */\n\t\tmockApiCall: function mockApiCall() {\n\t\t\tvar result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\t\tvar delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\treturn resolve(result);\n\t\t\t\t}, delay);\n\t\t\t}).then(function (results) {\n\t\t\t\t_logger.default.info('Integration', 'mockApiCall', delay, { result: result });\n\t\t\t\treturn results;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Procore specific endpoints\n   * https://github.com/busybusy/webservices-procore-platform/issues/4\n   *\n   */\n\n\t\t/**\n  \t * The Procore RPC for set-credentials also returns an array of companies\n  \t *\n  \t * @public\n  \t * @method rpcProcoreSetCredentials\n  \t * @param integrationName {string} The name of the integration\n  \t * @param grant_code {string} The code returned from the remote OAuth provider\n  \t * @returns {Object}\n  \t */\n\t\trpcProcoreSetCredentials: function rpcProcoreSetCredentials(integrationName, grant_code) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\t\t\t_utils.Assert.isString(grant_code);\n\n\t\t\treturn this.rpcSetCredentials(integrationName, grant_code).then(function (results) {\n\t\t\t\treturn results && results.data && results.data.companies ? results.data.companies : [];\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n  \t * Get Procore's list of cost codes for the specified companyId\n  \t *\n  \t * @public\n  \t * @method rpcProcoreGetCostCodeLists\n  \t * @param integrationName {string} The name of the integration\n  \t * @param company_id {string} The id of a procore company\n  \t * @returns {Array}\n  \t */\n\t\trpcProcoreGetCostCodeLists: function rpcProcoreGetCostCodeLists(integrationName, company_id) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\treturn this.rpcRequest(integrationName, 'get-cost-code-lists', { company_id: company_id }).then(function (results) {\n\t\t\t\treturn results && results.data && results.data.cost_code_lists ? results.data.cost_code_lists : [];\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n  \t * Finalize the integration by sending the user selected companyId and costCodeList\n  \t *\n  \t * @public\n  \t * @method rpcProcoreFinalizeConfiguration\n  \t * @param integrationName {string} The name of the integration\n  \t * @param company_id {string} The id of a procore company\n  \t * @param cost_code_list {string} The id of a procore cost code list\n  \t * @returns {Models.OrganizationIntegration}\n  \t */\n\t\trpcProcoreFinalizeConfiguration: function rpcProcoreFinalizeConfiguration(integrationName, company_id, cost_code_list_id) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3, true);\n\t\t\t_utils.Assert.isString(integrationName);\n\n\t\t\treturn this.rpcRequest(integrationName, 'finalize-configuration', { company_id: company_id, cost_code_list_id: cost_code_list_id });\n\t\t}\n\t});\n});","define('busy-app/services/interop', ['exports', 'busy-app/utils/logger', 'busy-app/utils/settings'], function (exports, _logger, _settings) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Service.extend({\n    session: Ember.inject.service('session'),\n\n    windows: null,\n\n    init: function init() {\n      this._super();\n\n      Ember.set(this, 'windows', []);\n    },\n    closeWindows: function closeWindows() {\n      Ember.get(this, 'windows').forEach(function (childWindow) {\n        try {\n          if (childWindow && childWindow.close) {\n            childWindow.close();\n          }\n        } catch (e) {\n          _logger.default.error(e);\n        }\n      });\n\n      Ember.set(this, 'windows', []);\n    },\n    openReactApp: function openReactApp(path, customParameters, event) {\n      var interopUrl = this.getReactAppUrl(path, customParameters);\n\n      return this.openUrl(interopUrl, event, { newWindow: false });\n    },\n    openUrl: function openUrl(targetLocation, event) {\n      var _this = this;\n\n      var customOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var defaultOptions = {\n        newWindow: false,\n        replace: false\n      };\n      var options = Object.assign({}, defaultOptions, customOptions);\n      var windowName = this.getWindowName(targetLocation);\n\n      // if the CTRL or CMD key was held when the link was clicked, open the url in a new window\n      var isMetaKeyActive = !Ember.isNone(event) && (event.ctrlKey || event.metaKey);\n\n      if (options.newWindow || isMetaKeyActive) {\n        return new Promise(function (resolve, reject) {\n          try {\n            // it needs to run in next() or it won't attain focus on load\n            Ember.run.next(_this, function () {\n              var interopAppHandle = window.open(targetLocation, windowName);\n              interopAppHandle.focus();\n\n              // cache handle so it can be closed on logout\n              Ember.set(_this, 'windows', Ember.get(_this, 'windows').concat(interopAppHandle));\n\n              resolve(interopAppHandle);\n            });\n          } catch (e) {\n            reject(e);\n          }\n        });\n      } else {\n        var navigationMethod = options.replace ? 'assign' : 'replace';\n        window.location[navigationMethod](targetLocation);\n\n        return Promise.resolve(window);\n      }\n    },\n    getWindowName: function getWindowName(targetLocation) {\n      var windowName = encodeURIComponent('__app_interop__' + targetLocation.split('?')[0]);\n\n      return windowName;\n    },\n    getReactAppUrl: function getReactAppUrl() {\n      var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/';\n      var customParameters = arguments[1];\n      var includeAuthToken = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n      var defaultParameters = {};\n      var parameters = Object.assign({}, defaultParameters, customParameters);\n\n      var authorize = '';\n\n      if (Ember.get(this, 'session.isAuthenticated')) {\n        var authToken = Ember.get(this, 'session.data.authenticated.token');\n        var memberId = Ember.get(this, 'session.data.authenticated.id');\n\n        if (!Ember.isNone(authToken) && !Ember.isNone(memberId)) {\n          authorize = window.btoa(authToken + ':' + memberId);\n        }\n      }\n\n      if (includeAuthToken) {\n        parameters.authorize = authorize;\n      }\n\n      // convert key/val hash to a query string\n      var queryString = Object.keys(parameters).map(function (key) {\n        var paramKey = encodeURIComponent(key);\n        var paramVal = encodeURIComponent(parameters[key]);\n\n        return paramKey + '=' + paramVal;\n      }).join('&');\n\n      // no leading slash\n      path = path.replace(/^\\/+/g, '');\n      var queryPath = Ember.isEmpty(queryString) ? path : [path, queryString].join('?');\n      var interopUrl = [_settings.default.get('react_app_url'), queryPath].join('/');\n\n      return interopUrl;\n    }\n  });\n});","define('busy-app/services/launch-darkly', ['exports', '@busy-web/ember-cli-launch-darkly/services/launch-darkly'], function (exports, _launchDarkly) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _launchDarkly.default;\n    }\n  });\n});","define(\"busy-app/services/liquid-fire-transitions\", [\"exports\", \"liquid-fire/transition-map\"], function (exports, _transitionMap) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _transitionMap.default;\n});","define('busy-app/services/modal-dialog', ['exports', 'busy-app/config/environment'], function (exports, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var computed = Ember.computed,\n      Service = Ember.Service;\n\n\n  function computedFromConfig(prop) {\n    return computed(function () {\n      return _environment.default['ember-modal-dialog'] && _environment.default['ember-modal-dialog'][prop];\n    });\n  }\n\n  exports.default = Service.extend({\n    hasEmberTether: computedFromConfig('hasEmberTether'),\n    hasLiquidWormhole: computedFromConfig('hasLiquidWormhole'),\n    hasLiquidTether: computedFromConfig('hasLiquidTether'),\n    destinationElementId: computed(function () {\n      /*\n        everywhere except test, this property will be overwritten\n        by the initializer that appends the modal container div\n        to the DOM. because initializers don't run in unit/integration\n        tests, this is a nice fallback.\n      */\n      if (_environment.default.environment === 'test') {\n        return 'ember-testing';\n      }\n    })\n  });\n});","define('busy-app/services/moment', ['exports', 'ember-moment/services/moment', 'busy-app/config/environment'], function (exports, _moment, _environment) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  var get = Ember.get;\n  exports.default = _moment.default.extend({\n    defaultFormat: get(_environment.default, 'moment.outputFormat')\n  });\n});","define('busy-app/services/pay-period', ['exports', '@busy-web/utils', 'busy-app/utils/organization/pay-period'], function (exports, _utils, _payPeriod) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\torganizationPayPeriod: Ember.computed.alias('auth.organizationPayPeriod'),\n\n\t\t/**\n   * Gets a single payperiod that the timestamp fits within\n   *\n   * @public\n   * @method getPayPeriod\n   * @param timestamp {number}\n   * @return {object} The payPeriod Object\n   */\n\t\tgetPayPeriod: function getPayPeriod() {\n\t\t\tvar timestamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _utils.Time.timestamp();\n\n\t\t\treturn callWithLegacySupport(this, _payPeriod.getPayPeriod, timestamp);\n\t\t},\n\n\n\t\t/**\n   * Generates a list of pay periods from the timestamp provided\n   * back to the number of periods asked for.\n   *\n   * @public\n   * @method getPayPeriodRange\n   * @param timestamp {number} start time for generating the periods\n   * @param periods {number} number of periods to genrate\n   * @return {array}\n   */\n\t\tgetPayPeriodRange: function getPayPeriodRange(timestamp, periods) {\n\t\t\treturn callWithLegacySupport(this, _payPeriod.getPayPeriodRange, timestamp, periods);\n\t\t},\n\t\tgetPayPeriodDateRange: function getPayPeriodDateRange(start, end) {\n\t\t\tvar excludeEnd = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\treturn callWithLegacySupport(this, _payPeriod.getPayPeriodDateRange, start, end, excludeEnd);\n\t\t},\n\t\tgetPreviousPayPeriod: function getPreviousPayPeriod() {\n\t\t\tvar payPeriod = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getPayPeriod();\n\n\t\t\tvar dayBefore = Ember.get(payPeriod, 'startDate').subtract(1, 'day').unix();\n\n\t\t\treturn this.getPayPeriod(dayBefore);\n\t\t},\n\t\tgetNextPayPeriod: function getNextPayPeriod() {\n\t\t\tvar payPeriod = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getPayPeriod();\n\n\t\t\tvar dayAfter = Ember.get(payPeriod, 'endDate').add(1, 'day').unix();\n\n\t\t\treturn this.getPayPeriod(dayAfter);\n\t\t},\n\n\n\t\t// index 0 is current, index -1 is previous, index 1 is next\n\t\tgetPayPeriodByIndex: function getPayPeriodByIndex(index) {\n\t\t\tvar _this = this;\n\n\t\t\tvar payPeriod = this.getPayPeriod(_utils.Time.timestamp());\n\n\t\t\tif (index > 0) {\n\t\t\t\treturn Array.from({ length: index }).reduce(function (acc) {\n\t\t\t\t\treturn _this.getNextPayPeriod(acc);\n\t\t\t\t}, payPeriod);\n\t\t\t} else if (index < 0) {\n\t\t\t\tindex = Math.abs(index);\n\t\t\t\treturn Array.from({ length: index }).reduce(function (acc) {\n\t\t\t\t\treturn _this.getPreviousPayPeriod(acc);\n\t\t\t\t}, payPeriod);\n\t\t\t} else {\n\t\t\t\treturn payPeriod; // index 0\n\t\t\t}\n\t\t}\n\t});\n\n\n\tvar callWithLegacySupport = function callWithLegacySupport(target, func) {\n\t\tfor (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\t\targs[_key - 2] = arguments[_key];\n\t\t}\n\n\t\targs.unshift(getPeriods(target));\n\n\t\tvar result = func.apply(undefined, args);\n\t\tif (!Ember.isEmpty(result) && Array.isArray(result)) {\n\t\t\treturn result.map(function (obj) {\n\t\t\t\treturn createPayPeriodObject(target, obj);\n\t\t\t});\n\t\t}\n\t\treturn createPayPeriodObject(target, result);\n\t};\n\n\tvar getPeriods = function getPeriods(target) {\n\t\tvar payPeriods = Ember.get(target, 'auth.organizationPayPeriod');\n\n\t\tif (!Ember.isNone(payPeriods) && payPeriods.toArray) {\n\t\t\tpayPeriods = payPeriods.toArray();\n\t\t}\n\n\t\tif (Ember.isNone(payPeriods)) {\n\t\t\tpayPeriods = [];\n\t\t}\n\t\treturn payPeriods;\n\t};\n\n\t/**\n  * creates a pay period data object to provide the\n  * client with.\n  *\n  * @public\n  * @method createPayPeriodObject\n  * @param startDate {object} moment date object\n  * @param endDate {object} moment date object\n  * @return {object}\n  */\n\tvar createPayPeriodObject = function createPayPeriodObject(target, _ref) {\n\t\tvar start = _ref.start,\n\t\t    end = _ref.end,\n\t\t    type = _ref.type;\n\n\t\tvar owner = Ember.getOwner(target);\n\t\treturn PayPeriodObject.create(owner.ownerInjection(), { type: type, start: start, end: end, startDate: _utils.Time.date(start), endDate: _utils.Time.date(end) });\n\t};\n\n\tvar PayPeriodObject = Ember.Object.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\ttype: null,\n\t\tstart: null,\n\t\tend: null,\n\n\t\tstartDate: null,\n\t\tendDate: null,\n\n\t\tisCurrentPeriod: Ember.computed('start', 'end', function () {\n\t\t\tvar today = _utils.Time.timestamp();\n\t\t\tvar isCurrentPeriod = false;\n\t\t\tif (Ember.get(this, 'start') < today && today < Ember.get(this, 'end')) {\n\t\t\t\tisCurrentPeriod = true;\n\t\t\t}\n\t\t\treturn isCurrentPeriod;\n\t\t}),\n\n\t\tdateRange: Ember.computed('startDate', 'endDate', function () {\n\t\t\tvar start = _utils.Time.dateFormat(Ember.get(this, 'startDate'), 'MMM D');\n\t\t\tvar end = _utils.Time.dateFormat(Ember.get(this, 'endDate'), 'MMM D YYYY');\n\t\t\tif (Ember.get(this, 'startDate').year() !== Ember.get(this, 'endDate').year()) {\n\t\t\t\tstart = _utils.Time.dateFormat(Ember.get(this, 'startDate'), 'MMM D YYYY');\n\t\t\t}\n\t\t\treturn start + ' - ' + end;\n\t\t}),\n\n\t\tstartDateString: Ember.computed('startDate', function () {\n\t\t\treturn _utils.Time.dateFormat(Ember.get(this, 'startDate'), 'MMM D YYYY');\n\t\t}),\n\n\t\tendDateString: Ember.computed('endDate', function () {\n\t\t\treturn _utils.Time.dateFormat(Ember.get(this, 'endDate'), 'MMM D YYYY');\n\t\t}),\n\n\t\t/**\n  \t * Is the signing feature enabled, signing enabled on the organization, and is this payperiod eligible for signing.\n  \t * Assumes the pay period is attached to the organization of the curent logged in member.\n  \t *\n  \t * @public\n  \t * @method isSignable\n  \t * @return {boolean}\n  \t */\n\t\tisSignable: Ember.computed('features.signatures', 'auth.organization.{isSignaturesEnabled,signatureDate}', 'end', function () {\n\t\t\tif (!Ember.get(this, 'features.signatures') || !Ember.get(this, 'auth.organization.isSignaturesEnabled')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar signatureDate = Ember.get(this, 'auth.organization.signatureDate');\n\t\t\tvar payPeriodEndTime = Ember.get(this, 'end');\n\t\t\tvar startOfToday = _utils.Time.date().startOf('day').unix();\n\n\t\t\treturn payPeriodEndTime >= signatureDate && payPeriodEndTime < startOfToday;\n\t\t})\n\t});\n});","define('busy-app/services/pro-feature', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar DEFAULT_ACTION = function DEFAULT_ACTION() {\n\t\t_logger.default.error('ProFeature', 'No action queued');\n\t\treturn;\n\t}; /**\n     * @module Services\n     *\n     */\n\n\n\tvar ProFeatureManager = Ember.Object.extend({\n\t\tisModalVisible: false,\n\n\t\t_queuedAction: DEFAULT_ACTION,\n\n\t\trequestAction: function requestAction(featureFlag, actionRequested) {\n\t\t\t//Logger.info(this, 'requestAction', { featureFlag, actionRequested });\n\n\t\t\tif (this.allowProFeature(featureFlag)) {\n\t\t\t\tactionRequested();\n\t\t\t} else {\n\t\t\t\t//Logger.warn(this, 'requestAction', 'access denied', { featureFlag, actionRequested });\n\t\t\t\tthis.onDeny(actionRequested);\n\t\t\t}\n\t\t},\n\t\tonDeny: function onDeny(actionRequested) {\n\t\t\t//Logger.info(this, 'onDeny', { actionRequested });\n\n\t\t\tthis.set('_queuedAction', actionRequested);\n\t\t\tthis.openModal();\n\t\t},\n\t\tonAllow: function onAllow() {\n\t\t\tvar fn = this.get('_queuedAction');\n\n\t\t\t_logger.default.info(this, 'onAllow', { fn: fn });\n\n\t\t\tif (typeof fn === 'function') {\n\t\t\t\tfn();\n\t\t\t} else {\n\t\t\t\t_logger.default.error(this, 'onAllow', 'queued action not a valid function', { fn: fn });\n\t\t\t}\n\n\t\t\tthis.set('_queuedAction', DEFAULT_ACTION);\n\t\t},\n\t\topenModal: function openModal() {\n\t\t\tthis.set('isModalVisible', true);\n\t\t},\n\t\tcloseModal: function closeModal() {\n\t\t\tthis.set('isModalVisible', false);\n\t\t}\n\t});\n\n\t/**\n  * `Services/ProFeature`\n  *\n  * @class ProFeature\n  * @namespace Services\n  * @extends Services\n  */\n\texports.default = Ember.Service.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tgetManager: function getManager() {\n\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\targs[_key] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar props = Object.assign({\n\t\t\t\tallowProFeature: this.allowProFeature.bind(this) // pass the method bound to this service so that the features service works\n\t\t\t}, args);\n\n\t\t\treturn ProFeatureManager.create(props);\n\t\t},\n\t\tstartTrial: function startTrial() {\n\t\t\t_logger.default.warn(this, 'startTrial');\n\t\t\treturn this.get('subscription').startTrial();\n\t\t},\n\t\tstartUpgrade: function startUpgrade() {\n\t\t\t_logger.default.warn(this, 'startUpgrade');\n\t\t\treturn this.get('subscription').startUpgrade();\n\t\t},\n\n\n\t\t// determine if user is allowed access to the specified feature\n\t\tallowProFeature: function allowProFeature(featureFlag) {\n\t\t\t//Logger.info(this, 'allowProFeature', { featureFlag });\n\t\t\treturn this.get('features').isEnabled(featureFlag);\n\t\t}\n\t});\n});","define('busy-app/services/raven', ['exports', 'ember-cli-sentry/services/raven'], function (exports, _raven) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Services\n  *\n  */\n\tvar ignoreList = [\"TransitionAborted\", \"Call Aborted\", \"Not Authorized\", \"The adapter operation was aborted\", \"invalid credentials\"];\n\n\t/**\n  * `Services/Raven`\n  *\n  * Sentry Error logger.\n  *\n  * @class Raven\n  * @namespace Services\n  * @extends Service\n  * @uses Services.Auth\n  */\n\texports.default = _raven.default.extend({\n\t\t/**\n   * @private\n   * @property auth\n   * @type Services.Auth\n   */\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tinit: function init() {\n\t\t\tthis._super.apply(this, arguments);\n\n\t\t\tthis.setContext();\n\t\t},\n\n\n\t\tsetContext: Ember.observer('auth.member.id', function () {\n\t\t\tif (!Ember.isNone(this.get('auth.member.id'))) {\n\t\t\t\twindow.Raven.setUserContext({\n\t\t\t\t\tid: this.get('auth.member.id'),\n\t\t\t\t\tname: this.get('auth.member.fullName')\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t//\tcaptureException(error, extra) {\n\t\t//\t\tdebugger;\n\t\t//\t\textra = extra || {};\n\t\t//\t\tif (error && error.errors) {\n\t\t//\t\t\textra.errors = error.errors;\n\t\t//\t\t}\n\t\t//\n\t\t//\t\tif (error && error.hash) {\n\t\t//\t\t\textra.hash = error.hash;\n\t\t//\t\t}\n\t\t//\n\t\t//\t\tif (window.FS) {\n\t\t//\t\t\textra.fullstory = window.FS.getCurrentSessionURL();\n\t\t//\t\t}\n\t\t//\n\t\t//\n\t\t//\t\twindow.Raven.captureException(error, extra);\n\t\t//\t},\n\t\t//\n\t\t//\tcaptureMessage(/* message */) {\n\t\t//\t\treturn this._super(...arguments);\n\t\t//\t},\n\t\t//\n\t\t//\t\tenableGlobalErrorCatching() {\n\t\t//\t\t\tthis._super(...arguments);\n\t\t//\t\t},\n\t\t//\t\t\tif (this.get('isRavenUsable') && !this.get('globalErrorCatchingInitialized')) {\n\t\t//\t\t\tdebugger;\n\t\t//\t\t\tvar _oldOnError = onerror;\n\t\t//\t\t\tonerror = (reason) => {\n\t\t//\t\t\t\tdebugger;\n\t\t//\t\t\t\tif(this.ignoreError(reason)) {\n\t\t//\t\t\t\t\treturn;\n\t\t//\t\t\t\t}\n\t\t//\n\t\t//\t\t\t\tconst name = this.getName(reason);\n\t\t//\t\t\t\tif(reason instanceof Error) {\n\t\t//\t\t\t\t\treason.name = name;\n\t\t//\t\t\t\t\tthis.captureException(reason);\n\t\t//\t\t\t\t} else {\n\t\t//\t\t\t\t\tthis.captureMessage(name, {\n\t\t//\t\t\t\t\t\textra: { reason: reason }\n\t\t//\t\t\t\t\t});\n\t\t//\t\t\t\t}\n\t\t//\n\t\t//\t\t\t\tif(typeof _oldOnError === 'function') {\n\t\t//\t\t\t\t\t_oldOnError.call(this, reason);\n\t\t//\t\t\t\t}\n\t\t//\t\t\t};\n\t\t//\n\t\t//\t\t\tthis.set('globalErrorCatchingInitialized', true);\n\t\t//\t\t}\n\t\t//\n\t\t//\t\treturn this;\n\t\t//\t},\n\n\t\t//\tgetName(err) {\n\t\t//\t\treturn err.name || err.statusText || err.message || this.get('unhandledPromiseErrorMessage');\n\t\t//\t},\n\n\t\tignoreError: function ignoreError(err) {\n\t\t\t//\tif (err.errors && !err.status) {\n\t\t\t//\t\tif (!isNone(err.errors[0]) && typeof err.errors[0] === 'object') {\n\t\t\t//\t\t\terr.status = parseInt(err.errors[0].status, 10);\n\t\t\t//\t\t\terr.message = err.errors[0].detail;\n\t\t\t//\t\t\terr.name = err.errors[0].title;\n\t\t\t//\t\t} else {\n\t\t\t//\t\t\terr.name = err.errors[0];\n\t\t\t//\t\t}\n\t\t\t//\t}\n\t\t\tif (err.status && (err.status === 401 || err.status === 0)) {\n\t\t\t\treturn true;\n\t\t\t} else if (Ember.isNone(err) || ignoreList.indexOf(err.name) !== -1 || ignoreList.indexOf(err.message) !== -1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n});","define('busy-app/services/session', ['exports', 'ember-simple-auth/services/session'], function (exports, _session) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _session.default;\n});","define('busy-app/services/signature', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tstore: Ember.inject.service('store'),\n\n\t\tmember: Ember.computed.alias('auth.member.content'),\n\t\torganization: Ember.computed.alias('auth.organization.content'),\n\n\t\tisTimecardSigningEnabled: Ember.computed.and('features.signatures', 'organization.isSignaturesEnabled'),\n\t\tisTimecardSupervisorSigningEnabled: Ember.computed.and('isTimecardSigningEnabled', 'organization.authoritativeSignature'),\n\n\t\tsignatureMode: Ember.computed('features.signatures-supervisor', 'isTimecardSupervisorSigningEnabled', function () {\n\t\t\treturn this.get('features.signatures-supervisor') && this.get('isTimecardSupervisorSigningEnabled') ? 'supervisor' : 'base';\n\t\t}),\n\t\tisSignatureModeSupervisor: Ember.computed.equal('signatureMode', 'supervisor'),\n\t\tisSignatureModeBase: Ember.computed.equal('signatureMode', 'base'),\n\n\t\tisTimecardMine: Ember.computed('auth.memberId', 'member.id', function () {\n\t\t\treturn this.get('auth.memberId') === this.get('member.id');\n\t\t}),\n\n\t\tisSupervisor: Ember.computed('member', function () {\n\t\t\tvar supervisorAction = 'manageTimeEntries';\n\t\t\tvar member = this.get('member');\n\n\t\t\tif (Ember.isNone(member) || Ember.isNone(member.get('id'))) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.get('access').canTakeActionFor(supervisorAction, member);\n\t\t}),\n\n\t\tgetNeedsTimecardSignature: function getNeedsTimecardSignature(memberId) {\n\t\t\tvar _this = this;\n\n\t\t\tvar previousPayPeriodBounds = this.getPreviousPayPeriodBounds();\n\t\t\tvar isPayPeriodSignable = this.isPayPeriodSignable(previousPayPeriodBounds);\n\n\t\t\t// previous pay period is signabled, and the current user is eligible to sign\n\t\t\tif (isPayPeriodSignable && (this.get('isTimecardMine') || !this.get('isSupervisor'))) {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tmember_id: memberId,\n\t\t\t\t\tstart_time: previousPayPeriodBounds.get('start'),\n\t\t\t\t\tend_time: previousPayPeriodBounds.get('end'),\n\t\t\t\t\tcanceled: '_-NULL-_',\n\t\t\t\t\tedited: '_-NULL-_'\n\t\t\t\t};\n\n\t\t\t\treturn this.get('store').query('member-time-document', queryParams).then(function (docs) {\n\n\t\t\t\t\t// if there is no valid MemberTimeDocument for this period, a signature must be needed\n\t\t\t\t\tif (Ember.isEmpty(docs)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar hasValidSignature = docs.any(function (doc) {\n\t\t\t\t\t\tif (_this.get('isSignatureModeSupervisor') && _this.get('isSupervisor')) {\n\t\t\t\t\t\t\treturn doc.get('hasBothValidSignatures');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn doc.get('hasValidSelfSignature');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn !hasValidSignature;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(false);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Pay Periods\n   *\n   */\n\n\t\t/**\n   * Is signing enabled, and is the provided payperiod eligible for signing\n   *\n   * @public\n   * @method isPayPeriodSignable\n   * @param {Models.PayPeriodMemberSeconds} payPeriod\n   * @return {boolean}\n   */\n\t\tisPayPeriodSignable: function isPayPeriodSignable(payPeriod) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2);\n\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\tvar signatureDate = this.get('organization.signatureDate');\n\t\t\tvar payPeriodStartTime = payPeriod.get('start');\n\t\t\tvar payPeriodEndTime = payPeriod.get('end');\n\t\t\tvar startOfToday = _utils.Time.date().startOf('day').unix();\n\n\t\t\treturn this.get('isTimecardSigningEnabled') && payPeriodStartTime >= signatureDate && payPeriodEndTime < startOfToday;\n\t\t},\n\t\tgetCurrentPayPeriodBounds: function getCurrentPayPeriodBounds() {\n\t\t\tvar todayStart = _utils.Time.date().startOf('day').unix();\n\t\t\tvar currentPayPeriodBounds = this.get('payPeriods').getPayPeriod(todayStart);\n\n\t\t\treturn currentPayPeriodBounds;\n\t\t},\n\t\tgetPreviousPayPeriodBounds: function getPreviousPayPeriodBounds() {\n\t\t\tvar currentPayPeriodBounds = this.getCurrentPayPeriodBounds();\n\t\t\tvar previousPayPeriodBounds = this.get('payPeriods').getPayPeriod(currentPayPeriodBounds.get('start') - 1);\n\n\t\t\treturn previousPayPeriodBounds;\n\t\t},\n\n\n\t\t/**\n   *\n   *\n    * @public\n   * @method getStateForPayPeriod\n   * @param {Models.PayPeriodMemberSeconds} payPeriod\n   * @param {Models.MemberTimeDocument[]} [memberTimeDocuments]\n   * @return {object}\n   */\n\t\tgetStateForPayPeriod: function getStateForPayPeriod(payPeriod, memberTimeDocuments) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2);\n\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\t// don't bother looking up signature state if this pay period isn't signable\n\t\t\tif (Ember.isNone(payPeriod) || !payPeriod.get('isSignable')) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t} else {\n\t\t\t\treturn this.getByMemberPayPeriod(payPeriod, memberTimeDocuments);\n\t\t\t}\n\t\t},\n\t\tgetStateForPreviousPayPeriod: function getStateForPreviousPayPeriod(memberId) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar previousPayPeriodBounds = this.getPreviousPayPeriodBounds();\n\n\t\t\tif (this.isPayPeriodSignable(previousPayPeriodBounds)) {\n\t\t\t\tvar queryParams = {\n\t\t\t\t\tmember_id: memberId,\n\t\t\t\t\tstart_time: previousPayPeriodBounds.get('start'),\n\t\t\t\t\tend_time: previousPayPeriodBounds.get('end')\n\t\t\t\t};\n\n\t\t\t\treturn this.getPayPeriod(queryParams).then(function (ppms) {\n\t\t\t\t\tif (Ember.isNone(ppms)) {\n\t\t\t\t\t\treturn ppms;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _this2.getStateForPayPeriod(ppms.get('firstObject'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t},\n\t\tgetPayPeriod: function getPayPeriod(queryParams) {\n\t\t\treturn this.get('store').query('pay-period-member-seconds', queryParams);\n\t\t},\n\n\n\t\t/**\n   *\n   *\n   * @public\n   * @method getStateForMultiplePayPeriods\n   * @param {Models.PayPeriodMemberSeconds} payPeriod\n   * @param {Models.MemberTimeDocument[]} [memberTimeDocuments]\n   * @return {Model.MemberTimeDocument[]}\n   */\n\t\tgetStateForMultiplePayPeriods: function getStateForMultiplePayPeriods(payPeriods, memberTimeDocuments) {\n\t\t\tvar _this3 = this;\n\n\t\t\t_utils.Assert.isArray(payPeriods);\n\n\t\t\tif (!Ember.isNone(memberTimeDocuments)) {\n\t\t\t\t_utils.Assert.isArray(memberTimeDocuments);\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.all(payPeriods.map(function (payPeriod) {\n\t\t\t\treturn _this3.getStateForPayPeriod(payPeriod, memberTimeDocuments);\n\t\t\t}));\n\t\t},\n\n\n\t\t/**\n   * Get the current `memberTimeDocument` for the provided `payPeriodMemberSeconds` object.\n   * Optionally accepts a `memberTimeDocuments` array to filter against as a cache instead of performing an API lookup\n   *\n   * @public\n   * @method getByMemberPayPeriod\n   * @param {Models.PayPeriodMemberSeconds} payPeriod\n   * @param {Models.MemberTimeDocument[]} [memberTimeDocuments]\n   * @return {Model.MemberTimeDocument}\n   */\n\t\tgetByMemberPayPeriod: function getByMemberPayPeriod(payPeriod, memberTimeDocuments) {\n\t\t\tvar _this4 = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2);\n\t\t\t_utils.Assert.isObject(payPeriod);\n\n\t\t\tif (!Ember.isNone(memberTimeDocuments) && !Array.isArray(memberTimeDocuments)) {\n\t\t\t\tmemberTimeDocuments = memberTimeDocuments.toArray();\n\t\t\t}\n\n\t\t\tvar filterQuery = {\n\t\t\t\tstartTime: payPeriod.get('startTime'),\n\t\t\t\tendTime: payPeriod.get('endTime'),\n\t\t\t\tmemberId: payPeriod.get('memberId')\n\t\t\t};\n\t\t\tvar dbQuery = {\n\t\t\t\tstart_time: payPeriod.get('startTime'),\n\t\t\t\tend_time: payPeriod.get('endTime'),\n\t\t\t\tmember_id: payPeriod.get('memberId'),\n\t\t\t\t_desc: ['submitted_on']\n\t\t\t};\n\n\t\t\tvar promise = void 0;\n\t\t\tif (Array.isArray(memberTimeDocuments)) {\n\t\t\t\tpromise = this.filterByQuery(memberTimeDocuments, filterQuery);\n\t\t\t} else {\n\t\t\t\tpromise = this.queryMemberTimeDocuments(dbQuery);\n\t\t\t}\n\n\t\t\treturn promise.then(function (docs) {\n\t\t\t\tvar cleanedDocs = _this4.cleanupMemberDocResults(docs);\n\n\t\t\t\tif (Ember.isEmpty(cleanedDocs)) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// if the first document is valid, use it, if not, create a new temp document\n\t\t\t\tvar currentDoc = cleanedDocs.get('firstObject.isValid') ? cleanedDocs.shift() : _this4.get('store').createRecord('member-time-document', {\n\t\t\t\t\tmemberId: payPeriod.get('memberId'),\n\t\t\t\t\tstartTime: payPeriod.get('startTime'),\n\t\t\t\t\tendTime: payPeriod.get('endTime')\n\t\t\t\t});\n\n\t\t\t\tvar hasPreviousSelfSignature = cleanedDocs.any(function (doc) {\n\t\t\t\t\treturn doc.get('isSelfSigned');\n\t\t\t\t});\n\t\t\t\tvar hasPreviousAuthoritativeSignature = cleanedDocs.any(function (doc) {\n\t\t\t\t\treturn doc.get('isAuthoritativeSigned');\n\t\t\t\t});\n\n\t\t\t\tcurrentDoc.set('hasPreviousSelfSignature', hasPreviousSelfSignature);\n\t\t\t\tcurrentDoc.set('hasPreviousAuthoritativeSignature', hasPreviousAuthoritativeSignature);\n\n\t\t\t\treturn currentDoc;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Remove empty and `canceled` records, sort the result set by `createdOn`\n   *\n   * @public\n   * @method cleanupMemberDocResults\n   * @param {Models.MemberTimeDocument[]} memberTimeDocuments\n   * @return {Model.MemberTimeDocument[]}\n   */\n\t\tcleanupMemberDocResults: function cleanupMemberDocResults(docs) {\n\t\t\treturn docs.toArray() // ensure it's an array\n\t\t\t.compact() // no empty results\n\t\t\t.filter(function (doc) {\n\t\t\t\treturn !doc.get('isCanceled');\n\t\t\t}) // no cancelled document requests\n\t\t\t.sortBy('createdOn').reverse(); // newest documents first\n\t\t},\n\n\n\t\t/**\n   * Exludes `canceled` documents by default\n   *\n   * @public\n   * @method queryMemberTimeDocuments\n   * @param {params} options\n   * @async\n   * @return {Object}\n   */\n\t\tqueryMemberTimeDocuments: function queryMemberTimeDocuments() {\n\t\t\tvar params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(params);\n\n\t\t\tif (this.get('features.signatures')) {\n\t\t\t\tvar defaultParams = {\n\t\t\t\t\tcanceled: '_-NULL-_',\n\t\t\t\t\t_desc: ['submitted_on'],\n\t\t\t\t\tpage_size: 999999\n\t\t\t\t};\n\n\t\t\t\tvar queryParams = Ember.merge(defaultParams, params);\n\t\t\t\treturn this.get('store').query('member-time-document', queryParams);\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve(Ember.A());\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Create a `selfSignuture` object\n   *\n   * @public\n   * @method createSelfSignature\n   * @param {string} signatureSvg\n   * @chainable\n   * @return {Model.SelfSignature}\n   */\n\t\tcreateMemberTimeDocument: function createMemberTimeDocument(startTime, endTime, memberId) {\n\t\t\treturn this.get('store').createRecord('memberTimeDocument', {\n\t\t\t\t// id: UUID.generate(),\n\t\t\t\tmemberId: memberId,\n\t\t\t\tstartTime: startTime,\n\t\t\t\tendTime: endTime\n\t\t\t}).save();\n\t\t},\n\n\n\t\t/**\n   * Create a `selfSignuture` object\n   *\n   * @public\n   * @method createSelfSignature\n   * @param {string} signatureSvg\n   * @chainable\n   * @return {Model.SelfSignature}\n   */\n\t\tcreateSelfSignature: function createSelfSignature(memberTimeDocument, signatureSvg) {\n\t\t\treturn this.createSignature('selfSignature', memberTimeDocument, signatureSvg);\n\t\t},\n\n\n\t\t/**\n   * Create a signture object of the specified type\n   *\n   * @public\n   * @method createSignature\n   * @param {string} signatureType\n   * @param {string} signatureSvg\n   * @chainable\n   * @return {Model}\n   */\n\t\tcreateSignature: function createSignature(signatureType, memberTimeDocument, signatureSvg) {\n\t\t\tvar createdOnOffset = _utils.Time.timezone();\n\t\t\tvar createdOnDST = _utils.Time.isDST();\n\n\t\t\treturn this.get('store').createRecord(signatureType, {\n\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\tmemberId: memberTimeDocument.get('memberId'),\n\t\t\t\tproxyMemberId: this.get('member.id'),\n\t\t\t\tsignature: signatureSvg,\n\n\t\t\t\tcreatedOnOffset: createdOnOffset,\n\t\t\t\tcreatedOnDST: createdOnDST\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Save `selfSignature`, attach to `memberTimeDocument` and save object, update `memberLock`\n   *\n   * @public\n   * @method attachSignature\n   * @param {Models.MemberTimeDocument} inMemberTimeDocument\n   * @param {Models.SelfSignature} inSelfSignature\n   * @async\n   * @chainable\n   * @return {object}\n   */\n\t\tattachSignatureAndSave: function attachSignatureAndSave(memberTimeDocument, selfSignature) {\n\t\t\tvar _this5 = this;\n\n\t\t\treturn selfSignature.save().then(function (newSelfSignature) {\n\n\t\t\t\tmemberTimeDocument.set('selfSignature', newSelfSignature);\n\t\t\t\tmemberTimeDocument.set('selfSignatureId', newSelfSignature.get('id'));\n\n\t\t\t\treturn _this5.saveMemberTimeDocument(memberTimeDocument);\n\t\t\t});\n\t\t},\n\t\tattachSupervisorSignatureAndSave: function attachSupervisorSignatureAndSave(memberTimeDocument, authoritativeSignature) {\n\t\t\tvar _this6 = this;\n\n\t\t\treturn authoritativeSignature.save().then(function (newAuthoritativeSignature) {\n\n\t\t\t\tmemberTimeDocument.set('authoritativeSignature', newAuthoritativeSignature);\n\t\t\t\tmemberTimeDocument.set('authoritativeSignatureId', newAuthoritativeSignature.get('id'));\n\n\t\t\t\treturn _this6.saveMemberTimeDocument(memberTimeDocument);\n\t\t\t});\n\t\t},\n\t\tsaveMemberTimeDocument: function saveMemberTimeDocument(memberTimeDocument) {\n\t\t\tvar _this7 = this;\n\n\t\t\treturn memberTimeDocument.save().then(function (newMemberTimeDocument) {\n\t\t\t\treturn _this7.updateLockOnSignature(newMemberTimeDocument);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Update the memberLock to the end of the pay period.\n   * Returns the memberTimeDocument not the memberLock object\n   *\n   * @public\n   * @method updateLockOnSignature\n   * @param {Models.MemberTimeDocument} memberTimeDocument\n   * @async\n   * @chainable\n   * @return {EmberPromise}\n   */\n\t\tupdateLockOnSignature: function updateLockOnSignature(memberTimeDocument) {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar memberId = memberTimeDocument.get('memberId');\n\t\t\tvar payPeriodEnd = memberTimeDocument.get('endTime');\n\n\t\t\t// if `lockOnSelfSignature` is not enabled, short circuit\n\t\t\tif (!this.get('organization.lockOnSelfSignature')) {\n\t\t\t\treturn Ember.RSVP.resolve(memberTimeDocument);\n\t\t\t}\n\n\t\t\treturn this.get('store').queryRecord('member-lock', { member_id: memberId }).then(function (memberLock) {\n\t\t\t\t// if there is a lock, and it's newer than the end of the pay period, leave it alone\n\t\t\t\t// short circuit the method\n\t\t\t\tif (!Ember.isNone(memberLock) && memberLock.get('effectiveDate') >= payPeriodEnd) {\n\t\t\t\t\treturn Ember.RSVP.resolve(memberTimeDocument);\n\t\t\t\t}\n\n\t\t\t\tif (Ember.isNone(memberLock)) {\n\t\t\t\t\t// if there isn't a lock, create a new object\n\t\t\t\t\tmemberLock = _this8.get('store').createRecord('member-lock', {\n\t\t\t\t\t\tmemberId: memberId,\n\t\t\t\t\t\tupdaterMemberId: memberId,\n\t\t\t\t\t\teffectiveDate: payPeriodEnd\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// update lock date to the end of the pay period\n\t\t\t\t\tmemberLock.set('effectiveDate', payPeriodEnd);\n\t\t\t\t}\n\n\t\t\t\t// return the memberTimeDocument not the memberLock object\n\t\t\t\treturn memberLock.save().then(function () {\n\t\t\t\t\treturn memberTimeDocument;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Used by \"breadcrumb\" buttons\n   * \tcontrollers/time-card/pay-period\n   * \tcomponents/time/pay-period/list\n   *\n   * @public\n   * @method getSignatureState\n   * @param {Boolean} isTimecardMine\n   * @param {Boolean} isSupervisor\n   * @param {Object} payPeriodSeconds\n   * @param {Object} features\n   * @param {Object} signature\n   * @param {Object} memberTimeDocument\n   * @return string\n   */\n\t\tgetSignatureState: function getSignatureState(isTimecardMine, isSupervisor, payPeriodSeconds, features, signature, memberTimeDocument) {\n\t\t\tvar supervisorMode = isSupervisor && features.get('signatures-supervisor') && signature.get('isTimecardSupervisorSigningEnabled');\n\n\t\t\t// Logger.info(this, 'feature enabled', features.get('signatures'));\n\t\t\t// Logger.info(this, 'setting enabled', signature.get('isTimecardSigningEnabled'));\n\t\t\t// Logger.info(this, 'signable', payPeriodSeconds.get('isSignable'));\n\t\t\t// Logger.info(this, 'needs resign', memberTimeDocument.get('needsEitherSignatureResign'));\n\t\t\t// Logger.info(this, 'hasPreviousSelfSignature', memberTimeDocument.get('hasPreviousSelfSignature'));\n\t\t\t// Logger.info(this, 'hasPreviousAuthoritativeSignature', memberTimeDocument.get('hasPreviousAuthoritativeSignature'));\n\n\t\t\t// signature feature disabled\n\t\t\tif (!features.get('signatures') || !signature.get('isTimecardSigningEnabled')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// not eligible for signing\n\t\t\telse if (Ember.isNone(payPeriodSeconds) || !payPeriodSeconds.get('isSignable')) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// no rights to sign this pay period\n\t\t\t\telse if (!isTimecardMine && !isSupervisor) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// supervisor signature feature not enabled, or the user is not a supervisor\n\t\t\t\t\t// non-supervisors don't need to know about the status of the supervisor signature\n\t\t\t\t\telse if (!supervisorMode) {\n\t\t\t\t\t\t\tif (Ember.isNone(memberTimeDocument) || Ember.isNone(memberTimeDocument.get('hasValidSelfSignature'))) {\n\t\t\t\t\t\t\t\treturn 'Sign';\n\t\t\t\t\t\t\t} else if (memberTimeDocument.get('hasValidSelfSignature')) {\n\t\t\t\t\t\t\t\treturn 'Signed';\n\t\t\t\t\t\t\t} else if (memberTimeDocument.get('needsSelfSignatureResign')) {\n\t\t\t\t\t\t\t\treturn 'Re-Sign';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn 'Sign';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// features.signatures-supervisor is enabled AND the user is a supervisor\n\t\t\t\t\t\telse if (supervisorMode) {\n\t\t\t\t\t\t\t\tif (Ember.isNone(memberTimeDocument) || Ember.isNone(memberTimeDocument.get('hasBothValidSignatures'))) {\n\t\t\t\t\t\t\t\t\treturn 'Sign';\n\t\t\t\t\t\t\t\t} else if (memberTimeDocument.get('hasBothValidSignatures')) {\n\t\t\t\t\t\t\t\t\treturn 'Signed';\n\t\t\t\t\t\t\t\t} else if (memberTimeDocument.get('needsBothSignatureResign')) {\n\t\t\t\t\t\t\t\t\treturn 'Re-Sign';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'Sign';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t_logger.default.error(this, 'getSignatureState', 'no valid state could be determined', arguments);\n\n\t\t\treturn null;\n\t\t},\n\n\n\t\t// different function signature that can be cleaner to use in some instances\n\t\t// turn a hash of arguments into a list of arguments\n\t\tgetSignatureStateProxy: function getSignatureStateProxy(_ref) {\n\t\t\tvar isTimecardMine = _ref.isTimecardMine,\n\t\t\t    isSupervisor = _ref.isSupervisor,\n\t\t\t    payPeriodSeconds = _ref.payPeriodSeconds,\n\t\t\t    features = _ref.features,\n\t\t\t    signature = _ref.signature,\n\t\t\t    memberTimeDocument = _ref.memberTimeDocument;\n\n\t\t\treturn this.getSignatureState(isTimecardMine, isSupervisor, payPeriodSeconds, features, signature, memberTimeDocument);\n\t\t},\n\n\n\t\t/**\n   * apply a hash of filters to the supplied recordset\n   *\n   * @public\n   * @method filterByQuery\n   * @param {Array} original - the recordset to filter\n   * @param {Object} filters - hash of filters to apply\n   * @return {Array}\n   */\n\t\tfilterByQuery: function filterByQuery(original, filters) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isArray(original);\n\t\t\t_utils.Assert.isObject(filters);\n\n\t\t\tvar filtered = Object.keys(filters).reduce(function (acc, key) {\n\t\t\t\treturn acc.filterBy(key, filters[key]);\n\t\t\t}, original);\n\n\t\t\treturn Ember.RSVP.resolve(filtered);\n\t\t},\n\n\n\t\t/**\n   *\tdevelopment mockups\n   *\n   */\n\n\t\t// dumpMTD(tag, mtd) {\n\t\t// \tif (Array.isArray(mtd)) {\n\t\t// \t\tmtd.forEach(d => this.dumpMTD(tag, d));\n\t\t// \t\treturn;\n\t\t// \t}\n\t\t//\n\t\t// \tif (!isNone(mtd) && !isEmpty(mtd)) {\n\t\t// \t\tLogger.info(\n\t\t// \t\t\ttag,\n\t\t// \t\t\tTime.date(mtd.get('createdOn')).format('L LTS'),\n\t\t// \t\t\tmtd.getProperties(\n\t\t// \t\t\t\t'memberId',\n\t\t// \t\t\t\t// 'selfSignatureId',\n\t\t// \t\t\t\t'isSelfSigned',\n\t\t// \t\t\t\t// 'isEdited',\n\t\t// \t\t\t\t'hasValidSelfSignature',\n\t\t// \t\t\t\t'needsSelfSignatureResign',\n\t\t// \t\t\t\t'hasPreviousSelfSignature',\n\t\t// \t\t\t),\n\t\t// \t\t);\n\t\t// \t}\n\t\t// },\n\n\t\tmockApiCall: function mockApiCall() {\n\t\t\tvar result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\t\tvar delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\treturn resolve(result);\n\t\t\t\t}, delay);\n\t\t\t}).then(function (results) {\n\t\t\t\t_logger.default.info('Signature', 'mockApiCall', delay, { results: results });\n\t\t\t\treturn results;\n\t\t\t});\n\t\t},\n\t\tmockQueryMemberTimeDocument: function mockQueryMemberTimeDocument(params, length) {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar startTime = params.startTime,\n\t\t\t    endTime = params.endTime,\n\t\t\t    memberId = params.memberId;\n\n\n\t\t\treturn Ember.RSVP.all(Array.from({ length: length }).map(function () {\n\t\t\t\tvar hasDoc = 0; //!!Math.round(Math.random() * 3);\n\n\t\t\t\treturn hasDoc ? _this9.mockApiCall(_this9.mockMemberTimeDocument(startTime, endTime, memberId)) : _this9.mockApiCall(_this9.createMemberTimeDocument(startTime, endTime, memberId));\n\t\t\t}));\n\t\t},\n\t\tmockMemberTimeDocument: function mockMemberTimeDocument(startTime, endTime, memberId) {\n\t\t\tvar now = _utils.Time.date();\n\n\t\t\tvar hasSignature = 1; //!!(Math.round(Math.random() * 3));\n\t\t\tvar isEdited = 0; //!!(hasSignature && !Math.round(Math.random() * 4));\n\t\t\tvar isCanceled = 0; //!!(!Math.round(Math.random() * 4));\n\t\t\tvar createdOn = now.clone().add(-Math.round(Math.random() * 10000), 'seconds');\n\n\t\t\tvar memberTimeDocument = this.createMemberTimeDocument(startTime, endTime, memberId);\n\n\t\t\tmemberTimeDocument.setProperties({\n\t\t\t\tselfSignatureId: hasSignature ? _utils.UUID.generate() : null,\n\t\t\t\t// authoritativeSignatureId: null,\n\t\t\t\tedited: isEdited ? now.unix() : null,\n\t\t\t\tcanceled: isCanceled ? now.unix() : null,\n\t\t\t\tcreatedOn: createdOn.unix()\n\t\t\t});\n\n\t\t\treturn memberTimeDocument;\n\t\t}\n\t});\n});","define('busy-app/services/state', ['exports', 'ember-data', '@busy-web/utils'], function (exports, _emberData, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.deserializeModel = exports.deserializeModelArray = undefined;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar deserializeModelArray = exports.deserializeModelArray = function deserializeModelArray(modelArray) {\n\t\t(true && !(Array.isArray(modelArray) || Array.isArray(Ember.get(modelArray, 'content'))) && Ember.assert('deserializeModelArray requires an Array, you passed [ ' + (typeof modelArray === 'undefined' ? 'undefined' : _typeof(modelArray)) + ' ]', Array.isArray(modelArray) || Array.isArray(Ember.get(modelArray, 'content'))));\n\n\t\t// get state array\n\n\t\treturn modelArray.map(function (model) {\n\t\t\treturn modelToState(model);\n\t\t});\n\t};\n\n\tvar deserializeModel = exports.deserializeModel = function deserializeModel(model) {\n\t\t(true && !(isModel(model)) && Ember.assert('deserializeModel requires a DS.Model, you passed [ ' + (typeof model === 'undefined' ? 'undefined' : _typeof(model)) + ' ]', isModel(model)));\n\n\t\t// create state from model\n\n\t\treturn model.toJSON({ includeId: true });\n\t};\n\n\tvar modelToState = function modelToState(model) {\n\t\tvar data = model.toJSON({ includeId: true });\n\t\treturn Object.assign({}, data);\n\t};\n\n\tvar isArray = function isArray(value) {\n\t\treturn !Ember.isNone(value) && Array.isArray(value);\n\t};\n\n\tvar isObject = function isObject(value) {\n\t\treturn !Ember.isNone(value) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !isArray(value);\n\t};\n\n\tvar isModel = function isModel(value) {\n\t\treturn isObject(value) && value instanceof _emberData.default.Model;\n\t};\n\n\t/**\n  * @class StateService\n  *\n  */\n\texports.default = Ember.Service.extend(Ember.Evented, {\n\t\tstore: Ember.inject.service(),\n\n\t\t_store: function _store() {\n\t\t\treturn Ember.get(this, 'store');\n\t\t},\n\t\tfind: function find(type, id) {\n\t\t\treturn this._store().findRecord(type, id).then(function (model) {\n\t\t\t\treturn deserializeModel(model);\n\t\t\t});\n\t\t},\n\t\tfindRecords: function findRecords(type, ids, query, key) {\n\t\t\tquery = Object.assign({}, query);\n\t\t\tkey = !Ember.isEmpty(key) ? key : 'id';\n\n\t\t\treturn this._store().findWhereIn(type, key, ids, query).then(function (modelArray) {\n\t\t\t\treturn deserializeModelArray(modelArray.toArray());\n\t\t\t});\n\t\t},\n\t\tfindAll: function findAll(type, query) {\n\t\t\tquery = Object.assign({}, query);\n\n\t\t\treturn this._store().findAll(type, query).then(function (modelArray) {\n\t\t\t\treturn deserializeModelArray(modelArray.toArray());\n\t\t\t});\n\t\t},\n\t\tqueryRecord: function queryRecord(type, query) {\n\t\t\tquery = Object.assign({}, query);\n\n\t\t\treturn this._store().queryRecord(type, query).then(function (model) {\n\t\t\t\treturn deserializeModel(model);\n\t\t\t});\n\t\t},\n\t\tquery: function query(type, _query) {\n\t\t\t_query = Object.assign({}, _query);\n\n\t\t\treturn this._store().query(type, _query).then(function (modelArray) {\n\t\t\t\treturn deserializeModelArray(modelArray.toArray());\n\t\t\t});\n\t\t},\n\t\tupdateState: function updateState(type, state) {\n\t\t\tvar model = this.__getModel(type, state.id);\n\t\t\tmodel.setProperties(state);\n\n\t\t\tif (Ember.get(model, 'hasDirtyAttributes')) {\n\t\t\t\t// trigger model has changed update\n\t\t\t\tstate = Object.assign({}, state, deserializeModel(model));\n\t\t\t}\n\n\t\t\treturn state;\n\t\t},\n\t\tsaveModel: function saveModel(type, state) {\n\t\t\t// copy state\n\t\t\tstate = Object.assign({}, state);\n\n\t\t\t// find model record and update props\n\t\t\tvar model = this.__getModel(state.__type, state.id);\n\t\t\tmodel.setProperties(state);\n\n\t\t\t// save model to database\n\t\t\treturn model.save().then(function (model) {\n\t\t\t\treturn deserializeModel(model);\n\t\t\t});\n\t\t},\n\t\tcreateModelAndSave: function createModelAndSave(type, state) {\n\t\t\t// create new model record\n\t\t\tvar model = this._store().createRecord(type, state);\n\n\t\t\t// save new model record\n\t\t\treturn model.save().then(function (model) {\n\t\t\t\treturn deserializeModel(model);\n\t\t\t});\n\t\t},\n\t\tcreateState: function createState(type, state) {\n\t\t\tif (!state.id) {\n\t\t\t\tstate.id = _utils.UUID.generate();\n\t\t\t}\n\n\t\t\tvar model = this._store().createRecord(type, state);\n\t\t\treturn deserializeModel(model);\n\t\t},\n\t\tgetState: function getState(type, id) {\n\t\t\tvar model = this.__getModel(type, id);\n\t\t\tif (!Ember.isNone(model)) {\n\t\t\t\treturn deserializeModel(model);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetStateBy: function getStateBy(type, key, id) {\n\t\t\tvar models = this._store().peekAll(type);\n\t\t\tif (models && models.length) {\n\t\t\t\tvar model = models.findBy(key, id);\n\t\t\t\tif (model) {\n\t\t\t\t\treturn deserializeModel(model);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetAllStatesBy: function getAllStatesBy(type, key, id) {\n\t\t\tvar models = this._store().peekAll(type);\n\t\t\tmodels = models.filterBy(key, id);\n\t\t\tif (!Ember.isEmpty(models)) {\n\t\t\t\treturn deserializeModelArray(models);\n\t\t\t}\n\t\t\treturn [];\n\t\t},\n\t\t__getModel: function __getModel(type, id) {\n\t\t\treturn this._store().peekRecord(type, id);\n\t\t}\n\t});\n});","define('busy-app/services/store', ['exports', 'ember-data', '@busy-web/data', '@busy-web/utils', 'busy-app/utils/request-manager', 'busy-app/utils/container', 'busy-app/utils/query-builder'], function (exports, _emberData, _data, _utils, _requestManager, _container, _queryBuilder) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = _emberData.default.Store.extend(_data.StoreMixin, {\n\t\t_maxPageSize: 80,\n\n\t\tfetchContainer: function fetchContainer(models) {\n\t\t\t_utils.Assert.isArray(models);\n\n\t\t\tfor (var _len = arguments.length, types = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\t\ttypes[_key - 1] = arguments[_key];\n\t\t\t}\n\n\t\t\treturn _container.default.apply(undefined, [models].concat(_toConsumableArray(types)));\n\t\t},\n\t\tsocket: function socket(modelType, query) {\n\t\t\t_utils.Assert.isString(modelType);\n\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar socket = owner.factoryFor('util:models.socket').create(owner.ownerInjection());\n\t\t\tsocket.store = this;\n\n\t\t\tif (typeof query === 'string') {\n\t\t\t\treturn socket.findRecord(modelType, query);\n\t\t\t} else {\n\t\t\t\treturn socket.query(modelType, query);\n\t\t\t}\n\t\t},\n\t\tfilter: function filter(type) {\n\t\t\t_utils.Assert.isString(type);\n\n\t\t\tvar filter = Ember.getOwner(this).lookup('util:models.filters.' + type);\n\n\t\t\t(true && !(!Ember.isNone(filter)) && Ember.assert('A Filter does not exist for ' + type.classify(), !Ember.isNone(filter)));\n\n\n\t\t\tfilter.store = this;\n\n\t\t\treturn filter;\n\t\t},\n\t\tdispatcher: function dispatcher(type) {\n\t\t\t_utils.Assert.isString(type);\n\n\t\t\tvar dispatcher = Ember.getOwner(this).lookup('util:models.dispatchers.' + type);\n\n\t\t\t(true && !(!Ember.isNone(dispatcher)) && Ember.assert('No Dispatcher was found for ' + type.classify(), !Ember.isNone(dispatcher)));\n\n\n\t\t\tdispatcher.store = this;\n\n\t\t\treturn dispatcher;\n\t\t},\n\t\tmanager: function manager(managerType) {\n\t\t\t_utils.Assert.isString(managerType);\n\n\t\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\t\tvar owner = Ember.getOwner(this);\n\n\t\t\tvar manager = owner.factoryFor('util:models.managers.' + managerType).class;\n\n\t\t\t(true && !(!Ember.isNone(manager)) && Ember.assert('A manager does not exist for ' + managerType.classify(), !Ember.isNone(manager)));\n\n\n\t\t\targs.unshift(this);\n\n\t\t\tmanager.typeName = managerType;\n\n\t\t\treturn manager.fetch.apply(manager, args);\n\t\t},\n\t\texportCSV: function exportCSV(managerType) {\n\t\t\t_utils.Assert.isString(managerType);\n\n\t\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\t\tvar owner = Ember.getOwner(this);\n\n\t\t\tvar _manager = owner.factoryFor('util:models.managers.' + managerType).class;\n\n\t\t\t(true && !(!Ember.isNone(_manager)) && Ember.assert('A manager does not exist for ' + managerType.classify(), !Ember.isNone(_manager)));\n\n\n\t\t\t_manager.typeName = managerType;\n\n\t\t\tvar manager = _manager._create(owner.ownerInjection(), { content: Ember.A() });\n\t\t\tmanager.store = this;\n\n\t\t\treturn manager._fetch.apply(manager, args).then(function (data) {\n\t\t\t\t// get the csv export util\n\t\t\t\tvar filename = manager.get('filename') || managerType.underscore();\n\t\t\t\tvar exportCSV = owner.lookup('util:csv-export');\n\n\t\t\t\t// get the dataMap for mapping data from this\n\t\t\t\t// manager to the csv format.\n\t\t\t\tvar dataMap = manager.get('dataMap');\n\t\t\t\tvar isReversed = manager.get('isReversedDataMap') || false;\n\n\t\t\t\t(true && !(!Ember.isNone(dataMap)) && Ember.assert('To export a manager to a csv, the manager must provide a dataMap', !Ember.isNone(dataMap)));\n\n\t\t\t\t// set the datamap\n\n\t\t\t\texportCSV.setDataMap(dataMap, isReversed);\n\n\t\t\t\t// get the data from the ProjectParser and pass it\n\t\t\t\t// to exportCSV.setData\n\t\t\t\texportCSV.setData(data.getSorted());\n\n\t\t\t\t// call generate on exportCSV class and pass the file name.\n\t\t\t\texportCSV.generate(filename);\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   *\n   * @method csvExport\n   * @param data {object[]}\n   * @param dataMap {object}\n   * @param filename {string}\n   */\n\t\tcsvExport: function csvExport(data, dataMap) {\n\t\t\tvar filename = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"busybusy\";\n\t\t\tvar isReversed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t\t\tvar bypassGetSorted = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar exportCSV = owner.lookup('util:csv-export');\n\n\t\t\t// set the datamap and\n\t\t\t// set isReversed if the dataMap is formated with label: propertyPath\n\t\t\t// instead of propertyPath: label\n\t\t\texportCSV.setDataMap(dataMap, isReversed);\n\n\t\t\t// get the data from the ProjectParser and pass it\n\t\t\t// to exportCSV.setData\n\t\t\tif (bypassGetSorted) {\n\t\t\t\texportCSV.setData(data);\n\t\t\t} else {\n\t\t\t\texportCSV.setData(data.getSorted());\n\t\t\t}\n\n\t\t\t// call generate on exportCSV class and pass the file name.\n\t\t\texportCSV.generate(filename);\n\n\t\t\treturn Ember.RSVP.resolve();\n\t\t},\n\t\t_filterByQuery: function _filterByQuery(models, query) {\n\t\t\tvar excludeKeys = ['_in', '_desc', '_asc', '_lte', '_gte', '_lt', '_gt', 'page', 'page_size'];\n\t\t\tfor (var key in query) {\n\t\t\t\tif (query.hasOwnProperty(key) && excludeKeys.indexOf(key) === -1) {\n\t\t\t\t\tvar property = Ember.String.camelize(key);\n\n\t\t\t\t\tvar param = query[key];\n\t\t\t\t\tparam = param === '_-NULL-_' ? null : param;\n\t\t\t\t\tif (param === '!_-NULL-_') {\n\t\t\t\t\t\tmodels.removeObjects(models.filterBy(property, null));\n\t\t\t\t\t} else if (param !== '_-DISABLE-_') {\n\t\t\t\t\t\tmodels = models.filterBy(property, param);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn models;\n\t\t},\n\t\tgetter: function getter() {\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\treturn _requestManager.default.create(owner.ownerInjection(), {\n\t\t\t\tstore: this,\n\t\t\t\toperations: Ember.A(),\n\t\t\t\t__storedOperations: Ember.A()\n\t\t\t});\n\t\t},\n\t\tbuildQuery: function buildQuery() {\n\t\t\tvar query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\t\tvar modelName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n\t\t\tif (typeof query === 'string') {\n\t\t\t\tmodelName = query;\n\t\t\t\tquery = {};\n\t\t\t}\n\n\t\t\tvar model = void 0;\n\t\t\tif (!Ember.isEmpty(modelName)) {\n\t\t\t\tvar owner = Ember.getOwner(this);\n\t\t\t\tmodelName = Ember.String.dasherize(modelName);\n\t\t\t\tmodel = owner.factoryFor('model:' + modelName);\n\t\t\t}\n\t\t\treturn (0, _queryBuilder.default)(query, modelName, model.class);\n\t\t}\n\t}\n\n\t//_scheduleFetch(internalModel, options) {\n\t//\tdebugger;\n\t//  if (internalModel._loadingPromise) {\n\t//    return internalModel._loadingPromise;\n\t//  }\n\n\t//  let { id, modelName } = internalModel;\n\t//  let resolver = EmberPromise.defer(`Fetching ${modelName}' with id: ${id}`);\n\t//  let pendingFetchItem = {\n\t//    internalModel,\n\t//    resolver,\n\t//    options\n\t//  };\n\n\t//  let promise = resolver.promise;\n\n\t//  internalModel.loadingData(promise);\n\t//  if (this._pendingFetch.size === 0) {\n\t//    schedule('afterRender', this, this.flushAllPendingFetches);\n\t//  }\n\n\t//  this._pendingFetch.get(modelName).push(pendingFetchItem);\n\n\t//  return promise;\n\t//},\n\t);\n});","define('busy-app/services/stripe', ['exports', 'ember-stripe-service/services/stripe'], function (exports, _stripe) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _stripe.default;\n    }\n  });\n});","define('busy-app/services/subscription', ['exports', 'ember-data', 'moment', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/string'], function (exports, _emberData, _moment, _utils, _logger, _string) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/***/\n\t// const kcostPerActiveUserMonthly = 11.99; // dollars\n\t// const kCostPerActiveUserAnnual = 9.99; // dollars\n\tvar kAnnualInvoiceThreshold = 40000; // cutoff in dollars to use invoicing instead of realtime CC charge\n\tvar kTrialDuration = 30; // days\n\tvar EMPLOYEE_LIMIT_FREE = Infinity;\n\tvar EMPLOYEE_LIMIT_PRO = Infinity;\n\n\tvar kDisplayUserLimitFree = 100;\n\tvar kDisplayUserLimitPro = 200;\n\n\t/**\n  * `Services/Subscription`\n  *\n  * @class Subscription\n  * @namespace Services\n  * @extends Service\n  * @uses Services.Auth\n  * @uses Services.Features\n  * @uses Services.Store\n  */\n\texports.default = Ember.Service.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsession: Ember.inject.service('session'),\n\t\tstore: Ember.inject.service('store'),\n\t\tstripe: Ember.inject.service(),\n\t\trouter: Ember.inject.service(),\n\n\t\tdisplayUserLimitFree: kDisplayUserLimitFree,\n\t\tdisplayUserLimitPro: kDisplayUserLimitPro,\n\t\ttrialDuration: kTrialDuration,\n\t\tannualInvoiceThreshold: kAnnualInvoiceThreshold,\n\t\tavailableCredit: null,\n\t\trenewsOn: null,\n\t\tsubscriptionStatusVersion: Date.now(),\n\n\t\t// returns a promise object\n\t\tsubscriptionStatus: Ember.computed('auth.organization.id', 'session.isAuthenticated', 'subscriptionStatusVersion', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar subscriptionStatusVersion = this.get('subscriptionStatusVersion');\n\n\t\t\tif (!Ember.isNone(this.get('auth.organization.id')) && this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.get('store').queryRecord('organization-subscription-status', { organization_id: this.get('auth.organization.id') }).then(function (model) {\n\t\t\t\t\t\tif (model && model._internalModel && model._internalModel._data) {\n\t\t\t\t\t\t\t_logger.default.info(_this, { subscriptionStatus: model._internalModel._data });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmodel.set('subscriptionStatusVersion', subscriptionStatusVersion);\n\n\t\t\t\t\t\treturn model;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\t// returns a promise object\n\t\tsubscriptionPricing: Ember.computed('auth.organization.id', 'session.isAuthenticated', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!Ember.isNone(this.get('auth.organization.id')) && this.get('session.isAuthenticated')) {\n\t\t\t\treturn _emberData.default.PromiseObject.create({\n\t\t\t\t\tpromise: this.getPricing().then(function (prices) {\n\t\t\t\t\t\t_logger.default.info(_this2, { prices: prices });\n\t\t\t\t\t\treturn prices;\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}),\n\n\t\tcostPerActiveUserMonthly: Ember.computed.alias('subscriptionPricing.monthly'),\n\t\tcostPerActiveUserMonthlyText: Ember.computed('costPerActiveUserMonthly', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserMonthly')) ? null : '$' + this.get('costPerActiveUserMonthly') + (0, _utils.loc)('/mo');\n\t\t}),\n\t\tcostPerActiveUserMonthlyPerYear: Ember.computed('costPerActiveUserMonthly', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserMonthly')) ? null : this.get('costPerActiveUserMonthly') * 12;\n\t\t}),\n\t\tcostPerActiveUserMonthlyPerYearText: Ember.computed('costPerActiveUserMonthlyPerYear', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserMonthlyPerYear')) ? null : '$' + this.get('costPerActiveUserMonthlyPerYear') + (0, _utils.loc)('/yr');\n\t\t}),\n\n\t\tcostPerActiveUserAnnual: Ember.computed.alias('subscriptionPricing.annually'),\n\t\tcostPerActiveUserAnnualText: Ember.computed('costPerActiveUserAnnual', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserAnnual')) ? null : '$' + this.get('costPerActiveUserAnnual') + (0, _utils.loc)('/mo');\n\t\t}),\n\t\tcostPerActiveUserAnnualPerYear: Ember.computed('costPerActiveUserAnnual', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserAnnual')) ? null : this.get('costPerActiveUserAnnual') * 12;\n\t\t}),\n\t\tcostPerActiveUserAnnualPerYearText: Ember.computed('costPerActiveUserAnnualPerYear', function () {\n\t\t\treturn Ember.isNone(this.get('costPerActiveUserAnnualPerYear')) ? null : '$' + this.get('costPerActiveUserAnnualPerYear') + (0, _utils.loc)('/yr');\n\t\t}),\n\n\t\tcostPerActiveUser: Ember.computed('costPerActiveUserMonthly', 'costPerActiveUserAnnual', 'subscriptionStatus.isAnnualPlan', function () {\n\t\t\treturn this.get('subscriptionStatus.isAnnualPlan') ? this.get('costPerActiveUserAnnual') : this.get('costPerActiveUserMonthly');\n\t\t}),\n\t\tcostPerActiveUserText: Ember.computed('costPerActiveUserMonthlyText', 'costPerActiveUserAnnualText', 'subscriptionStatus.isAnnualPlan', function () {\n\t\t\treturn this.get('subscriptionStatus.isAnnualPlan') ? this.get('costPerActiveUserAnnualText') : this.get('costPerActiveUserMonthlyText');\n\t\t}),\n\t\tcostPerActiveUserPerYear: Ember.computed('costPerActiveUserMonthlyPerYear', 'costPerActiveUserAnnualPerYear', 'subscriptionStatus.isAnnualPlan', function () {\n\t\t\treturn this.get('subscriptionStatus.isAnnualPlan') ? this.get('costPerActiveUserAnnualPerYear') : this.get('costPerActiveUserMonthlyPerYear');\n\t\t}),\n\t\tcostPerActiveUserPerYearText: Ember.computed('costPerActiveUserMonthlyPerYearText', 'costPerActiveUserAnnualPerYearText', 'subscriptionStatus.isAnnualPlan', function () {\n\t\t\treturn this.get('subscriptionStatus.isAnnualPlan') ? this.get('costPerActiveUserAnnualPerYearText') : this.get('costPerActiveUserMonthlyPerYearText');\n\t\t}),\n\n\t\tcurrentPlanCost: Ember.computed('isPaidAccount', 'costPerActiveUser', function () {\n\t\t\tif (this.get('isPaidAccount')) {\n\t\t\t\tif (!Ember.isNone(this.get('costPerActiveUser'))) {\n\t\t\t\t\treturn this.get('costPerActiveUser').toFixed(2);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '0.00';\n\t\t}),\n\n\t\t// temporary deprecations\n\t\tfreeAccount: Ember.computed.deprecatingAlias('isFreeAccount', { id: 'subscription.deprecate-freeAccount', until: '5.0.0' }),\n\t\ttrialAccount: Ember.computed.deprecatingAlias('isFreeTrial', { id: 'subscription.deprecate-freeAccount', until: '5.0.0' }),\n\t\tproAccount: Ember.computed.deprecatingAlias('isProAccount', { id: 'subscription.deprecate-freeAccount', until: '5.0.0' }),\n\t\tenterpriseAccount: Ember.computed.deprecatingAlias('isEnterpriseAccount', { id: 'subscription.deprecate-freeAccount', until: '5.0.0' }),\n\n\t\tisFreeAccount: Ember.computed.alias('subscriptionStatus.isFreeAccount'),\n\t\tisProAccount: Ember.computed('subscriptionStatus.isProAccount', 'features.overrides/pro', function () {\n\t\t\treturn this.get('subscriptionStatus.isProAccount') || this.get('features.overrides/pro');\n\t\t}),\n\n\t\tisEnterpriseAccount: Ember.computed.alias('subscriptionStatus.isEnterpriseAccount'),\n\n\t\tisFreeTrial: Ember.computed('subscriptionStatus.isFreeTrial', 'auth.organization.stripeCustomerId', function () {\n\t\t\treturn this.get('subscriptionStatus.isFreeTrial') && Ember.isNone(this.get('auth.organization.stripeCustomerId'));\n\t\t}),\n\n\t\tisPaidAccount: Ember.computed('isProAccount', 'isFreeTrial', function () {\n\t\t\treturn this.get('isProAccount') && !this.get('isFreeTrial');\n\t\t}),\n\n\t\tplanTypeFormatted: Ember.computed('subscriptionStatus.{planTypeFormatted,isProAccount,isAnnualPlan}', 'auth.organization.stripeCustomerId', function () {\n\t\t\tif (this.get('subscriptionStatus.isAnnualPlan') || !this.get('subscriptionStatus.isProAccount') || Ember.isNone(this.get('auth.organization.stripeCustomerId'))) {\n\t\t\t\treturn this.get('subscriptionStatus.planTypeFormatted');\n\t\t\t} else {\n\t\t\t\treturn (0, _utils.loc)('Pro');\n\t\t\t}\n\t\t}),\n\n\t\thasTrialed: Ember.computed.alias('subscriptionStatus.hasTrialed'),\n\t\tisAccountExpired: Ember.computed.and('hasPaymentMethod', 'isFreeAccount'),\n\n\t\thasPaymentMethod: Ember.computed.alias('subscriptionStatus.hasCard'),\n\n\t\tperiodDayDate: Ember.computed('subscriptionStatus.periodDay', function () {\n\t\t\tif (Ember.isNone(this.get('subscriptionStatus.periodDay'))) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// get the start of the current month, add one month, then set the day of the month to the `periodDay`\n\t\t\treturn _utils.Time.date().startOf('month').add(1, 'month').date(this.get('subscriptionStatus.periodDay'));\n\t\t}),\n\n\t\tperiodDayTimestamp: Ember.computed('periodDayDate', function () {\n\t\t\treturn !Ember.isNone(this.get('periodDayDate')) ? this.get('periodDayDate').unix() : null;\n\t\t}),\n\n\t\t/**\n   * @private\n   * @method init\n   * @constructor\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\tif (this.get('session.isAuthenticated')) {\n\t\t\t\tthis.refresher();\n\t\t\t}\n\t\t},\n\t\trefresher: function refresher() {\n\t\t\tEmber.run.later(this, function () {\n\t\t\t\tthis.refreshStatus(function () {\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tthis.refresher();\n\t\t\t}, 60000);\n\t\t},\n\n\n\t\t/**\n   * Computed property to get the subscription member size for the organization\n   *\n   * @public\n   * @property positions\n   * @type {DS.Model}\n   */\n\t\tmaxMemberSize: Ember.computed('subscriptionStatus.isProAccount', function () {\n\t\t\treturn this.get('subscriptionStatus.isProAccount') ? EMPLOYEE_LIMIT_PRO : EMPLOYEE_LIMIT_FREE;\n\t\t}),\n\n\t\tmembersAvailable: Ember.computed('maxMemberSize', 'auth.memberCount', function () {\n\t\t\t// const userLimit = this.get('maxMemberSize');\n\t\t\t// const totalCurrentUsers = this.get('auth.memberCount');\n\t\t\t// return userLimit - totalCurrentUsers;\n\n\t\t\treturn Infinity;\n\t\t}),\n\n\t\treloadSubscriptionSize: function reloadSubscriptionSize() {\n\t\t\tthis.set('auth.memberCountRefresh', this.get('auth.memberCountRefresh') + 1);\n\t\t\treturn Ember.RSVP.resolve(this.get('auth.memberCount'));\n\t\t},\n\t\taddSubscriptionMember: function addSubscriptionMember() {\n\t\t\tthis.reloadSubscriptionSize();\n\t\t\treturn this;\n\t\t},\n\t\tsubtractSubscriptionMember: function subtractSubscriptionMember() {\n\t\t\tthis.reloadSubscriptionSize();\n\t\t\treturn this;\n\t\t},\n\n\n\t\t/**\n   * refresh the model until the test method passed in is satisfied or\n   * until a max of 100 tries has been completed.\n   *\n   * @public\n   * @method refreshStatus\n   * @param test {function} function( model ) return true if satisfied\n   * @return {RSVP}\n   */\n\t\trefreshStatus: function refreshStatus(test) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\t_this3._refreshStatus(test, function (res) {\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tEmber.run(null, resolve, {});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_logger.default.error(_this3, 'Refresh status hit max tries');\n\t\t\t\t\t\tEmber.run(null, reject, { error: \"Max tries reached\" });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method startTrial\n   */\n\t\tstartTrial: function startTrial() {\n\t\t\treturn this.setSubscriptionStatusPro();\n\t\t},\n\n\n\t\t/**\n   * Send the user to the appropriate place to start upgrading their subscription\n   *\n   * @public\n   * @method startUpgrade\n   */\n\t\tstartUpgrade: function startUpgrade() {\n\t\t\treturn this.get('router').transitionTo('company-settings', { queryParams: { bc_tab: 'subscription' } });\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method setSubscriptionStatusFree\n   */\n\t\tsetSubscriptionStatusFree: function setSubscriptionStatusFree() {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar waitForRefresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t\t\treturn this.subscriptionRPC('downgrade-to-free').then(function (data) {\n\t\t\t\tif (waitForRefresh) {\n\t\t\t\t\treturn _this4.refreshStatus(function (model) {\n\t\t\t\t\t\treturn model.get('productHandle') === data.handle;\n\t\t\t\t\t}).then(function () {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   *\tOn the server side, `subscribedThroughProduct` is set to true during the upgradeToPro RPC\n   *\tThe `subscribedThroughProduct` property will then be available on the OrganizationSubscriptionStatus model\n   *\n   * @public\n   * @method setSubscriptionStatusPro\n   */\n\t\tsetSubscriptionStatusPro: function setSubscriptionStatusPro() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar trialBool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n\t\t\tvar trial = trialBool ? 1 : 0;\n\n\t\t\treturn this.subscriptionRPC('upgrade-to-pro', { trial: trial }).then(function (data) {\n\t\t\t\treturn _this5.refreshStatus(function (model) {\n\t\t\t\t\treturn model.get('productHandle') === data.handle;\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * NOTE: DEPRECATED\n   *\n   * @public\n   * @method updateCard\n   * @param firstName {string}\n   * @param lastName {string}\n   * @param cardNumber {string}\n   * @param expMonth {number}\n   * @param expYear {number}\n   * @param cvv {string}\n   * @return {RSVP}\n   */\n\t\tupdateCard: function updateCard(firstName, lastName, cardNumber, expMonth, expYear, cvv) {\n\t\t\tvar _this6 = this;\n\n\t\t\tEmber.deprecate('subscription.updateCard is deprecated. savePaymentMethod should be used instead.');\n\n\t\t\t_utils.Assert.isString(firstName);\n\t\t\t_utils.Assert.isString(lastName);\n\t\t\t_utils.Assert.isString(cardNumber);\n\t\t\t_utils.Assert.isNumber(expMonth);\n\t\t\t_utils.Assert.isNumber(expYear);\n\t\t\t_utils.Assert.isString(cvv);\n\n\t\t\tvar card = {\n\t\t\t\tfirst_name: firstName,\n\t\t\t\tlast_name: lastName,\n\t\t\t\tcard_number: cardNumber,\n\t\t\t\texp_month: expMonth,\n\t\t\t\texp_year: expYear,\n\t\t\t\tcvv: cvv\n\t\t\t};\n\n\t\t\tvar last4 = cardNumber.substr(-4);\n\t\t\treturn this.subscriptionRPC('set-credit-card', card).then(function (data) {\n\t\t\t\treturn _this6.refreshStatus(function (model) {\n\t\t\t\t\treturn model.get('cardLastFour') === last4;\n\t\t\t\t}).then(function () {\n\t\t\t\t\treturn data.success;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * TODO: uncomment and finish setting up method\n   *\n   * @public\n   * @method getCouponCode\n   * @param {string} coupon code\n   * @return {RSVP}\n   */\n\t\tgetCouponCode: function getCouponCode(code) {\n\t\t\t_utils.Assert.isString(code);\n\t\t\treturn this.chargifyRPC('get-coupon-code', { code: code }).then(function (res) {\n\t\t\t\tif (!Ember.isEmpty(res)) {\n\t\t\t\t\treturn res;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * TODO: uncomment and finish setting up method\n   *\n   * @public\n   * @method setCouponCode\n   * @param {string} coupon code\n   * @return {RSVP}\n   */\n\t\tsetCouponCode: function setCouponCode(code) {\n\t\t\t_utils.Assert.isString(code);\n\t\t\treturn this.subscriptionRPC('set-coupon-code', { code: code }).then(function (data) {\n\t\t\t\treturn data.success;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @property availablePlans\n   * @type array\n   */\n\t\tavailablePlans: Ember.computed(function () {\n\t\t\treturn [Ember.Object.create({ id: 10, key: 'free', name: (0, _utils.loc)('Free') }), Ember.Object.create({ id: 20, key: 'pro', name: (0, _utils.loc)('Pro (Billed Monthly)') }), Ember.Object.create({ id: 30, key: 'pro-annual', name: (0, _utils.loc)('Pro (Billed Yearly)') })];\n\t\t}),\n\n\t\tsubscriptionRPC: function subscriptionRPC(method) {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\t_logger.default.info(this, 'subscription-rpc', method, { params: params });\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn this.get('store').rpcRequest('subscription-rpc', method, params).then(function (result) {\n\t\t\t\t_logger.default.info(_this7, 'subscription-rpc', method, 'result', { result: result });\n\t\t\t\treturn result.data;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this7, 'subscription-rpc', method, 'catch', { Error: err });\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\t\tchargifyRPC: function chargifyRPC(method) {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\treturn this.get('store').rpcRequest('chargify-rpc', method, params).then(function (result) {\n\t\t\t\t_logger.default.info(_this8, 'chargify-rpc', method, 'result', { result: result });\n\t\t\t\treturn result.data;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this8, 'chargify-rpc', method, { Error: err });\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * refresh the model based on a test function passed in that resolves to true\n   * when the test is passed\n   *\n   * @private\n   * @method _refreshStatus\n   * @param test {function} test function that takes model as a param\n   * @param callback {function} callback function that takes success true or false as a param\n   * @param tries {number}\n   */\n\t\t_refreshStatus: function _refreshStatus(test, callback) {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar tries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\t\t\tif (!Ember.isNone(this.get('subscriptionStatus.content'))) {\n\t\t\t\tthis.get('subscriptionStatus.content').reload().then(function (model) {\n\t\t\t\t\tif (test(model)) {\n\t\t\t\t\t\tcallback(true);\n\t\t\t\t\t} else if (tries <= 1000) {\n\t\t\t\t\t\tEmber.run.later(_this9, function () {\n\t\t\t\t\t\t\tthis._refreshStatus(test, callback, tries + 1);\n\t\t\t\t\t\t}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (tries <= 1000) {\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis._refreshStatus(test, callback, tries + 1);\n\t\t\t\t}, 2000);\n\t\t\t} else {\n\t\t\t\tcallback(false);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Get monthly and annual pricing from the API\n   *\n   * example response: { \"monthly\": 11.99, \"annually\": 9.99, \"discount\": 2}\n   *\n   * @public\n   * @async\n   * @method getPricing\n   * @return {RSVP}\n   */\n\t\tgetPricing: function getPricing() {\n\t\t\t_logger.default.info(this, 'getPricing', {});\n\n\t\t\treturn this.subscriptionRPC('get-pricing');\n\t\t},\n\n\n\t\t/**\n   * getBillingDetails method on Subscription RPC\n   *\n   * example response:\n   * ```\n   * {\n   * \t\"first_name\": \"John\",\n   * \t\"last_name\": \"T. Doe\",\n   * \t\"masked_card_number\": \"XXXX-XXXX-XXXX-1234\",\n   * \t\"card_type\": \"visa\",\n   * \t\"expiration_month\": 9,\n   * \t\"expiration_year\": 2020,\n   * \t\"billing_phone\": \"555-555-5555\",\n   * \t\"billing_address\": \"555 N 555 E\",\n   * \t\"billing_city\": \"St George\",\n   * \t\"billing_state\": \"UT\",\n   * \t\"billing_zip\": \"84790\",\n   * \t\"billing_country\": \"US\",\n   * \t\"payment_type\": \"credit_card\"\n   * }\n   * ```\n   *\n   * @public\n   * @async\n   * @method getBillingDetails\n   * @return {RSVP}\n   */\n\t\tgetBillingDetails: function getBillingDetails() {\n\t\t\t_logger.default.info(this, 'getBillingDetails', {});\n\n\t\t\treturn this.subscriptionRPC('get-billing-details').then(function (response) {\n\t\t\t\tvar data = Ember.Object.create(response);\n\n\t\t\t\tvar cardHolderName = [data.get('first_name'), data.get('last_name')].join(' ').trim();\n\n\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\tcardHolderName: cardHolderName,\n\t\t\t\t\tmaskedCardNumber: data.get('masked_card_number'),\n\t\t\t\t\tcardMonth: data.get('expiration_month'),\n\t\t\t\t\tcardYear: data.get('expiration_year'),\n\t\t\t\t\tpaymentType: data.get('payment_type'),\n\t\t\t\t\tcardType: data.get('card_type'),\n\t\t\t\t\tcardCVC: '',\n\n\t\t\t\t\taddress: data.get('billing_address'),\n\t\t\t\t\taddress2: data.get('billing_address_2'),\n\t\t\t\t\tcity: data.get('billing_city'),\n\t\t\t\t\tstate: data.get('billing_state'),\n\t\t\t\t\tpostalCode: data.get('billing_zip'),\n\t\t\t\t\tcountry: data.get('billing_country'),\n\t\t\t\t\tphone: data.get('billing_phone')\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * updateBillingAddress method on Subscription RPC\n   *\n   * Remote errors are logged, but are not caught by this method.\n   *\n   * @public\n   * @async\n   * @method updateBillingAddress\n  \t * @param paymentInformation {Object}\n  \t * @param paymentInformation.address {string}\n  \t * @param [paymentInformation.address2=\"\"] {string}\n  \t * @param paymentInformation.postalCode {string}\n  \t * @param paymentInformation.city {string}\n  \t * @param paymentInformation.state {string} 2 character state code\n  \t * @param paymentInformation.country {string} 2 character country code\n  \t * @param [paymentInformation.phone=\"\"] {string}\n   * @return {RSVP}\n   */\n\t\tupdateBillingAddress: function updateBillingAddress(billingDetails) {\n\t\t\tvar _this10 = this;\n\n\t\t\t_logger.default.info(this, 'updateBillingAddress', { billingDetails: billingDetails });\n\t\t\t_utils.Assert.isObject(billingDetails);\n\t\t\t_utils.Assert.isString(billingDetails.get('address'));\n\t\t\t_utils.Assert.isString(billingDetails.get('city'));\n\t\t\t_utils.Assert.isString(billingDetails.get('state'));\n\t\t\t_utils.Assert.isString(billingDetails.get('postalCode'));\n\t\t\t_utils.Assert.isString(billingDetails.get('country'));\n\n\t\t\tvar data = {\n\t\t\t\tbilling_address: billingDetails.get('address'),\n\t\t\t\tbilling_address_2: Ember.isEmpty(billingDetails.get('address2')) ? '' : billingDetails.get('address2'), // do not pass `null`, RPC requires a string\n\t\t\t\tbilling_city: billingDetails.get('city'),\n\t\t\t\tbilling_state: billingDetails.get('state'),\n\t\t\t\tbilling_zip: billingDetails.get('postalCode'),\n\t\t\t\tbilling_country: billingDetails.get('country'),\n\t\t\t\tbilling_phone: Ember.isEmpty(billingDetails.get('phone')) ? '' : billingDetails.get('phone') // do not pass `null`, RPC requires a string\n\t\t\t};\n\n\t\t\treturn this.subscriptionRPC('update-billing-address', data).catch(function (err) {\n\t\t\t\t_logger.default.error(_this10, 'updateBillingAddress', err);\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * getSubscriptionDetails method on Subscription RPC\n   *\n   * example result:\n   * ```\n   * {\n   * \t\"id\": 18019341,\n   * \t\"state\": \"active\",\n   * \t\"activated_at\": \"2017-06-06T21:09:09Z\",\n   * \t\"created_at\": \"2017-06-06T21:09:06Z\",\n   * \t\"updated_at\": \"2017-06-07T17:04:19Z\",\n   * \t\"balance_in_cents\": -10000,\n   * \t\"current_period_ends_at\": \"2018-06-06T21:09:06Z\",\n   * \t\"next_assessment_at\": \"2018-06-06T21:09:06Z\"\n   * }\n   * ```\n   *\n   * @public\n   * @async\n   * @method getSubscriptionDetails\n   * @return {RSVP}\n   */\n\t\tgetSubscriptionDetails: function getSubscriptionDetails() {\n\t\t\t_logger.default.info(this, 'getSubscriptionDetails', {});\n\n\t\t\treturn this.subscriptionRPC('get-subscription-details').then(function (response) {\n\t\t\t\tvar data = Ember.Object.create(response);\n\n\t\t\t\treturn Ember.Object.create({\n\t\t\t\t\tactivatedAt: data.get('activated_at'),\n\t\t\t\t\tbalanceInCents: data.get('balance_in_cents'),\n\t\t\t\t\tcurrentPeriodEndsAt: data.get('current_period_ends_at'),\n\t\t\t\t\tid: data.get('id'),\n\t\t\t\t\tnextAssessmentAt: data.get('next_assessment_at'),\n\t\t\t\t\tstate: data.get('state'),\n\t\t\t\t\tcreatedAt: data.get('created_at'),\n\t\t\t\t\tupdatedAt: data.get('updated_at')\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * getSubscriptionPreview method on Subscription RPC\n   *\n   * see `reformatSubscriptionPreviewResults()` for example of results\n   *\n   * @public\n   * @async\n   * @method getSubscriptionPreview\n   * @param billingDetails {Object} 2 character state code\n   * @param billingDetails.subscriptionType {string} valid values are: `yearly` and `monthly`\n   * @param billingDetails.allocatedQuantity {number} number of subscriptions\n   * @param billingDetails.billingCountry {string} 2 character country code\n   * @param billingDetails.billingState {string} 2 character state code\n   * @param billingDetails.billingCity {string} city name\n   * @param billingDetails.billingZip {string} postal code\n   * @param billingDetails.billingAddress {string} street address\n   * @return {RSVP}\n   */\n\t\tgetSubscriptionPreview: function getSubscriptionPreview(billingDetails) {\n\t\t\tvar _this11 = this;\n\n\t\t\t_logger.default.info(this, 'getSubscriptionPreview', { billingDetails: billingDetails });\n\t\t\t_utils.Assert.isObject(billingDetails);\n\t\t\t_utils.Assert.isString(billingDetails.get('subscriptionType'));\n\t\t\t_utils.Assert.isNumber(billingDetails.get('allocatedQuantity'));\n\t\t\t_utils.Assert.isString(billingDetails.get('billingCountry'));\n\t\t\t_utils.Assert.isString(billingDetails.get('billingState'));\n\t\t\t_utils.Assert.isString(billingDetails.get('billingCity'));\n\t\t\t_utils.Assert.isString(billingDetails.get('billingZip'));\n\t\t\t_utils.Assert.isString(billingDetails.get('billingAddress'));\n\n\t\t\tvar params = {\n\t\t\t\tsubscription_type: billingDetails.get('subscriptionType'),\n\t\t\t\tallocated_quantity: billingDetails.get('allocatedQuantity'),\n\t\t\t\tbilling_country: billingDetails.get('billingCountry'),\n\t\t\t\tbilling_state: billingDetails.get('billingState'),\n\t\t\t\tbilling_city: billingDetails.get('billingCity'),\n\t\t\t\tbilling_zip: billingDetails.get('billingZip'),\n\t\t\t\tbilling_address: billingDetails.get('billingAddress')\n\t\t\t};\n\n\t\t\treturn this.subscriptionRPC('get-subscription-preview', params).then(function (results) {\n\t\t\t\treturn _this11.reformatSubscriptionPreviewResults(results, billingDetails.get('subscriptionType'));\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Using the payment information on file for the current organization, charge the customer for an annual subscription for the specified number of users.\n   *\n   * The customer is charged at the annual rate, but a credit is applied on Chargify based on the monthly rate.\n   *\n   * For Example:\n   *  - 10 users at an annual rate of $9.99 per month will result in a charge of $1,199.00 (10 * $9.99 * 12)\n   *  - The credit to the organization is then based on the monthly rate of $12.99 for $1,558.80 (10 * $12.99 * 12)\n   *\n   * These credits are consumed monthly using the monthly rate, via metering, based on Active Users as defined in the Fair Billing Policy.\n   *\n   * @public\n   * @async\n   * @method chargeAnnualSubscription\n   * @param numberOfUsers {number}\n   * @return {RSVP}\n   */\n\t\tchargeAnnualSubscription: function chargeAnnualSubscription(numberOfUsers) {\n\t\t\tvar _this12 = this;\n\n\t\t\t_logger.default.info(this, 'chargeAnnualSubscription', { numberOfUsers: numberOfUsers });\n\t\t\t_utils.Assert.isNumber(numberOfUsers);\n\n\t\t\tvar params = { number_of_users: numberOfUsers };\n\n\t\t\treturn this.subscriptionRPC('charge-annual-subscription', params).catch(function (err) {\n\t\t\t\tvar errorMessage = _this12.getFriendlyError(err, {\n\t\t\t\t\t593: (0, _utils.loc)('Annual discount adjustment failed.'),\n\t\t\t\t\t594: (0, _utils.loc)('Payment failed.'),\n\t\t\t\t\t595: (0, _utils.loc)('Credit Card Declined.'),\n\t\t\t\t\t596: (0, _utils.loc)('Not pro subscriber.'),\n\t\t\t\t\t597: (0, _utils.loc)('No credit card set.'),\n\t\t\t\t\t598: (0, _utils.loc)('User does not have permission.'),\n\t\t\t\t\t599: (0, _utils.loc)('Customer is already an annual subscriber.')\n\t\t\t\t});\n\n\t\t\t\tif (typeof errorMessage === 'string') {\n\t\t\t\t\t_logger.default.error(_this12, 'changeAnnualSubscription', { errorMessage: errorMessage });\n\t\t\t\t}\n\t\t\t\treturn Ember.RSVP.reject(errorMessage);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Change the `numberOfUsers` that will be used the next time the annual subscription is renewed.\n   * Nothing is charged to the credit card as a direct result of this call.\n   *\n   * Remote errors are logged, but are not caught by this method.\n   *\n   * @public\n   * @async\n   * @method changeAnnualSubscriptionCount\n   * @param numberOfUsers {number}\n   * @return {RSVP}\n   */\n\t\tchangeAnnualSubscriptionCount: function changeAnnualSubscriptionCount(numberOfUsers) {\n\t\t\tvar _this13 = this;\n\n\t\t\t_logger.default.info(this, 'changeAnnualSubscriptionCount', { numberOfUsers: numberOfUsers });\n\t\t\t_utils.Assert.isNumber(numberOfUsers);\n\n\t\t\tvar params = { number_of_users: numberOfUsers };\n\n\t\t\treturn this.subscriptionRPC('change-annual-subscription-count', params).catch(function (err) {\n\t\t\t\t_logger.default.error(_this13, 'changeAnnualSubscriptionCount', err);\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Remote errors are logged, but are not caught by this method.\n   *\n   * @public\n   * @async\n   * @method invoiceAnnualSubscription\n   * @param numberOfUsers {number}\n   * @return {RSVP}\n   */\n\t\tinvoiceAnnualSubscription: function invoiceAnnualSubscription(numberOfUsers) {\n\t\t\tvar _this14 = this;\n\n\t\t\t_logger.default.info(this, 'invoiceAnnualSubscription', { numberOfUsers: numberOfUsers });\n\t\t\t_utils.Assert.isNumber(numberOfUsers);\n\n\t\t\tvar params = { number_of_users: numberOfUsers };\n\t\t\treturn this.subscriptionRPC('invoice-annual-subscription', params).then(function (data) {\n\t\t\t\t_logger.default.info(_this14, 'getPdfInvoice', { data: data });\n\t\t\t\tvar invoiceId = data && data.hasOwnProperty('invoice_id') ? parseInt(data.invoice_id, 10) : null;\n\t\t\t\treturn invoiceId;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this14, 'invoiceAnnualSubscription', err);\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Resets `OrganizationSubscriptionStatus` properties `annualSubscriptionDate` and `annualSubscriptionCount`, preventing the annual subscription from recurring.\n   * The organization remains a pro account, reverting to monthly billing instead.\n   *\n   * Remote errors are logged, but are not caught by this method.\n   *\n   * @public\n   * @async\n   * @method cancelAnnualSubscription\n   * @return {RSVP}\n   */\n\t\tcancelAnnualSubscription: function cancelAnnualSubscription() {\n\t\t\tvar _this15 = this;\n\n\t\t\t_logger.default.info(this, 'cancelAnnualSubscription', {});\n\n\t\t\treturn this.subscriptionRPC('cancel-annual-subscription').catch(function (err) {\n\t\t\t\t_logger.default.error(_this15, 'cancelAnnualSubscription', err);\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @async\n   * @method getPdfInvoice\n   * @param [invoiceId] {string}\n   * @return {RSVP}\n   */\n\t\tgetPdfInvoice: function getPdfInvoice() {\n\t\t\tvar invoiceId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.get('subscriptionStatus.annualSubscriptionPendingInvoiceId');\n\n\t\t\t_logger.default.info(this, 'getPdfInvoice', { invoiceId: invoiceId });\n\t\t\t_utils.Assert.isInteger(invoiceId);\n\n\t\t\tvar params = { invoice_id: invoiceId };\n\t\t\treturn this.subscriptionRPC('get-pdf-invoice', params);\n\t\t},\n\n\n\t\t/**\n   * Opens the PDF of the specified invoice in a new window. (annualSubscriptionPendingInvoiceId if none specified)\n   *\n   * Because popup blockers prevent window.open() calls from inside async actions, a blank window is opened before attempting to retrieve invoice information.\n   * When the invoice information has been successfully retrieved, location.replace() is used to redirect the previously opened window.\n   * If the invoice information fails to load, a bare minimum error message is displayed, prompting the user to close the window.\n   *\n   * @public\n   * @async\n   * @method openPdfInvoice\n   * @param [invoiceId] {string}\n   * @return {RSVP}\n   */\n\t\topenPdfInvoice: function openPdfInvoice() {\n\t\t\tvar _this16 = this;\n\n\t\t\tvar invoiceId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.get('subscriptionStatus.annualSubscriptionPendingInvoiceId');\n\n\t\t\t_logger.default.info(this, 'openPdfInvoice', { invoiceId: invoiceId });\n\t\t\t_utils.Assert.isInteger(invoiceId);\n\n\t\t\t// open window before async call as workaround for popup blocking\n\t\t\tvar invoiceWindow = window.open();\n\t\t\tinvoiceWindow.document.write('\\n\\t\\t\\t<h1>' + (0, _utils.loc)('Loading Invoice...') + '</h1>\\n\\t\\t');\n\n\t\t\treturn this.getPdfInvoice(invoiceId).then(function (results) {\n\t\t\t\t_logger.default.info(_this16, 'openPdfInvoice', { invoiceWindow: invoiceWindow, results: results });\n\n\t\t\t\tif (results && results.hasOwnProperty('url')) {\n\t\t\t\t\tinvoiceWindow.document.write('<p><button onClick=\"javascript:self.close()\">' + (0, _utils.loc)('Return to busybusy') + '</button></p>');\n\t\t\t\t\tinvoiceWindow.document.close(); // close document stream\n\n\t\t\t\t\tinvoiceWindow.location.replace(results.url);\n\t\t\t\t\tinvoiceWindow.focus();\n\t\t\t\t} else {\n\t\t\t\t\tinvoiceWindow.close();\n\t\t\t\t}\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this16, 'openPdfInvoice', { err: err });\n\t\t\t\tinvoiceWindow.document.write('\\n\\t\\t\\t\\t<hr>\\n\\t\\t\\t\\t<h1>' + (0, _utils.loc)('Error.') + '</h1>\\n\\t\\t\\t\\t<h2>' + (0, _utils.loc)('The requested invoice could not be loaded.') + '</h2>\\n\\t\\t\\t\\t<h2><button onClick=\"javascript:self.close()\">Return to busybusy</button></h2>\\n\\t\\t\\t');\n\t\t\t\tinvoiceWindow.document.close(); // close document stream\n\t\t\t\tinvoiceWindow.close();\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * wraps the series of remote calls needed to update the organizations payment information\n   *\n   * 1. getStripeToken() call to Stripe\n   * 2. setCreditCardWithToken() call to busybusy API to attach the payment profile\n   *\n   * The API will pick up the updated Billing Address from Chargify as part of the `setCreditCardWithToken()` call\n   *\n  \t * Remote errors are logged, but are not caught by this method.\n   *\n   * @public\n   * @async\n   * @method savePaymentMethod\n   * @param paymentInformation {EmberObject}\n   * @param paymentInformation.cardNumber {string}\n   * @param paymentInformation.cardCVC {string}\n   * @param paymentInformation.cardMonth {string}\n   * @param paymentInformation.cardYear {string}\n   * @param paymentInformation.address {string}\n   * @param [paymentInformation.address2] {string}\n   * @param paymentInformation.postalCode {string}\n   * @param paymentInformation.city {string}\n   * @param paymentInformation.state {string} 2 character state code\n   * @param paymentInformation.country {string} 2 character country code\n  \t * @param [paymentInformation.phone=\"\"] {string}\n   * @return {RSVP}\n   */\n\t\tsavePaymentMethod: function savePaymentMethod(paymentInformation) {\n\t\t\tvar _this17 = this;\n\n\t\t\t_logger.default.info(this, 'savePaymentMethod', { paymentInformation: paymentInformation });\n\n\t\t\t// convert NULL values to empty strings to make assertions and RPCs happy\n\t\t\tpaymentInformation.set('address', paymentInformation.get('address') === null ? '' : paymentInformation.get('address'));\n\t\t\tpaymentInformation.set('address2', paymentInformation.get('address2') === null ? '' : paymentInformation.get('address2'));\n\t\t\tpaymentInformation.set('postalCode', paymentInformation.get('postalCode') === null ? '' : paymentInformation.get('postalCode'));\n\t\t\tpaymentInformation.set('city', paymentInformation.get('city') === null ? '' : paymentInformation.get('city'));\n\t\t\tpaymentInformation.set('state', paymentInformation.get('state') === null ? '' : paymentInformation.get('state'));\n\t\t\tpaymentInformation.set('country', paymentInformation.get('country') === null ? '' : paymentInformation.get('country'));\n\n\t\t\t_utils.Assert.isObject(paymentInformation);\n\t\t\t_utils.Assert.isString(paymentInformation.get('cardNumber'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('cardCVC'));\n\t\t\t_utils.Assert.isNumber(paymentInformation.get('cardMonth'));\n\t\t\t_utils.Assert.isNumber(paymentInformation.get('cardYear'));\n\n\t\t\t_utils.Assert.isString(paymentInformation.get('address'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('postalCode'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('city'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('state'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('country'));\n\n\t\t\t// const last4 = paymentInformation.get('cardNumber').substr(-4);\n\n\t\t\treturn this.getStripeToken(paymentInformation).then(function (stripeToken) {\n\t\t\t\treturn _this17.setCreditCardWithToken(stripeToken);\n\t\t\t})\n\t\t\t// .then(() => this.updateBillingAddress(paymentInformation)) // FIXME: re-enable this when chargify fixes their partial update bug\n\t\t\t.then(function () {\n\t\t\t\treturn _this17.set('subscriptionStatusVersion', Date.now());\n\t\t\t}).then(function () {\n\t\t\t\treturn _this17.refreshStatus(function (model) {\n\t\t\t\t\treturn model.get('subscriptionStatusVersion') >= _this17.get('subscriptionStatusVersion');\n\t\t\t\t});\n\t\t\t}) // wait for busybusy to update\n\t\t\t.catch(function (err) {\n\t\t\t\t_logger.default.error(_this17, 'savePaymentMethod', err);\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Used by `savePaymentMethod()` to obtain a token from stripe which can then be used to attach payment information to a customer.\n   * This method should only be used in conjuction with `setCreditCardWithToken()`\n   *\n   * Uses the Stripe service to call Stripe's API directly with the provided payment information.\n   * The resulting token information is passed to the busybusy API instead of the payment information itself.\n   * This approach keeps payment information secure while preventing busybusy from falling under PCI Compliance obligations.\n   *\n   * https://stripe.com/docs/stripe.js/v2#card-createToken\n   * https://stripe.com/docs/testing#cards-responses\n   *\n   * @private\n   * @async\n   * @method getStripeToken\n   * @param paymentInformation {EmberObject}\n   * @param paymentInformation.cardNumber {string}\n   * @param paymentInformation.cardCVC {string}\n   * @param paymentInformation.cardMonth {string}\n   * @param paymentInformation.cardYear {string}\n   * @param paymentInformation.cardHolderName {string}\n   * @param paymentInformation.address {string}\n   * @param [paymentInformation.address2] {string}\n   * @param paymentInformation.postalCode {string}\n   * @param paymentInformation.city {string}\n   * @param paymentInformation.state {string} 2 character state code\n   * @param paymentInformation.country {string} 2 character country code\n   * @return {RSVP}\n   */\n\t\tgetStripeToken: function getStripeToken(paymentInformation) {\n\t\t\tvar _this18 = this;\n\n\t\t\t_logger.default.info(this, 'getStripeToken', { paymentInformation: paymentInformation });\n\t\t\t_utils.Assert.isObject(paymentInformation);\n\t\t\t_utils.Assert.isString(paymentInformation.get('cardNumber'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('cardCVC'));\n\t\t\t_utils.Assert.isNumber(paymentInformation.get('cardMonth'));\n\t\t\t_utils.Assert.isNumber(paymentInformation.get('cardYear'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('cardHolderName'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('address'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('postalCode'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('city'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('state'));\n\t\t\t_utils.Assert.isString(paymentInformation.get('country'));\n\n\t\t\tvar cardData = {\n\t\t\t\t// required stripe fields\n\t\t\t\tnumber: paymentInformation.get('cardNumber'),\n\t\t\t\tcvc: paymentInformation.get('cardCVC'),\n\t\t\t\texp_month: paymentInformation.get('cardMonth'),\n\t\t\t\texp_year: paymentInformation.get('cardYear'),\n\n\t\t\t\t// optional stripe fields\n\t\t\t\tname: paymentInformation.get('cardHolderName'),\n\t\t\t\taddress_line1: paymentInformation.get('address'),\n\t\t\t\taddress_line2: paymentInformation.get('address2'),\n\t\t\t\taddress_zip: paymentInformation.get('postalCode'),\n\t\t\t\taddress_city: paymentInformation.get('city'),\n\t\t\t\taddress_state: paymentInformation.get('state'),\n\t\t\t\taddress_country: paymentInformation.get('country')\n\t\t\t};\n\n\t\t\treturn this.get('stripe.card').createToken(cardData).then(function (response) {\n\t\t\t\tvar data = Ember.Object.create(response);\n\t\t\t\tvar stripeToken = data.get('id');\n\t\t\t\tvar stripeCardId = data.get('card.id');\n\t\t\t\tvar stripeCardFingerprint = data.get('card.fingerprint');\n\n\t\t\t\t_logger.default.info(_this18, 'upgrade-dialog', 'getStripeToken', { response: response, stripeToken: stripeToken, stripeCardId: stripeCardId, stripeCardFingerprint: stripeCardFingerprint });\n\n\t\t\t\treturn stripeToken;\n\t\t\t}).catch(function (err) {\n\t\t\t\t_logger.default.error(_this18, 'savePaymentMethod', 'stripe.card.createToken()', err);\n\n\t\t\t\t// throw the error message returned by Stripe\n\t\t\t\tif ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' && err.hasOwnProperty('error') && err.error.hasOwnProperty('message')) {\n\t\t\t\t\treturn Ember.RSVP.reject(err.error.message);\n\t\t\t\t}\n\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Used by savePaymentMethod() to relay the token obtained from `getStripeToken()` to the busybusy web services, which attaches the payment information to the customer.\n   * This method should only be used in conjuction with `getStripeToken()`\n   *\n   * @private\n   * @async\n   * @method setCreditCardWithToken\n   * @param tokenId {string}\n   * @return {RSVP}\n   */\n\t\tsetCreditCardWithToken: function setCreditCardWithToken(tokenId) {\n\t\t\tvar _this19 = this;\n\n\t\t\t_logger.default.info(this, 'setCreditCardWithToken', { tokenId: tokenId });\n\t\t\t_utils.Assert.isString(tokenId);\n\n\t\t\tvar params = { token_id: tokenId };\n\n\t\t\treturn this.subscriptionRPC('set-credit-card-with-token', params).catch(function (err) {\n\t\t\t\t_logger.default.error(_this19, 'setCreditCardWithToken', { err: err });\n\n\t\t\t\tvar errorMessage = _this19.getFriendlyError(err, {\n\t\t\t\t\t547: (0, _utils.loc)('An error occurred while processing your card. Try again in a little bit.'),\n\t\t\t\t\t548: (0, _utils.loc)('Your card has expired.'),\n\t\t\t\t\t549: (0, _utils.loc)('Your card\\'s security code is incorrect.'),\n\t\t\t\t\t550: (0, _utils.loc)('Your card was declined.')\n\t\t\t\t});\n\n\t\t\t\tif (typeof errorMessage === 'string') {\n\t\t\t\t\t_logger.default.error(_this19, 'setCreditCardWithToken', { errorMessage: errorMessage });\n\t\t\t\t}\n\t\t\t\treturn Ember.RSVP.reject(errorMessage);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Transform the raw subscriptionPreview RPC results to more useable formatting.\n   * Chargify returns monetary values in cents, convert them to dollars.\n   *\n   * Example response from RPC call:\n   * ```\n   * {\n   * \t\"line_items\": [\n   * \t\t{ \"transaction_type\": \"charge\", \"amount_in_cents\": 0, \"memo\": \"Yearly Pro (06\\/15\\/2017 - 06\\/15\\/2018)\", \"discount_amount_in_cents\": 0, \"taxable_amount_in_cents\": 0 },\n   * \t\t{ \"transaction_type\": \"charge\", \"amount_in_cents\": 119880, \"memo\": \"Paid Yearly Active Users: 10 discount users\", \"discount_amount_in_cents\": 200, \"taxable_amount_in_cents\": 119680, \"component_id\": 395141,\n   * \t\t\t\"taxations\": [ { \"tax_id\": null, \"tax_name\": \"UT Tax (6.35%)\", \"rate\": \"\", \"tax_amount_in_cents\": 7600, \"tax_rules\": [] } ]\n   * \t\t},\n   * \t\t{ \"transaction_type\": \"adjustment\", \"amount_in_cents\": -200, \"memo\": \"Coupon: ANNUAL-DISCOUNT - Discounted amount for annual subscription (per user, per month)\", \"discount_amount_in_cents\": 0, \"taxable_amount_in_cents\": 0 },\n   * \t\t{ \"transaction_type\": \"charge\", \"amount_in_cents\": 7600, \"memo\": \"UT Tax (6.35%)\", \"discount_amount_in_cents\": 0, \"taxable_amount_in_cents\": 0 }\n   * \t],\n   * \tnext_subtotal_in_cents: 119880\n   * \tnext_total_in_cents: 127492\n   * \tnext_total_tax_in_cents: 7612\n   * \tperiod_type: \"recurring\"\n   * \tstart_date: \"2017-09-06T18:57:35Z\"\n   * \tsubtotal_in_cents: 119880\n   * \ttotal_discount_in_cents: 0\n   * \ttotal_in_cents: 127492\n   * \ttotal_tax_in_cents: 7612\n   * }\n   * ```\n   *\n   * result example:\n   * ```\n   * {\n   * \tstartDate: 1496785872,\n   * \tendDate: 1496785872,\n   * \tsubtotal: \"$419.58\",\n   * \ttax: \"$2.66\",\n   * \ttotal: \"$422.24\",\n   * \tbalance: \"-$100.00\"\n   * }\n   * ```\n   *\n   * @public\n   * @method reformatSubscriptionPreviewResults\n   * @param subscriptionPreview {object}\n   * @return {RSVP}\n   */\n\t\treformatSubscriptionPreviewResults: function reformatSubscriptionPreviewResults(subscriptionPreview, subscriptionType) {\n\t\t\t_logger.default.info(this, 'reformatSubscriptionPreviewResults', { subscriptionPreview: subscriptionPreview, subscriptionType: subscriptionType });\n\n\t\t\tvar results = Ember.Object.create(subscriptionPreview);\n\n\t\t\tvar subtotal = results.getWithDefault('next_subtotal_in_cents', 0);\n\t\t\tvar tax = results.getWithDefault('next_total_tax_in_cents', 0);\n\t\t\tvar total = results.getWithDefault('next_total_in_cents', 0);\n\t\t\tvar balance = results.getWithDefault('existing_balance_in_cents', 0);\n\t\t\tvar startDate = results.getWithDefault('start_date', 0);\n\t\t\tvar endDate = results.getWithDefault('end_date', 0);\n\n\t\t\tsubtotal = (0, _string.centsToDollarFormat)(subtotal);\n\t\t\ttax = (0, _string.centsToDollarFormat)(tax);\n\t\t\ttotal = (0, _string.centsToDollarFormat)(total);\n\t\t\tbalance = (0, _string.centsToDollarFormat)(balance);\n\t\t\tstartDate = (0, _moment.default)(startDate).unix();\n\t\t\tendDate = (0, _moment.default)(endDate).unix();\n\n\t\t\t// monthly payments are due the day after the endDate\n\t\t\t// annual payments are due one year from today\n\t\t\tvar nextPaymentDate = subscriptionType === 'monthly' ? _utils.Time.date(endDate).add(1, 'days').unix() : _utils.Time.date().add(1, 'years').unix();\n\n\t\t\treturn {\n\t\t\t\tsubtotal: subtotal,\n\t\t\t\ttax: tax,\n\t\t\t\ttotal: total,\n\t\t\t\tbalance: balance,\n\t\t\t\tstartDate: startDate,\n\t\t\t\tendDate: endDate,\n\t\t\t\tnextPaymentDate: nextPaymentDate\n\t\t\t};\n\t\t},\n\n\n\t\t/**\n   * Given an error object, likely thrown by the API, check for and use the `err.code` value get the associated string from the provided map of error messages.\n   * If no matching string is found in the map, the original error object is returned instead. Order is preserved, but duplicates and non-matches are removed.\n   * If the `error.code` array contains multiple values, the associated strings are returned concatenated together using `messageSeparator`.\n   *\n   * Example\n   * ```\n   * arguments\n   * \terr = { ..., code: [111, 222], ... }\n   * \tmessagesMap = { 111: 'User friendly error message.',  222: 'Another error message.', ... }\n   *\n   * result\n   * \t'User friendly error message. Another error message.'\n   * ```\n   *\n   * @private\n   * @method getFriendlyError\n   * @param err {object}\n   * @param messagesMap {object}\n   * @param [messageSeparator=\" \"] {string} character to use when joining multiple error messages into one string\n   * @return {RSVP}\n   */\n\t\tgetFriendlyError: function getFriendlyError(err) {\n\t\t\tvar messagesMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\tvar messageSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \" \";\n\n\t\t\tvar errorCodes = [];\n\t\t\tif (err instanceof Error) {\n\t\t\t\terrorCodes = err.errors.map(function (i) {\n\t\t\t\t\treturn i.code;\n\t\t\t\t});\n\t\t\t} else if ((typeof err === 'undefined' ? 'undefined' : _typeof(err)) === 'object' && err.hasOwnProperty('code')) {\n\t\t\t\terrorCodes = Array.isArray(err.code) ? err.code : [].concat(_toConsumableArray(err.code)); // ensure errorCodes is an array\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(errorCodes)) {\n\t\t\t\tvar errorMessages = Ember.A(errorCodes).uniq().map(function (code) {\n\t\t\t\t\treturn messagesMap[code];\n\t\t\t\t}).compact();\n\n\t\t\t\treturn !Ember.isEmpty(errorMessages) ? errorMessages.join(messageSeparator) : err;\n\t\t\t}\n\t\t\treturn err;\n\t\t},\n\t\tmockApiCall: function mockApiCall(args) {\n\t\t\tvar result = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\tvar delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 250;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\treturn resolve(result);\n\t\t\t\t}, delay);\n\t\t\t}).then(function (result) {\n\t\t\t\t_logger.default.info('mockApiCall', delay, { args: args, result: result });\n\n\t\t\t\treturn result;\n\t\t\t});\n\t\t}\n\t});\n});","define(\"busy-app/services/toggle\", [\"exports\", \"@busy-web/utils\", \"busy-app/utils/debug\", \"busy-app/utils/features\", \"busy-app/utils/logger\", \"busy-app/utils/settings\"], function (exports, _utils, _debug, _features, _logger, _settings) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\tfeatures: Ember.inject.service(\"features\"),\n\t\tsession: Ember.inject.service(\"session\"),\n\t\tauth: Ember.inject.service(\"auth\"),\n\t\tsubscription: Ember.inject.service(\"subscription\"),\n\t\tlaunchDarkly: Ember.inject.service(\"launchDarkly\"),\n\n\t\tcacheKey: \"busy-app-toggle\",\n\t\tappType: \"time\",\n\n\t\tlocalFeatures: null,\n\n\t\tinit: function init() {\n\t\t\tvar _this = this;\n\n\t\t\tthis._super();\n\n\t\t\t(0, _debug.disable_test_runner)(function () {\n\t\t\t\treturn (\n\t\t\t\t\t// debug flags will log info when\n\t\t\t\t\t// log level 3 is set in config\n\t\t\t\t\twindow.BusyApp.__log_features = createDebugMethod(_this)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tif (this.get(\"features\").isEnabled(\"overrides/pro\")) {\n\t\t\t\t// override flags to turn on all pro features\n\t\t\t\t_logger.default.warn(this, \"Override Pro\");\n\t\t\t} else if (this.get(\"features\").isEnabled(\"overrides/free\")) {\n\t\t\t\t// override flags to turn off all pro features\n\t\t\t\t_logger.default.warn(this, \"Override Free\");\n\t\t\t}\n\n\t\t\t//this.setupLaunchDarkly();\n\t\t\tthis.set(\"localFeatures\", _features.default);\n\t\t},\n\n\n\t\tuserCacheKey: Ember.computed(\"cacheKey\", \"auth.member.id\", function () {\n\t\t\tvar id = this.get(\"auth.member.id\");\n\t\t\tvar cacheKey = this.get(\"cacheKey\");\n\n\t\t\treturn id + \"-\" + cacheKey;\n\t\t}),\n\n\t\tsetupLaunchDarkly: function setupLaunchDarkly() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.userData().then(function (data) {\n\t\t\t\treturn _this2.get(\"launchDarkly\").initialize(_settings.default.get(\"launchdarkly_clientid\"), data, {}).then(function () {\n\t\t\t\t\t_this2.getAllFlags();\n\n\t\t\t\t\t_this2.get(\"launchDarkly\").on(\"change\", function (flags) {\n\t\t\t\t\t\t_logger.default.info(_this2, \"LaunchDarkly change event\", { flags: flags });\n\t\t\t\t\t\tfor (var i in flags) {\n\t\t\t\t\t\t\t_this2.setFlag(i, flags[i].current);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * get the user data for initializing the launch darkly sdk\n   *\n   * @private\n   * @method userData\n   * @return {EmberPromise}\n   */\n\t\tuserData: function userData() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar data = {};\n\t\t\tif (!this.get(\"session.isAuthenticated\")) {\n\t\t\t\tdata.anonymous = true;\n\t\t\t\tdata.key = \"anon-\" + _utils.UUID.generate();\n\t\t\t\treturn Ember.RSVP.resolve(data);\n\t\t\t} else {\n\t\t\t\tdata.anonymous = false;\n\t\t\t\tvar statusReady = Ember.RSVP.resolve(this.get(\"subscription.subscriptionStatus\"));\n\t\t\t\treturn statusReady.then(function () {\n\t\t\t\t\tdata.key = _this3.get(\"auth.member.id\");\n\t\t\t\t\tdata.firstName = _this3.get(\"auth.member.firstName\");\n\t\t\t\t\tdata.lastName = _this3.get(\"auth.member.lastName\");\n\t\t\t\t\tdata.email = _this3.get(\"auth.member.email\");\n\t\t\t\t\tdata.avatar = _this3.get(\"auth.member.imageUrl\");\n\n\t\t\t\t\tdata.custom = {\n\t\t\t\t\t\tisOwner: _this3.get(\"auth.organization.ownedBy\") === _this3.get(\"auth.member.id\"),\n\t\t\t\t\t\torganizationId: _this3.get(\"auth.organization.id\"),\n\t\t\t\t\t\torganizationName: _this3.get(\"auth.organization.organizationName\"),\n\t\t\t\t\t\torganizationNameId: _this3.get(\"auth.organization.organizationName\") + \" - \" + _this3.get(\"auth.organization.id\"),\n\t\t\t\t\t\torganizationCreatedOn: _utils.Time.date(_this3.get(\"auth.organization.createdOn\")).format(\"MM/DD/YYYY HH:mm\"),\n\t\t\t\t\t\tsubscriptionProductHandle: _this3.get(\"subscription.subscriptionStatus.productHandle\"),\n\t\t\t\t\t\tsubscriptionStatus: _this3.get(\"subscription.subscriptionStatus.status\"),\n\t\t\t\t\t\tsubscriptionCreatedOn: _utils.Time.date(_this3.get(\"subscription.subscriptionStatus.createdOn\")).local().format(\"MM/DD/YYYY HH:mm\"), // chargify dates need to be local\n\t\t\t\t\t\tsubscriptionCouponCode: _this3.get(\"subscription.subscriptionStatus.couponCode\") || \"\",\n\t\t\t\t\t\tplatform: \"Web\",\n\t\t\t\t\t\tproduct: \"Time\",\n\t\t\t\t\t\tversion: _settings.default.get(\"version\"),\n\t\t\t\t\t\tdevice: _utils.Browser.type(),\n\t\t\t\t\t\tos: _utils.Browser.osType()\n\t\t\t\t\t};\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * observer for updating the flags if the subscriptionStatus model changes\n   *\n   */\n\t\tupdateUser: Ember.observer(\"subscription.subscriptionStatus.productHandle\", function () {\n\t\t\tif (this.get(\"launchDarkly\") && this.get(\"launchDarkly.isInitialized\")) {\n\t\t\t\tvar params = {\n\t\t\t\t\tkey: this.get(\"auth.member.id\"),\n\t\t\t\t\tcustom: {\n\t\t\t\t\t\tsubscriptionProductHandle: this.get(\"subscription.subscriptionStatus.productHandle\"),\n\t\t\t\t\t\tsubscriptionStatus: this.get(\"subscription.subscriptionStatus.status\"),\n\t\t\t\t\t\tsubscriptionCreatedOn: this.get(\"subscription.subscriptionStatus.createdOn\"),\n\t\t\t\t\t\tsubscriptionCouponCode: this.get(\"subscription.subscriptionStatus.couponCode\")\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.identify(params);\n\t\t\t}\n\t\t}),\n\n\t\t/**\n   * Parse the key for the featureFlag from the provided compound key containing the app prefix, and set the relevant feature flag to the provided value.\n   * Ensures the app prefix in the key matches the current appType and that the flagValue is a boolean.\n   *\n   * @public\n   * @method setFlag\n   * @param key {String} can be feature flag or compund feature flag `time.projects`\n   * @param value {Boolean} the value to be set on the featureFlag\n   * @return {this}\n   */\n\t\tsetFlag: function setFlag(key, value) {\n\t\t\t_utils.Assert.isString(key);\n\n\t\t\tif (this.isValidFeature(key)) {\n\t\t\t\t// non boolean values will be set to false\n\t\t\t\tif (typeof value !== \"boolean\") {\n\t\t\t\t\t_logger.default.warn(this, \"toggleFeature\", \"ignored - not a boolean value\", {\n\t\t\t\t\t\tkey: key,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t\tvalue = false;\n\t\t\t\t}\n\n\t\t\t\t// only allow overrides when DEBUG_MODE is turned on\n\t\t\t\tif (_settings.default.get(\"debug_mode\")) {\n\t\t\t\t\tif (this.get(\"features\").isEnabled(\"overrides/reactMainApp\")) {\n\t\t\t\t\t\tif (key === \"react-main-app\") {\n\t\t\t\t\t\t\tvalue = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar isProFeature = _features.default.isProFeature(key);\n\t\t\t\t\tif (isProFeature && this.get(\"features\").isEnabled(\"overrides/pro\")) {\n\t\t\t\t\t\t// override flags to turn on all pro features\n\t\t\t\t\t\tvalue = true;\n\t\t\t\t\t\t//debugFlag('pro', key, 'on', 'overrides/pro');\n\t\t\t\t\t} else if (isProFeature && this.get(\"features\").isEnabled(\"overrides/free\")) {\n\t\t\t\t\t\t// override flags to turn off all pro features\n\t\t\t\t\t\tvalue = false;\n\t\t\t\t\t\t//debugFlag('pro', key, 'off', 'overrides/free');\n\t\t\t\t\t} else if (_settings.default.getFeature(key)) {\n\t\t\t\t\t\t// flags set to true will ignore launch darkly\n\t\t\t\t\t\tvalue = true;\n\t\t\t\t\t\t//debugFlag('free', key, 'on', 'overrides/none');\n\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t//debugFlag('pro', key, 'off', 'overrides/none');\n\t\t\t\t\t\t//Logger.info(this, `feature:pro [${key}:inactive]`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// add debug flag for logger\n\t\t\t\t__add_debug_flag(key, value, this.get(\"features\"));\n\n\t\t\t\tif (value) {\n\t\t\t\t\t// enable flag\n\t\t\t\t\tthis.get(\"features\").enable(key);\n\t\t\t\t} else {\n\t\t\t\t\t// disable flag\n\t\t\t\t\tthis.get(\"features\").disable(key);\n\t\t\t\t}\n\t\t\t\tthis.setCache(key, value);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\tgetFlag: function getFlag(key, defaultValue) {\n\t\t\tif (Ember.isNone(defaultValue)) {\n\t\t\t\tdefaultValue = this.getCache(key);\n\t\t\t\tif (Ember.isNone(defaultValue)) {\n\t\t\t\t\tdefaultValue = this.getDefaults(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar value = this.get(\"launchDarkly\").variation(key, defaultValue);\n\t\t\tthis.setFlag(key, value);\n\t\t\treturn value;\n\t\t},\n\t\tsetAllFlags: function setAllFlags(flags) {\n\t\t\tfor (var i in flags) {\n\t\t\t\tthis.setFlag(i, flags[i]);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\tgetAllFlags: function getAllFlags() {\n\t\t\tvar flags = this.getDefault();\n\t\t\tfor (var i in flags) {\n\t\t\t\tflags[i] = this.getFlag(i, flags[i]);\n\t\t\t}\n\n\t\t\t(0, _debug.disable_test_runner)(function () {\n\t\t\t\treturn (\n\t\t\t\t\t// log debug info will get looged to console when\n\t\t\t\t\t// log_level 3 is set in config\n\t\t\t\t\t(0, _debug.log_level)(3, function () {\n\t\t\t\t\t\treturn window.BusyApp.__log_features();\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn flags;\n\t\t},\n\t\ttrack: function track() {\n\t\t\tvar _get;\n\n\t\t\t(_get = this.get(\"launchDarkly\")).track.apply(_get, arguments);\n\t\t},\n\t\tidentify: function identify() {\n\t\t\tvar _get2;\n\n\t\t\treturn (_get2 = this.get(\"launchDarkly\")).identify.apply(_get2, arguments);\n\t\t},\n\n\n\t\tcache: null,\n\t\tgetCache: function getCache() {\n\t\t\tvar key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n\t\t\t// check local cache for quick lookups\n\t\t\tvar flags = this.get(\"cache\");\n\t\t\tif (!Ember.isNone(flags)) {\n\t\t\t\treturn flags;\n\t\t\t}\n\n\t\t\t// get from browser cache if local cache is not available\n\t\t\tflags = _utils.LocalStorage.getProperty(this.get(\"userCacheKey\"));\n\t\t\tif (!Ember.isEmpty(flags)) {\n\t\t\t\tflags = JSON.parse(flags);\n\t\t\t}\n\n\t\t\t// return default flags if cache is not set\n\t\t\tif (Ember.isNone(flags)) {\n\t\t\t\tflags = this.getDefault();\n\t\t\t}\n\n\t\t\t// return full cache if cache key is not set\n\t\t\treturn Ember.isNone(key) ? flags : flags[key];\n\t\t},\n\t\tsetCache: function setCache(key, value) {\n\t\t\t_utils.Assert.isString(key);\n\t\t\t_utils.Assert.isBoolean(value);\n\n\t\t\t// get current flags\n\t\t\tvar _flags = this.getCache();\n\n\t\t\t// set value\n\t\t\t_flags[key] = value;\n\n\t\t\t// add to local cache for quick lookups\n\t\t\tthis.set(\"cache\", _flags);\n\n\t\t\t// convert to json string\n\t\t\t_flags = JSON.stringify(_flags);\n\n\t\t\tif (this.get(\"session.isAuthenticated\")) {\n\t\t\t\t// send to local storage\n\t\t\t\t_utils.LocalStorage.setProperty(this.get(\"userCacheKey\"), _flags);\n\t\t\t}\n\t\t},\n\t\tgetDefault: function getDefault() {\n\t\t\tvar key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n\t\t\t// get account status\n\t\t\tvar state = this.get(\"subscription.subscriptionStatus.isProAccount\") ? \"pro\" : \"free\";\n\n\t\t\t// get defaults for current account status\n\t\t\tvar flags = _features.default.getFlags(state);\n\n\t\t\t// return all flags if key is not set\n\t\t\treturn Ember.isNone(key) ? flags : flags[key];\n\t\t},\n\t\tisValidFeature: function isValidFeature() {\n\t\t\tvar name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n\n\t\t\t_utils.Assert.isString(name);\n\n\t\t\t// make sure the flag is in the default list\n\t\t\tvar flags = this.getDefault();\n\t\t\tif (flags.hasOwnProperty(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n\n\n\tvar DEBUG_FLAGS = {};\n\n\tvar __add_debug_flag = function __add_debug_flag(name, status, featureService) {\n\t\tvar type = _features.default.isProFeature(name) ? \"PRO\" : \"FREE\";\n\n\t\tvar isProOverride = featureService.isEnabled(\"overrides/pro\");\n\t\tvar isFreeOverride = featureService.isEnabled(\"overrides/free\");\n\n\t\tvar key = \"\" + name; // <${type}>`;\n\t\tvar value = status ? \"ON\" : \"OFF\";\n\n\t\tvar overrides = \"NONE\";\n\t\tif (isProOverride) {\n\t\t\toverrides = \"PRO\"; //' (overrides/pro)';\n\t\t} else if (isFreeOverride) {\n\t\t\toverrides = \"FREE\"; //' (overrides/free)';\n\t\t}\n\n\t\tDEBUG_FLAGS[key] = { type: type, overrides: overrides, status: value };\n\t};\n\n\tvar createDebugMethod = function createDebugMethod(target) {\n\t\treturn function () {\n\t\t\tvar block = _logger.default.blockCollapsed(target, \"FEATURES\");\n\t\t\tblock.table(DEBUG_FLAGS);\n\t\t\tblock.end();\n\t\t};\n\t};\n});","define('busy-app/services/validation', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Service.extend({\n\t\tstripe: Ember.inject.service('stripe'), // uses Stripe.js v2 - https://stripe.com/docs/stripe.js/v2\n\n\n\t\t/**\n   * @public\n   * @method isInvalidCardNumber\n   * @param cardNumber {string}\n   * @return {boolean}\n   */\n\t\tisInvalidCardNumber: function isInvalidCardNumber(cardNumber) {\n\t\t\tif (Ember.isEmpty(cardNumber)) {\n\t\t\t\treturn true;\n\t\t\t} else if (!this.get('stripe').card.validateCardNumber(cardNumber)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method isInvalidCardDate\n   * @param cardMonth {number}\n   * @param cardYear {number}\n   * @return {boolean}\n   */\n\t\tisInvalidCardDate: function isInvalidCardDate(cardMonth, cardYear) {\n\t\t\tif (Ember.isEmpty(cardMonth) || Ember.isEmpty(cardYear)) {\n\t\t\t\treturn true;\n\t\t\t} else if (!this.get('stripe').card.validateExpiry(cardMonth, cardYear)) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * @public\n   * @method isInvalidCardCVC\n   * @param cardCVC {string}\n   * @return {boolean}\n   */\n\t\tisInvalidCardCVC: function isInvalidCardCVC(cardCVC) {\n\t\t\tif (Ember.isEmpty(cardCVC)) {\n\t\t\t\treturn true;\n\t\t\t} else if (!this.get('stripe').card.validateCVC(cardCVC)) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/session-stores/application', ['exports', 'ember-simple-auth/session-stores/adaptive'], function (exports, _adaptive) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _adaptive.default.extend();\n});","define(\"busy-app/templates/account-ready\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lTBHWNPZ\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-account-ready\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Account Ready!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"How would you like to open busybusy?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"icons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=com.busyllc.busybusy\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"android\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Android\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://appstore.com/busybusytimetracking\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"ios\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"iOS\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",[\\\"index\\\"],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"web\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Website\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/account-ready.hbs\" } });\n});","define(\"busy-app/templates/account-settings\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Ha5FoHWd\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-account-settings\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"notificationName\\\",\\\"notificationType\\\",\\\"notificationText\\\",\\\"clickText\\\",\\\"onClick\\\",\\\"isDismissable\\\"],[[25,\\\"busy-loc\\\",[\\\"Account Settings\\\"],null],[20,[\\\"notifName\\\"]],\\\"warning\\\",[20,[\\\"notifText\\\"]],[20,[\\\"notifClickText\\\"]],\\\"sendVerificationEmail\\\",false]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busy-container-padded-child\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employees/employee-info\\\",null,[[\\\"member\\\",\\\"showCompanyInfo\\\"],[[20,[\\\"model\\\"]],false]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/account-settings.hbs\" } });\n});","define(\"busy-app/templates/application\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Zy8d6c0a\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"serverOutage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"server-outage\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"server-outage-well\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Temporary Outage\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"busybusy is currently experiencing a temporary outage. Time clock actions will still be captured on mobile apps and will sync after the outage is resolved.\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We are working hard to get everything back up and running as soon as possible. We apologize for the inconvenience.\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"doRender\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"liquid-if\\\",[[20,[\\\"showNavView\\\"]]],[[\\\"class\\\"],[\\\"authification\\\"]],{\\\"statements\\\":[[4,\\\"busy-nav\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\"],[1,[18,\\\"version-refresher\\\"],false],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"c-sync-status-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"resolved-status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"close\\\"],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action-message\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"syncing-status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"message\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/loader_white.gif\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"c-conflict-resolution-banner-container\\\"],[9,\\\"class\\\",\\\"page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"resolution-banner\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Resolve\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/application.hbs\" } });\n});","define(\"busy-app/templates/company-settings\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"4KmfMcze\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/company-settings.hbs\" } });\n});","define(\"busy-app/templates/company-settings/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rOxVa+bL\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"dialog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"notificationName\\\",\\\"notificationType\\\",\\\"notificationText\\\",\\\"clickText\\\",\\\"onClick\\\",\\\"isDismissable\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Company Settings\\\"],null],[20,[\\\"notificationName\\\"]],[20,[\\\"notificationType\\\"]],[20,[\\\"notificationText\\\"]],[20,[\\\"clickText\\\"]],[20,[\\\"clickAction\\\"]],[20,[\\\"isDismissable\\\"]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busy-container-padded-child\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-tabs\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Profile\\\"],null],[20,[\\\"emberMainApp\\\"]],1]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/profile-info\\\",null,[[\\\"organization\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Keeping\\\"],null],[20,[\\\"emberMainApp\\\"]],2]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/time-keeping\\\",null,[[\\\"organization\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Integrations\\\"],null],[20,[\\\"features\\\",\\\"companyIntegrations\\\"]],3]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-grid\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"company/integrations/vendors/quickbooks/grid-item\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"company/integrations/vendors/procore/grid-item\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Subscription\\\"],null],4]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/subscription-index\\\",null,[[\\\"organization\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Positions\\\"],null],[20,[\\\"emberMainApp\\\"]],5]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-settings\\\",null,[[\\\"organization\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUpgradeDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"subscriptions/upgrade-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConnectorDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"QuickBooks\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 1:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"We will try to match employee data between busybusy and QuickBooks. Before syncing make sure first and last names are spelled the same in both programs.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 2:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download and install\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://developer-static.intuit.com/idn/downloads/QBSM/Webconnector/QBWebConnectorInstaller_2_1_0_30.exe\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"QuickBooks Web Connector\\\"],null],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 3:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"downloadQwcFile\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"busybusy.qwc\\\"],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"file for QuickBooks Web Connector.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 4:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Open QuickBooks Web Connector and click “Upload Application File”\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 5:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Choose busybusy.qwc downloaded in Step 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 6:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Click save and wait for busybusy Integration Status to say “Connected”.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title status\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description quickbooks-not-connected\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Not Connected\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This Process may take up to eight hours.You will receive an email when further setup is required.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warning\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"On your first sync, active employees, customers, projects, and cost codes will be replaced with data imported from QuickBooks. If you have any questions, please feel free to contact customer service at (855) 287-9287\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showQuickBooksDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openStepTwoDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null],[25,\\\"busy-loc\\\",[\\\"QuickBooks\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 1:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"We will try to match employee data between busybusy and QuickBooks. Before syncing make sure first and last names are spelled the same in both programs.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 2:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download and install\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://developer-static.intuit.com/idn/downloads/QBSM/Webconnector/QBWebConnectorInstaller_2_1_0_30.exe\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"QuickBooks Web Connector\\\"],null],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 3:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"downloadQwcFile\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"busybusy.qwc\\\"],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"file for QuickBooks Web Connector.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 4:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Open QuickBooks Web Connector and click “Upload Application File”\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 5:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Choose busybusy.qwc downloaded in Step 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 6:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Click save and wait for busybusy Integration Status to say “Connected”.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title status\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description quickbooks-connected\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Connected\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warning\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"On your first sync, active employees, customers, projects, and cost codes will be replaced with data imported from QuickBooks. If you have any questions, please feel free to contact customer service at (855) 287-9287\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showStepTwoDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveQuickBooks\\\"],null],[25,\\\"busy-loc\\\",[\\\"Match Payroll Categories\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"busybusy has three payroll categories: Regular Time, Time &amp; a Half and Double Time.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tPlease match the appropriate QuickBooks payroll categroies with the corresponding busybusy payroll\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tcategories.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bc-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"busybusy Payroll\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"QuickBooks Payroll\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"right\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[20,[\\\"qbpc1\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setRegTime\\\"],null],\\\"wageItemName\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time & a Half\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"right\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[20,[\\\"qbpc2\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setOvertime\\\"],null],\\\"value\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Double Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"right\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[20,[\\\"qbpc3\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setDoubletime\\\"],null],\\\"value\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerCloseModal\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerPlanUpgraded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/company-settings/index.hbs\" } });\n});","define(\"busy-app/templates/company-settings/intuit-quickbooks\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"2BqZGiOs\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"hasBackButton\\\",\\\"headerTitle\\\"],[true,[25,\\\"busy-loc\\\",[\\\"Intuit QuickBooks\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"intuit-quickbooks\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Options\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button text \\\",[25,\\\"unless\\\",[[20,[\\\"quickbooksConnected\\\"]],\\\"disabled\\\"],null],\\\" header\\\"]]],[3,\\\"action\\\",[[19,0,[]],\\\"openMappingDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payroll Mapping\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage payroll items on all new employees imported from QuickBooks.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"quickbooksSyncOptions\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"quickbooksConnected\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button text \\\",[25,\\\"unless\\\",[[20,[\\\"quickbooksConnected\\\"]],\\\"disabled\\\"],null],\\\" header\\\"]]],[3,\\\"action\\\",[[19,0,[]],\\\"openSyncOptionsDialog\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sync Options\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-badge green\\\"],[7],[0,\\\"New!\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage the way time entries sync between busybusy and QuickBooks.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"quickbooksConnected\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button red\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openDisconnectDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Disconnect from QuickBooks\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openConnector\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Connect to QuickBooks\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[12,\\\"partials/integrations/quickbooks-dialogs\\\",[]]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/company-settings/intuit-quickbooks.hbs\" } });\n});","define(\"busy-app/templates/company-settings/procore/callback\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"UM9Uq9eY\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"company/integrations/vendors/procore/oauth-callback\\\",null,[[\\\"integrationName\\\",\\\"integrationLabel\\\",\\\"dashboardUrl\\\",\\\"grantCode\\\"],[\\\"procore\\\",\\\"Procore\\\",\\\"company-settings.procore\\\",[20,[\\\"code\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/company-settings/procore/callback.hbs\" } });\n});","define(\"busy-app/templates/company-settings/procore/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bygtav5Z\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"procore\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/procore/integration-dashboard\\\",null,[[\\\"integrationName\\\",\\\"parentTarget\\\"],[\\\"procore\\\",[20,[\\\"target\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/company-settings/procore/index.hbs\" } });\n});","define(\"busy-app/templates/components/add-edit-scheduling\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7OGCpPxl\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveScheduleAction\\\"],null],[20,[\\\"headerTitle\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-add-edit-scheduling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date-pickers\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"multipleDays\\\"]],[25,\\\"busy-loc\\\",[\\\"Start Date\\\"],null],[25,\\\"busy-loc\\\",[\\\"Date\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isAdd\\\"]],true,[25,\\\"if\\\",[[20,[\\\"isCopy\\\"]],true,false],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Multiple days\\\"],null],[20,[\\\"multipleDays\\\"]],\\\"multipleDays\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"format\\\",\\\"utc\\\",\\\"hideTime\\\",\\\"invalid\\\",\\\"onChange\\\"],[[20,[\\\"startDate\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],\\\"L\\\",true,true,false,[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\",\\\"start\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"multipleDays\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"format\\\",\\\"utc\\\",\\\"hideTime\\\",\\\"invalid\\\",\\\"onChange\\\"],[[20,[\\\"endDate\\\"]],[20,[\\\"startDate\\\"]],[20,[\\\"maxDate\\\"]],\\\"L\\\",true,true,false,[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\",\\\"end\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-select-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employee-selector\\\",null,[[\\\"model\\\",\\\"accessRequired\\\",\\\"onDone\\\",\\\"allowCancel\\\"],[[20,[\\\"selectedEmployees\\\"]],[20,[\\\"employeeSelectorPermissions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addEmployees\\\"],null],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Details\\\"],null]]],{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item time-input\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"ddd, MMM, D\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"utc\\\",\\\"unix\\\",\\\"format\\\",\\\"onChange\\\",\\\"round\\\"],[true,[20,[\\\"startTime\\\"]],\\\"hh:mm A\\\",[25,\\\"action\\\",[[19,0,[]],\\\"timeChange\\\",\\\"start\\\"],null],[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item time-input\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"ddd, MMM, D\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"utc\\\",\\\"unix\\\",\\\"format\\\",\\\"onChange\\\",\\\"round\\\"],[true,[20,[\\\"endTime\\\"]],\\\"hh:mm A\\\",[25,\\\"action\\\",[[19,0,[]],\\\"timeChange\\\",\\\"end\\\"],null],[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"bypassRequireProject\\\",\\\"selectedItem\\\",\\\"onSelect\\\",\\\"onMenuClose\\\"],[[20,[\\\"projectsAutoOpen\\\"]],true,[20,[\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/costCode\\\",null,[[\\\"autoOpen\\\",\\\"bypassRequireCostCode\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"selectedItem\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],true,[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[20,[\\\"costCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"selectedItem\\\",\\\"onSelect\\\"],[[20,[\\\"equipment\\\"]],\\\"equipmentSelected\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Instructions\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"maxlength\\\",\\\"key-down\\\",\\\"key-up\\\"],[\\\"instructions-input\\\",\\\"5\\\",[20,[\\\"instructions\\\"]],2000,\\\"instructionsKeyEvent\\\",\\\"instructionsKeyUpEvent\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Notify Employees\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Send a notification to assigned employees to notify them of this schedule update\\\"],null],[20,[\\\"__reminder\\\",\\\"notifyEmployee\\\"]],\\\"notifyEmployee\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/add-edit-scheduling.hbs\" } });\n});","define(\"busy-app/templates/components/busy-action-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lg2ZGfON\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"flexActionBar\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"action-bar-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-container\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"action-bar-section action-bar-search-section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideSearch\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item action-bar-search-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keywordSetter\\\",\\\"onSubmit\\\"],[\\\"search-bar\\\",[20,[\\\"placeholder\\\"]],[20,[\\\"search\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"action-bar-section action-bar-buttons-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"managementLists\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"interopTarget\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item mobile-hide action-bar-interop-container\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Open Management Tool\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"interop\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Management Tool\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"onAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedGroup\\\"]],\\\"archived\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item action-bar-add-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"title\\\",\\\"name\\\",\\\"onClick\\\"],[\\\"add-action\\\",[25,\\\"busy-loc\\\",[\\\"Add\\\"],null],\\\"add\\\",[25,\\\"action\\\",[[19,0,[]],\\\"addAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"filterMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item action-bar-filter-container\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Filters\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"model\\\",\\\"onSelect\\\"],[\\\"select-action filter-menu\\\",[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],\\\"filter_list\\\",\\\"value\\\",true,[20,[\\\"__filterMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"filterAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"__groupMenuTop\\\",\\\"length\\\"]],true,[25,\\\"if\\\",[[20,[\\\"__groupMenuBottom\\\",\\\"length\\\"]],true,false],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item action-bar-group-container\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-select-create\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"showEdit\\\",\\\"defaultList\\\",\\\"model\\\",\\\"onSelect\\\",\\\"onAddNew\\\",\\\"onDelete\\\"],[\\\"select-action group-menu\\\",[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],\\\"filter_list\\\",\\\"groupName\\\",true,[20,[\\\"groupEditPermission\\\"]],[20,[\\\"__groupMenuTop\\\"]],[20,[\\\"__groupMenuBottom\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"itemSelectAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDeleteGroup\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"selectMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-item action-bar-menu-container\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"title\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"model\\\",\\\"onSelect\\\"],[\\\"select-action action-menu\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],\\\"value\\\",true,[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-submit\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"submit\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"content-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-body\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"filterApplied\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue applied-filter\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clearFilter\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"filter\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rotate\\\"],[7],[0,\\\"+\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"onAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedGroup\\\"]],\\\"archived\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"add-action-container\\\",[25,\\\"if\\\",[[20,[\\\"isSub\\\"]],\\\" no-padding\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"onClick\\\"],[\\\"add-action\\\",\\\"add\\\",[25,\\\"action\\\",[[19,0,[]],\\\"addAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"action-bar-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"action-bar-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideSearch\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keywordSetter\\\",\\\"onSubmit\\\"],[\\\"search-bar\\\",[20,[\\\"placeholder\\\"]],[20,[\\\"search\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"selectMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"model\\\",\\\"onSelect\\\"],[\\\"select-action action-menu\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],\\\"value\\\",true,[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"__groupMenuTop\\\",\\\"length\\\"]],true,[25,\\\"if\\\",[[20,[\\\"__groupMenuBottom\\\",\\\"length\\\"]],true,false],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-select-create\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"showEdit\\\",\\\"defaultList\\\",\\\"model\\\",\\\"onSelect\\\",\\\"onAddNew\\\",\\\"onDelete\\\"],[\\\"select-action group-menu\\\",[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],\\\"filter_list\\\",\\\"groupName\\\",true,[20,[\\\"groupEditPermission\\\"]],[20,[\\\"__groupMenuTop\\\"]],[20,[\\\"__groupMenuBottom\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"itemSelectAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDeleteGroup\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"filterMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"menuTitle\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"model\\\",\\\"onSelect\\\"],[\\\"select-action filter-menu\\\",[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],\\\"filter_list\\\",\\\"value\\\",true,[20,[\\\"__filterMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"filterAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar-submit\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"submit\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"content-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-body\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"filterApplied\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue applied-filter\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clearFilter\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"filter\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rotate\\\"],[7],[0,\\\"+\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-action-bar.hbs\" } });\n});","define(\"busy-app/templates/components/busy-button-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"njoRAG+m\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSaveClose\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"saveCloseAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"saveCloseText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"saveText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDelete\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button red\\\",[25,\\\"if\\\",[[20,[\\\"onSave\\\"]],\\\" left\\\"],null],[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"deleteText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCancel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"cancelText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClose\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"closeText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"savingMessageText\\\",\\\"savedMessageText\\\",\\\"errorMessageText\\\",\\\"targetParent\\\"],[[20,[\\\"savingMessage\\\"]],[20,[\\\"savedMessage\\\"]],[20,[\\\"errorMessage\\\"]],[19,0,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-button-bar.hbs\" } });\n});","define(\"busy-app/templates/components/busy-container\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rooJyaNq\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"busy-container-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideMenu\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasBackButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"left-nav button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"backButton\\\"],[[\\\"bubbles\\\"],[\\\"false\\\"]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"back-arrow\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"arrow_back\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"left-nav\\\"],[7],[1,[18,\\\"menu-button\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isBeta\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/beta-04.png\\\"],[9,\\\"class\\\",\\\"beta\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"headerTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"headerTitle\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogo\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"_notificationName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"busy-notification-bar\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"text\\\",\\\"isDismissable\\\",\\\"clickText\\\",\\\"onClick\\\"],[[20,[\\\"_notificationType\\\"]],[20,[\\\"_notificationName\\\"]],[20,[\\\"_notificationText\\\"]],[20,[\\\"_isDismissable\\\"]],[20,[\\\"_clickText\\\"]],[20,[\\\"_onClick\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"busy-container-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-container.hbs\" } });\n});","define(\"busy-app/templates/components/busy-date-range\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"h9l7lDdO\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"jq-date-picker\\\",null,[[\\\"startDate\\\",\\\"endDate\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"onChange\\\",\\\"showButton\\\",\\\"beforeShowDay\\\",\\\"titleBar\\\",\\\"singleDate\\\",\\\"showTopbar\\\",\\\"stickyMonths\\\",\\\"format\\\",\\\"targetObject\\\"],[[20,[\\\"startDate\\\"]],[20,[\\\"endDate\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],\\\"changeDate\\\",[20,[\\\"showButton\\\"]],[20,[\\\"beforeShowDay\\\"]],[20,[\\\"titleBar\\\"]],[20,[\\\"isPayPeriodSelector\\\"]],[20,[\\\"showPayPeriods\\\"]],true,[20,[\\\"format\\\"]],[19,0,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-date-range.hbs\" } });\n});","define(\"busy-app/templates/components/busy-date-time\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"WZ1CWMCr\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"jq-date-picker\\\",null,[[\\\"startDate\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"onChange\\\",\\\"showTime\\\",\\\"singleDate\\\",\\\"autoClose\\\",\\\"showTopbar\\\",\\\"format\\\"],[[20,[\\\"date\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],\\\"changeDate\\\",true,true,false,true,[20,[\\\"format\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-date-time.hbs\" } });\n});","define(\"busy-app/templates/components/busy-dialog-footer\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"c7E5yLTb\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-dialog-footer.hbs\" } });\n});","define(\"busy-app/templates/components/busy-file-uploader\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"NV2GYkNd\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"preview \\\",[25,\\\"if\\\",[[20,[\\\"showPreview\\\"]],\\\"show\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"isPreviewReady\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[18,\\\"fileLabel\\\"],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"fileName\\\"],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPreviewReady\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"remove\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"removeFile\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"progress \\\",[25,\\\"if\\\",[[20,[\\\"showProgress\\\"]],\\\"show\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"bar\\\"],[10,\\\"style\\\",[18,\\\"uploadProgress\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"inner\\\"],[10,\\\"style\\\",[18,\\\"innerStyle\\\"],null],[7],[1,[18,\\\"uploadPercent\\\"],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"percent\\\"],[7],[1,[18,\\\"uploadPercent\\\"],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"file-input\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"file-input\\\",null,[[\\\"onChange\\\",\\\"multiple\\\",\\\"title\\\",\\\"restrictedTypes\\\"],[\\\"uploadFile\\\",[20,[\\\"multiple\\\"]],[20,[\\\"title\\\"]],[20,[\\\"restrictedTypes\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showError\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-file-uploader.hbs\" } });\n});","define(\"busy-app/templates/components/busy-header-floating\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"PCEUadSG\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-header-floating.hbs\" } });\n});","define(\"busy-app/templates/components/busy-header\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"VVXHjOrn\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"onBack\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"left-nav clickable\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"backButton\\\"],[[\\\"bubbles\\\"],[\\\"false\\\"]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"back-arrow\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"left-nav\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"headerTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"headerTitle\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogo\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-header.hbs\" } });\n});","define(\"busy-app/templates/components/busy-image-uploader\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"mHR/duXX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"file-drop-box\\\",null,[[\\\"onChange\\\",\\\"multiple\\\",\\\"title\\\"],[\\\"uploadFile\\\",[20,[\\\"multiple\\\"]],[20,[\\\"title\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"preview \\\",[25,\\\"if\\\",[[20,[\\\"showPreview\\\"]],\\\"show\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"fileNameUrl\\\"]],\\\"\\\",\\\"default\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"class\\\",\\\"preview-image\\\"],[10,\\\"src\\\",[26,[[18,\\\"fileNameUrl\\\"]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"progress \\\",[25,\\\"if\\\",[[20,[\\\"showProgress\\\"]],\\\"show\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bar\\\"],[10,\\\"style\\\",[18,\\\"uploadProgress\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"inner\\\"],[10,\\\"style\\\",[18,\\\"innerStyle\\\"],null],[7],[1,[18,\\\"uploadPercent\\\"],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"percent\\\"],[7],[1,[18,\\\"uploadPercent\\\"],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-image-uploader.hbs\" } });\n});","define(\"busy-app/templates/components/busy-infobox\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"i/FIoaBa\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"l-flex-infobox-trigger\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onClick\\\"],null],null],[7],[11,1],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"l-flex-infobox-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"l-flex-infobox-content\\\"],[7],[1,[18,\\\"content\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"l-flex-infobox-arrow\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-infobox.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-google\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7IWR4brI\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"shouldShowMap\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"input\\\"],[9,\\\"id\\\",\\\"address\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"error\\\"]],\\\"error\\\"],null]]]],[9,\\\"type\\\",\\\"text\\\"],[10,\\\"placeholder\\\",[25,\\\"busy-loc\\\",[\\\"Enter Project Address\\\"],null],null],[10,\\\"value\\\",[26,[[18,\\\"locationString\\\"]]]],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"map-canvas\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-google.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-leaflet-locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"84C5WeU1\", \"block\": \"{\\\"symbols\\\":[\\\"layers\\\",\\\"location\\\",\\\"marker\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasBounds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map-controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"default\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Map\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" | \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"satellite\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Satellite\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"leaflet-map\\\",null,[[\\\"bounds\\\",\\\"onLoad\\\"],[[20,[\\\"bounds\\\"]],\\\"onLoad\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"tile-layer\\\",null,[[\\\"url\\\"],[[20,[\\\"tileServiceUrl\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"locations\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[19,1,[\\\"marker\\\"]]],[[\\\"clickable\\\",\\\"location\\\",\\\"icon\\\"],[true,[19,2,[\\\"coords\\\"]],[19,2,[\\\"icon\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[19,3,[\\\"popup\\\"]]],[[\\\"offset\\\",\\\"autoPanPadding\\\"],[[25,\\\"point\\\",[0,-28],null],[25,\\\"point\\\",[48,48],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map-marker-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[19,2,[\\\"image\\\"]]]]],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[1,[19,2,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,2,[\\\"clockString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-attribution\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-text\\\"],[7],[0,\\\"© \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://www.openstreetmap.org/copyright\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"OpenStreetMap\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-logo\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"https://api-s.mqcdn.com/sdk/leaflet/v2.2/images/questy_sm.png\\\"],[9,\\\"width\\\",\\\"100\\\"],[9,\\\"height\\\",\\\"20\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-leaflet-locations.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-leaflet-time-entry-locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"jHT57YRn\", \"block\": \"{\\\"symbols\\\":[\\\"layers\\\",\\\"location\\\",\\\"marker\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasBounds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map-controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"default\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Map\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" | \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"satellite\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Satellite\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"leaflet-map\\\",null,[[\\\"bounds\\\",\\\"onLoad\\\"],[[20,[\\\"bounds\\\"]],\\\"onLoad\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"tile-layer\\\",null,[[\\\"url\\\"],[[20,[\\\"tileServiceUrl\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"locations\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[19,1,[\\\"marker\\\"]]],[[\\\"clickable\\\",\\\"location\\\",\\\"icon\\\"],[true,[19,2,[\\\"coords\\\"]],[19,2,[\\\"icon\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[19,3,[\\\"popup\\\"]]],[[\\\"offset\\\",\\\"autoPanPadding\\\"],[[25,\\\"point\\\",[0,-28],null],[25,\\\"point\\\",[48,48],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map-marker-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[19,2,[\\\"image\\\"]]]]],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[1,[19,2,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,2,[\\\"clockString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-attribution\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-text\\\"],[7],[0,\\\"© \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://www.openstreetmap.org/copyright\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"OpenStreetMap\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-logo\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"https://api-s.mqcdn.com/sdk/leaflet/v2.2/images/questy_sm.png\\\"],[9,\\\"width\\\",\\\"100\\\"],[9,\\\"height\\\",\\\"20\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-leaflet-time-entry-locations.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-leaflet\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"R6zjYmee\", \"block\": \"{\\\"symbols\\\":[\\\"layers\\\",\\\"marker\\\",\\\"marker\\\",\\\"result\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"geolocation-search\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"name\\\",\\\"placeholder\\\",\\\"class\\\",\\\"onKeyUp\\\",\\\"onBlur\\\",\\\"focus-in\\\"],[\\\"text\\\",[20,[\\\"locationString\\\"]],\\\"locationString\\\",[25,\\\"busy-loc\\\",[\\\"Enter Project Address\\\"],null],\\\"geolocation-input {{if geolocationError 'error'}}\\\",[25,\\\"action\\\",[[19,0,[]],\\\"locationInputChange\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onGeoSearchBlur\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onGeoSearchFocus\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"geolocation-error \\\",[25,\\\"if\\\",[[20,[\\\"geolocationError\\\"]],\\\"geolocation-error-active\\\"],null]]]],[7],[1,[18,\\\"geolocationError\\\"],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[10,\\\"class\\\",[26,[\\\"geolocation-results \\\",[25,\\\"if\\\",[[20,[\\\"showGeocodeSearchResults\\\"]],\\\"geolocation-results-active\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"geocodeSearchResults\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"geolocation-result\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSearchResultsClick\\\",[19,4,[]]],null],null],[10,\\\"onMouseEnter\\\",[25,\\\"action\\\",[[19,0,[]],\\\"mouseEnterGeoSearchResult\\\",[19,4,[]]],null],null],[10,\\\"onMouseLeave\\\",[25,\\\"action\\\",[[19,0,[]],\\\"mouseLeaveGeoSearchResult\\\",[19,4,[]]],null],null],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"place\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"geolocation-result-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,4,[\\\"description\\\"]],[19,4,[\\\"description\\\"]],[25,\\\"concat\\\",[[25,\\\"loc\\\",[\\\"Unknown location at \\\"],null],[19,4,[\\\"latlng\\\",\\\"lat\\\"]],\\\" \\\",[19,4,[\\\"latlng\\\",\\\"lng\\\"]]],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-map-controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"default\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Map\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" | \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"map-control \\\",[25,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"setTileProvider\\\",\\\"satellite\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Satellite\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"leaflet-map\\\",null,[[\\\"lat\\\",\\\"lng\\\",\\\"zoom\\\",\\\"onLoad\\\"],[[20,[\\\"latitude\\\"]],[20,[\\\"longitude\\\"]],[20,[\\\"zoom\\\"]],\\\"onLoad\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"tile-layer\\\",null,[[\\\"url\\\"],[[20,[\\\"tileServiceUrl\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[19,1,[\\\"marker\\\"]]],[[\\\"location\\\",\\\"showRadius\\\",\\\"draggable\\\",\\\"onDragend\\\",\\\"onDrag\\\"],[[20,[\\\"coords\\\"]],[20,[\\\"showRadius\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"onMarkerMove\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDrag\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"locationInfo\\\",\\\"content\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"component\\\",[[19,1,[\\\"marker\\\"]]],[[\\\"location\\\",\\\"showRadius\\\"],[[20,[\\\"coords\\\"]],[20,[\\\"showRadius\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"locationInfo\\\",\\\"content\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"leaflet-attribution\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isTileDefault\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-text\\\"],[7],[0,\\\"© \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://www.openstreetmap.org/copyright\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[0,\\\"OpenStreetMap\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isTileHybrid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"leaflet-attribution-logo\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"https://api-s.mqcdn.com/sdk/leaflet/v2.2/images/questy_sm.png\\\"],[9,\\\"width\\\",\\\"100\\\"],[9,\\\"height\\\",\\\"20\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-leaflet.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/7rhCeJu\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"map-canvas\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-locations.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map-time-entry-locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"HkHAdFXv\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"id\\\",\\\"map-canvas\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map-time-entry-locations.hbs\" } });\n});","define(\"busy-app/templates/components/busy-map\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qtPzyrVr\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[1,[25,\\\"busy-map-google\\\",null,[[\\\"locationInfo\\\",\\\"canEdit\\\",\\\"error\\\"],[[20,[\\\"locationInfo\\\"]],[20,[\\\"canEdit\\\"]],[20,[\\\"error\\\"]]]]],false]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-map.hbs\" } });\n});","define(\"busy-app/templates/components/busy-nav\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"twiw1ws1\", \"block\": \"{\\\"symbols\\\":[\\\"org\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"logo-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"logo\\\"],[10,\\\"href\\\",[26,[[18,\\\"homeUrl\\\"]]]],[7],[0,\\\"busy\\\"],[6,\\\"span\\\"],[7],[0,\\\"busy\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"headerTitle\\\"],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"back-drop\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeSideMenu\\\"]],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"aside\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"showStickyFooter\\\"]],\\\"show-sticky-footer\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"hideSideNav\\\"]],\\\"hide-side-nav\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scroll-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"personal-photo\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[18,\\\"userImage\\\"],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"personal-name\\\"],[7],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"firstName\\\"]],false],[0,\\\" \\\"],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"lastName\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"workspace\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openWorkspace\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"arrow \\\",[25,\\\"if\\\",[[20,[\\\"isOpen\\\"]],\\\"\\\",\\\"down\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"workspace-chooser \\\",[25,\\\"if\\\",[[20,[\\\"isOpen\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"organizationList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"organization-item\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"useAccount\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[19,1,[\\\"imageThumbUrl\\\"]],[19,1,[\\\"imageThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"add-organization c-icon plus-icon\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addAccount\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add a Company\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"nav\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-dashboard dashboard \\\",[25,\\\"if\\\",[[20,[\\\"isIndex\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"index\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\"],[\\\"nav-item-icon\\\",\\\"access_time\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-dashboard-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Dashboard\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEmployees\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-employees team \\\",[25,\\\"if\\\",[[20,[\\\"isEmployees\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"employees\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon team-icon \\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-employees-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-projects projects \\\",[25,\\\"if\\\",[[20,[\\\"isProject\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"project\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon folder-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-projects-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCostCodesNavItem\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-costcodes costcodes \\\",[25,\\\"if\\\",[[20,[\\\"isCostCode\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openCostCodes\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon barcode-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-costcodes-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEquipmentNavItem\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openEquipment\\\"],[[\\\"bubbles\\\"],[false]]],null],[10,\\\"class\\\",[26,[\\\"nav-item nav-equipment equipment \\\",[25,\\\"if\\\",[[20,[\\\"isEquipment\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon tractor-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-equipment-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showReportsNavItem\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-reports reports \\\",[25,\\\"if\\\",[[20,[\\\"isReport\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"report\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon graph-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-reports-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reports\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSchedulingNavItem\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"schedulingInterop\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-scheduling scheduling \\\",[25,\\\"if\\\",[[20,[\\\"isScheduling\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"scheduling\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon calendar-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-scheduling-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduling\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-scheduling scheduling \\\",[25,\\\"if\\\",[[20,[\\\"isScheduling\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"scheduling\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon calendar-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-scheduling-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduling\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-map map \\\",[25,\\\"if\\\",[[20,[\\\"isMap\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"map\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon map-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-reports-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Map\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"photosReact\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"photos\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\",\\\"allowedKeys\\\"],[false,\\\"command control\\\"]]],null],[10,\\\"class\\\",[26,[\\\"nav-item nav-media \\\",[25,\\\"if\\\",[[20,[\\\"isMedia\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"photo_library\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-media-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Photos & Notes\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"manageCompanySettings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-company-settings  settings \\\",[25,\\\"if\\\",[[20,[\\\"isCompanySettings\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"company-settings\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon gear-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-company-settings-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Settings\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"companySettingsBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-badge\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-badge red\\\"],[7],[1,[18,\\\"companySettingsBadge\\\"],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"nav-item nav-account-settings logout account \\\",[25,\\\"if\\\",[[20,[\\\"isAccountSettings\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"account-settings\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon person-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-account-settings-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"My Account\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"accountSettingsBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-badge\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-badge red\\\"],[7],[1,[18,\\\"accountSettingsBadge\\\"],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nav-item nav-help logout\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openHelpDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon help-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-help-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Support\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nav-item nav-logout logout\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"logoutAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"c-icon exit-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-logout-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Log out\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showStickyFooter\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"busy-nav-sticky-footer\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUpgradeToProFooter\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nav-item nav-updrade-now\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionDetails\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nav-item-text nav-updrade-now-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade to Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[11,2],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showHelpDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/help-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCostCodesSplashScreen\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"cost-codes/splash-screen\\\",null,[[\\\"onClose\\\",\\\"onEnabled\\\"],[\\\"closeCostCodesSplashScreen\\\",[25,\\\"action\\\",[[19,0,[]],\\\"changeViewAction\\\",\\\"cost-code\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEquipmentSplashScreen\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"equipment/splash-screen\\\",null,[[\\\"onClose\\\",\\\"equipmentUrl\\\"],[\\\"closeEquipmentSplashScreen\\\",[20,[\\\"equipmentUrl\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-nav.hbs\" } });\n});","define(\"busy-app/templates/components/busy-notification-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"OIujrER3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"notification-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"text\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"onClick\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"clickText\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"click-text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clickAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"clickText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isDismissable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"notification-bar-dismiss\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onDismiss\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Dismiss\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-notification-bar.hbs\" } });\n});","define(\"busy-app/templates/components/busy-pagination\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"UGOG0uCm\", \"block\": \"{\\\"symbols\\\":[\\\"pageObj\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasPaging\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"page-size\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"Showing: \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"openTop\\\"],[\\\"left\\\",[20,[\\\"selectMenu\\\"]],\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"changePageSize\\\"],null],[20,[\\\"openTop\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPageNumbers\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"pager\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"arrow prev\\\",[25,\\\"if\\\",[[20,[\\\"hasPrevPage\\\"]],\\\" active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"prevPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[6,\\\"span\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"pagination\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"page\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPage\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"page\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"arrow next\\\",[25,\\\"if\\\",[[20,[\\\"hasNextPage\\\"]],\\\" active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"nextPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[6,\\\"span\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasPrevOrNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"pager\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"hasNextPage\\\"]],\\\"\\\",\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"nextPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Next\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"hasPrevPage\\\"]],\\\"\\\",\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"prevPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Prev\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-pagination.hbs\" } });\n});","define(\"busy-app/templates/components/busy-report-header\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Qpx/SLNy\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideDateSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range-selector\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isRangeSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-date-range\\\",null,[[\\\"startDate\\\",\\\"endDate\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"onChange\\\",\\\"showPayPeriods\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"highlightSlected\\\",\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[false,\\\"left\\\",[20,[\\\"dateSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null],\\\"dateRange\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDateTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range-selector title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"dateTitle\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"button-print page-hide\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"printOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"highlightSlected\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\"],[false,[20,[\\\"printOptions\\\"]],\\\"printChanged\\\",\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Print\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"printPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Print\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"filterMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"iconName\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"menuTitle\\\"],[\\\"select-button filter-menu page-hide\\\",[20,[\\\"filterMenu\\\"]],\\\"filter_list\\\",\\\"filterChanged\\\",\\\"value\\\",true,[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"option-selector print page-hide\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideExport\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showExportMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"highlightSlected\\\",\\\"model\\\",\\\"onSelect\\\",\\\"menuTitle\\\",\\\"itemLabel\\\"],[false,[20,[\\\"options\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"optionChange\\\"],null],[25,\\\"busy-loc\\\",[\\\"Export\\\"],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"optionChange\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Export\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"sortOrder\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sort-option page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"changeSort\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sort\\\"],null],false],[0,\\\" \\\"],[6,\\\"b\\\"],[7],[1,[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"sortOrder\\\"]],\\\"desc\\\"],null],\\\"&darr;\\\",\\\"&uarr;\\\"],null],true],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCurrentPeriodWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"busy-notification-bar\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"text\\\",\\\"isDismissable\\\"],[\\\"warning\\\",\\\"current-period-warning\\\",[25,\\\"busy-loc\\\",[\\\"This pay period is still open\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"noMargin\\\"]],\\\"no-padding\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"print-title page-show\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"org\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"cityStateString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"headerDateRange\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"content page-margin \\\",[25,\\\"if\\\",[[20,[\\\"noMargin\\\"]],\\\"no-margin\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"provided page-show page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered page-color\\\"],[7],[0,\\\"Provided by\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"creator page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created on: \\\"],[1,[18,\\\"createdDate\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created by: \\\"],[1,[18,\\\"creatorName\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-report-header.hbs\" } });\n});","define(\"busy-app/templates/components/busy-save-message\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"A4HsLmK9\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[2,\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 32 32\\\\\\\" width=\\\\\\\"100%\\\\\\\" height=\\\\\\\"200%\\\\\\\" fill=\\\\\\\"#0277BD\\\\\\\">\\\\n\\\\t\\\\t<path transform=\\\\\\\"translate(0 0)\\\\\\\" d=\\\\\\\"M0 12 V20 H4 V12z\\\\\\\">\\\\n\\\\t\\\\t<animateTransform attributeName=\\\\\\\"transform\\\\\\\" type=\\\\\\\"translate\\\\\\\" values=\\\\\\\"0 0; 28 0; 0 0; 0 0\\\\\\\" dur=\\\\\\\"1.5s\\\\\\\" begin=\\\\\\\"0\\\\\\\" repeatCount=\\\\\\\"indefinite\\\\\\\" keytimes=\\\\\\\"0;0.3;0.6;1\\\\\\\" keySplines=\\\\\\\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\\\\\\\" calcMode=\\\\\\\"spline\\\\\\\" />\\\\n\\\\t\\\\t</path>\\\\n\\\\t\\\\t<path opacity=\\\\\\\"0.5\\\\\\\" transform=\\\\\\\"translate(0 0)\\\\\\\" d=\\\\\\\"M0 12 V20 H4 V12z\\\\\\\">\\\\n\\\\t\\\\t<animateTransform attributeName=\\\\\\\"transform\\\\\\\" type=\\\\\\\"translate\\\\\\\" values=\\\\\\\"0 0; 28 0; 0 0; 0 0\\\\\\\" dur=\\\\\\\"1.5s\\\\\\\" begin=\\\\\\\"0.1s\\\\\\\" repeatCount=\\\\\\\"indefinite\\\\\\\" keytimes=\\\\\\\"0;0.3;0.6;1\\\\\\\" keySplines=\\\\\\\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\\\\\\\" calcMode=\\\\\\\"spline\\\\\\\" />\\\\n\\\\t\\\\t</path>\\\\n\\\\t\\\\t<path opacity=\\\\\\\"0.25\\\\\\\" transform=\\\\\\\"translate(0 0)\\\\\\\" d=\\\\\\\"M0 12 V20 H4 V12z\\\\\\\">\\\\n\\\\t\\\\t<animateTransform attributeName=\\\\\\\"transform\\\\\\\" type=\\\\\\\"translate\\\\\\\" values=\\\\\\\"0 0; 28 0; 0 0; 0 0\\\\\\\" dur=\\\\\\\"1.5s\\\\\\\" begin=\\\\\\\"0.2s\\\\\\\" repeatCount=\\\\\\\"indefinite\\\\\\\" keytimes=\\\\\\\"0;0.3;0.6;1\\\\\\\" keySplines=\\\\\\\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\\\\\\\" calcMode=\\\\\\\"spline\\\\\\\" />\\\\n\\\\t\\\\t</path>\\\\n\\\\t</svg>\\\"],[0,\\\"\\\\n\\\\n\\\\t\\\"],[2,\\\"<svg version=\\\\\\\"1.1\\\\\\\" id=\\\\\\\"loader-1\\\\\\\" xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" xmlns:xlink=\\\\\\\"http://www.w3.org/1999/xlink\\\\\\\" x=\\\\\\\"0px\\\\\\\" y=\\\\\\\"0px\\\\\\\"\\\\n\\\\t\\\\twidth=\\\\\\\"110px\\\\\\\" height=\\\\\\\"110px\\\\\\\" viewBox=\\\\\\\"0 0 50 50\\\\\\\" style=\\\\\\\"enable-background:new 0 0 50 50;\\\\\\\" xml:space=\\\\\\\"preserve\\\\\\\">\\\\n\\\\t\\\\n\\\\t\\\\t<path fill=\\\\\\\"#0277BD\\\\\\\" d=\\\\\\\"M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z\\\\\\\">\\\\n\\\\t\\\\t\\\\t<animateTransform attributeType=\\\\\\\"xml\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\tattributeName=\\\\\\\"transform\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\ttype=\\\\\\\"rotate\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\tfrom=\\\\\\\"0 25 25\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\tto=\\\\\\\"360 25 25\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\tdur=\\\\\\\"0.6s\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\trepeatCount=\\\\\\\"indefinite\\\\\\\"/>\\\\n\\\\t\\\\t</path>\\\\n\\\\t</svg>\\\"],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"svg\\\"],[9,\\\"version\\\",\\\"1.1\\\"],[9,\\\"id\\\",\\\"loader-1\\\"],[9,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[9,\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[9,\\\"x\\\",\\\"0px\\\"],[9,\\\"y\\\",\\\"0px\\\"],[9,\\\"width\\\",\\\"150px\\\"],[9,\\\"height\\\",\\\"150px\\\"],[9,\\\"viewBox\\\",\\\"0 0 40 40\\\"],[9,\\\"enable-background\\\",\\\"new 0 0 40 40\\\"],[9,\\\"xml:space\\\",\\\"preserve\\\",\\\"http://www.w3.org/XML/1998/namespace\\\"],[7],[0,\\\"\\\\n\\\\t\\\\n\\\\t\\\\t\\\"],[6,\\\"path\\\"],[9,\\\"opacity\\\",\\\"0.2\\\"],[9,\\\"fill\\\",\\\"#0277BD\\\"],[9,\\\"d\\\",\\\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\\\\n\\\\t\\\\t\\\\ts14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\\\\n\\\\t\\\\t\\\\tc0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"path\\\"],[9,\\\"fill\\\",\\\"#0277BD\\\"],[9,\\\"d\\\",\\\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\\\\n\\\\t\\\\t\\\\tC20.32,8.481,24.301,9.057,26.013,10.047z\\\"],[7],[0,\\\"\\\\n\\\\t\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"animateTransform\\\"],[9,\\\"attributeType\\\",\\\"xml\\\"],[9,\\\"attributeName\\\",\\\"transform\\\"],[9,\\\"type\\\",\\\"rotate\\\"],[9,\\\"from\\\",\\\"0 20 20\\\"],[9,\\\"to\\\",\\\"360 20 20\\\"],[9,\\\"dur\\\",\\\"0.7s\\\"],[9,\\\"repeatCount\\\",\\\"indefinite\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"loadingMessage\\\"],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-save-message.hbs\" } });\n});","define(\"busy-app/templates/components/busy-save\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"A1fa8QXO\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"autosave-signal \\\",[25,\\\"if\\\",[[20,[\\\"isShowing\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saving \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savingMessageText\\\"],false],[0,\\\" \\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/loaderc.gif\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saved \\\",[25,\\\"if\\\",[[20,[\\\"isSaved\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savedMessageText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"isError\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"errorMessageText\\\"],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-save.hbs\" } });\n});","define(\"busy-app/templates/components/busy-search-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"zxnOYjdT\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"c-icon search-icon\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"submitAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"text-field\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"onKeyUp\\\",\\\"enter\\\"],[[20,[\\\"keyword\\\"]],[20,[\\\"placeholder\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"keyPressAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"submitAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-search-bar.hbs\" } });\n});","define(\"busy-app/templates/components/busy-select-checkbox\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rMB3+drs\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"iconName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"onClick\\\",\\\"bubbles\\\"],[\\\"icon\\\",[20,[\\\"iconName\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"small\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"onClick\\\",\\\"bubbles\\\"],[\\\"icon\\\",\\\"more_vert\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"menuTitle\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-container\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"stopPropagation\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"defaultValue\\\",\\\"selectItem\\\",\\\"action\\\"],[[25,\\\"get-val\\\",[[19,1,[]],[20,[\\\"itemLabel\\\"]]],null],[25,\\\"get-val\\\",[[19,1,[]],[20,[\\\"itemVal\\\"]]],null],[19,1,[]],\\\"selectChange\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-select-checkbox.hbs\" } });\n});","define(\"busy-app/templates/components/busy-select-create\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ZhQK6fYw\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"iconName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\",\\\"bubbles\\\"],[\\\"icon\\\",[20,[\\\"iconName\\\"]],[20,[\\\"menuTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"small\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\",\\\"bubbles\\\"],[\\\"icon\\\",\\\"more_vert\\\",[20,[\\\"menuTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[10,\\\"title\\\",[18,\\\"menuTitle\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"menuTitle\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"ul\\\"],[10,\\\"class\\\",[26,[\\\"select-container\\\",[25,\\\"if\\\",[[20,[\\\"canEditItems\\\"]],\\\" edit\\\"],null],[25,\\\"if\\\",[[20,[\\\"isItemEdit\\\"]],\\\"\\\",\\\" all\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"stopPropagation\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scroll-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"add-item\\\",[25,\\\"if\\\",[[20,[\\\"canAddItem\\\"]],\\\" active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"onSubmit\\\",\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"addPlaceholder\\\"]],false,\\\"saveNewItem\\\",[20,[\\\"addNewValue\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"saveNewItem\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancelAddnewItem\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"defaultList\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"defaultList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"_selected\\\"]],\\\"selected\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"clickItemAction\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"get-val\\\",[[19,2,[]],[20,[\\\"itemLabel\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"line\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"edit-list\\\",[25,\\\"if\\\",[[19,1,[\\\"_selected\\\"]],\\\" selected\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"canEdit\\\"]],\\\" edit\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"text-field\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"model\\\",\\\"valuePath\\\",\\\"disabled\\\",\\\"enter\\\"],[\\\"text\\\",\\\"list-item-text-field\\\",[19,1,[]],[20,[\\\"itemLabel\\\"]],[25,\\\"if\\\",[[19,1,[\\\"canEdit\\\"]],false,true],null],\\\"saveItem\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cover\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"itemClickAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editSelectItem\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"delete-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showDeleteDialog\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"canEditItems\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isItemEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"saveItem\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancelItem\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"doneEditItems\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addNewItem\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editItems\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/delete-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"deleteListItem\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Confirm Delete\\\"],null],[25,\\\"busy-loc\\\",[\\\"Are you sure you want to delete this?\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-select-create.hbs\" } });\n});","define(\"busy-app/templates/components/busy-signature-pad\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"vlGqnnqM\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"ember-jsignature\\\",null,[[\\\"exportFormat\\\",\\\"color\\\",\\\"background-color\\\",\\\"decor-color\\\",\\\"showUndoButton\\\",\\\"lineWidth\\\",\\\"width\\\",\\\"height\\\",\\\"command\\\",\\\"changeListener\\\"],[\\\"native\\\",[20,[\\\"color\\\"]],[20,[\\\"backgroundColor\\\"]],[20,[\\\"lineColor\\\"]],[20,[\\\"showUndoButton\\\"]],[20,[\\\"lineWidth\\\"]],\\\"100%\\\",\\\"100%\\\",[20,[\\\"command\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onChange\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-signature-pad.hbs\" } });\n});","define(\"busy-app/templates/components/busy-sliding-panel\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rRkpGVs6\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"ember-wormhole\\\",null,[[\\\"to\\\"],[\\\"modal-overlays\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"busy-sliding-panel\\\",[25,\\\"if\\\",[[20,[\\\"showContainer\\\"]],\\\" show-container\\\"],null],[25,\\\"if\\\",[[20,[\\\"isHidden\\\"]],\\\" hidden\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overlay\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"]],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"panel\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"panel-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"title\\\"]],\\\"title\\\",\\\"no-title\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"title\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"close\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPanel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-sliding-panel.hbs\" } });\n});","define(\"busy-app/templates/components/busy-status-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"IchhKHjK\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"status-bar-section status-bar-section-primary\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"c-icon \\\",[18,\\\"icon\\\"],\\\"-icon \\\",[25,\\\"if\\\",[[20,[\\\"spin\\\"]],\\\"icon-spin\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"spinCounter\\\"]],\\\"icon-spin-counter\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[18,\\\"text\\\"]]]],[10,\\\"class\\\",[26,[\\\"status-text \\\",[25,\\\"if\\\",[[20,[\\\"hasTextAction\\\"]],\\\"clickable\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onTextAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"text\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"subText\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[18,\\\"subText\\\"]]]],[10,\\\"class\\\",[26,[\\\"status-sub-text \\\",[25,\\\"if\\\",[[20,[\\\"hasSubTextAction\\\"]],\\\"clickable\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onSubTextAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"subText\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"status-bar-section status-bar-section-secondary\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"badgeText\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[18,\\\"badgeText\\\"]]]],[10,\\\"class\\\",[26,[\\\"status-badge \\\",[25,\\\"if\\\",[[20,[\\\"hasBadgeAction\\\"]],\\\"clickable\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onBadgeAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"badgeText\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"detailsLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[18,\\\"detailsLabel\\\"]]]],[10,\\\"class\\\",[26,[\\\"status-details-label \\\",[25,\\\"if\\\",[[20,[\\\"hasDetailsLabelAction\\\"]],\\\"clickable\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onDetailsLabelAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"detailsLabel\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"detailsText\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[18,\\\"detailsText\\\"]]]],[10,\\\"class\\\",[26,[\\\"status-details-text \\\",[25,\\\"if\\\",[[20,[\\\"hasDetailsTextAction\\\"]],\\\"clickable\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onDetailsTextAction\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"detailsText\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-status-bar.hbs\" } });\n});","define(\"busy-app/templates/components/busy-terms\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"hlCO8D1o\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTermsDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busy-terms\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue back-to-top \\\",[25,\\\"if\\\",[[20,[\\\"isScrolled\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"scrollToTop\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Table of Contents\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"title\\\",\\\"busybusy.com, Inc.\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"USER AGREEMENT\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"THIS AGREEMENT COVERS YOUR USE OF OUR SERVICES to which you or a third party which will give you access, such as an employer, have subscribed.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"By using the services, you agree to the terms of this agreement. If you are entering into this agreement on behalf or any other legal entity, you represent that you have the authority to bind that entity to these terms and conditions.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This Agreement was last updated on July 15, 2013. It is effective between You and Us as of the date of You accepting this Agreement.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"nav\\\"],[9,\\\"id\\\",\\\"navigation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h4\\\"],[7],[0,\\\"Table of Contents\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"definition\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Definitions\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"provision\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Provision of Services\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"services\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Use of the Services\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"providers\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Non-busybusy.com Providers\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"purchased\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Fees and Payment for Purchased Services\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"proprietary\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Proprietary Rights\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"confidentiality\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Confidentiality\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"warranties\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warranties and Disclaimers\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"indemnification\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Mutual Indemnification\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"liability\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Limitation of Liability\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"termination\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Term and Termination\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"contracting\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Who You Are Contracting With, Notices, Governing Law and Jurisdiction\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scrollTo\\\",\\\"general\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"General Provisions\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"definition\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"DEFINITIONS\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[0,\\\"\\\\\\\"\\\"],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Affiliate\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means any entity which directly or indirectly controls,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tis controlled by, or is under common control with the subject entity. Control, for purposes of this definition,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tmeans direct or indirect ownership or control of more than 50% of the voting interests of the subject entity.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"AppExchange\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means the online directory of applications that interoperate with the\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tbusybusy.com site, busy-located within the busybusy.com site or at any successor websites.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Malicious Code\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means viruses, worms, time bombs, Trojan horses and other harmful or malicious code, files, scripts, agents or programs.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\\\\"\\\"],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Non-busybusy.com Applications\\\"],null],false],[0,\\\"\\\\\\\"\\\"],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means online applications and offline software products\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthat are provided by entities or individuals other than Us and are clearly identified as such, and that interoperate with the busybusy.com site.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Purchased Services\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means Services that You or Your affiliates, agents, employers,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tconsultants, contractors, or other 3rd parties which will give You access, purchase from busybusy.com.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Services\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means the products and services that are available on the busybusy.com site\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tand made available by Us online. “Services” exclude Non-busybusy.com Applications.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Users\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means individuals who are authorized by You to use the Services, for whom subscriptions to a\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tService have been ordered, and who have been supplied user identifications and passwords by You (or by Us at Your request).\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tUsers may include but are not limited to Your employees, consultants, contractors and agents, and third parties with which You transact business.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"We,\\\\\\\" \\\\\\\"Us\\\\\\\" or \\\\\\\"Our\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means the busybusy.com company described in Section 12.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"You\\\\\\\" or \\\\\\\"Your\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means You, the company or other legal entity for which you are accepting this\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tAgreement, and Affiliates, employees, agents, consultants, contractors or other third parties who You give access to, for that company or entity.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"Your Data\\\\\\\"\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"means all electronic data or information submitted by You to the Services.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"provision\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Provision of Services\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"We will make the Services available to You as they become available as for which You have subscribed. This includes access to the Free Services.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tOnce You have opened an account, you can open a business or personal workspaces and give access to others to operate within it.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tAs additional features are developed within the subscription area that You have purchased, You will be given access for your business\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tpurposes. As additional subscription services are developed, You will be advised that the same are available, and You may expand your\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tsubscription to include such services. In the event that you discontinue any services with Us, you will be given notice of a timeframe during\\\\r\\\\n\\\\t\\\\t\\\\t\\\\twhich You may capture any data that You have placed in the system if you do not desire to continue with the paid services. Your use hereunder are\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tneither contingent on the delivery of any future functionality or features nor dependent on any oral or written public comments made by Us regarding future functionality or features.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"services\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"USE OF THE SERVICES\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Our Responsibilities.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We will (i) provide basic support for the Services to You at no charge (ii) make available to\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tyou paid services as provided on the website from time to time, for which the charges are explained on the website (iii) use commercially\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\treasonable efforts to make the Services available 24 hours a day, 7 days a week, except for: (a) planned downtime (of which We shall give\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tat least 8 hours notice, or (b) any unavailability caused by circumstances beyond Our reasonable control, including without limitation,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tacts of God, acts of government, floods, fires, earthquakes, civil unrest, acts of terror, strikes or other labor problems (other than\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthose involving Our employees), Internet service provider failures or delays, or denial of service attacks, and (iv) provide the\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tServices only in accordance with applicable laws and government regulations.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Our Protection of Your Data.\\\"],null],false],[8],[0,\\\" \\\"],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"We will maintain appropriate administrative, physical, and technical safeguards for\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tprotection of the security, confidentiality and integrity of Your Data. We shall not (a) modify Your Data, (b) disclose Your Data except\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tas compelled by law in accordance with Section 8.3 (Compelled Disclosure) or as expressly permitted in writing by You, or (c) access Your\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tData except to provide the Services and prevent or address service or technical problems, or at Your request in connection with\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tcustomer support matters.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"ANY DATA YOU ENTER INTO THE SERVICES, AND ANY CUSTOMIZATIONS MADE TO THE SERVICES BY OR FOR YOU, WILL BE PERMANENTLY LOST\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tIF YOU DISCONTINUE OUR SERVICES AND DO NOT PERFORM FUNCTIONS TO RETIAN YOUR DATA. IF YOU PURCHASE A SERVICE THAT WOULD BE A\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tDOWNGRADE FROM THAT COVERED BY YOUR CURRENT SERVICE, YOU MUST EXPORT YOUR DATA BEFORE THE DOWNGRADE SERVICE GOES INTO EFFECT OR YOUR\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tDATA WILL BE PERMANENTLY LOST. NOTWITHSTANDING SECTION 8 (WARRANTIES AND DISCLAIMERS), BUSYBUSY IS NOT RESPOSIBLE FOR ANY\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tUSER ERROR IN THE EVENT THAT DATA CREATED OR LOST RESULTS IN ANY LEGAL ISSUES OR LAWSUITS.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your Responsibilities.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You shall (i) be responsible for Users’ compliance with this Agreement. This means that\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tif You create a business or personal workspace for others to interact on, each of them must open an account, and be\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tresponsible for compliance with these Terms and Conditions, (ii) be responsible for the accuracy, quality and legality of Your Data and\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tof the means by which You acquired Your Data, (iii) use commercially reasonable efforts to prevent unauthorized access to or use of the\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tServices, and notify Us promptly of any such unauthorized access or use, and (iv) use the Services only in accordance with the\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tinformation presented on the website, any User Guide and applicable laws and government regulations. You shall not (a) make the Services\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tavailable to anyone other than Users, (b) sell, resell, rent or lease the Services, (c) use the Services to store or transmit infringing,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tlibelous, or otherwise unlawful or tortious material, or to store or transmit material in violation of third-party privacy rights, (d) use\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthe Services to store or transmit Malicious Code, (e) interfere with or disrupt the integrity or performance of the Services or third-party\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tdata contained therein, or (f) attempt to gain unauthorized access to the Services or their related systems or networks. You must advise\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tUsers on any business workspace which you create, that when Users interface in that business workspace, enter time, upload pictures,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tor post any other data, that You will be collecting that data and using it for analysis, trending, other business purposes, and\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tincluding GPS (global positioning system) stamping.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Usage Limitations.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Services may be subject to other limitations, such as, for example, limits on disk storage space.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"providers\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"NON-BUSYBUSY.COM PROVIDERS\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Acquisition of Non-busybusy.com Products and Services.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We or third parties may from time to time make available to You\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthird-party products or services. Any acquisition by You of such products or services, and any exchange of data between You and any other\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tentity, is solely between You and the applicable provider. We do not warrant or support non-busybusy.com products or services.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Non-busybusy.com Applications and Your Data.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"If You install or enable Non-busybusy.com Applications for use\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\twith Services, You acknowledge that We may allow providers of those Non-busybusy.com Applications to access Your Data as required for\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthe interoperation of such Services. We shall not be responsible for any disclosure, modification or deletion of\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tYour Data resulting from any such access.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Integration with Non-busybusy.com Services.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"The Services may contain features designed to interoperate with Applications such as\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tGoogle, Facebook or Twitter. To use such features, You may be required to obtain access to such Applications from their providers.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"purchased\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"FEES AND PAYMENT FOR PURCHASED SERVICES\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Fees for purchased services are posted on the site. When you subscribe to any of these services, you will be asked for a payment method.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"proprietary\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"PROPRIETARY RIGHTS\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reservation of Rights in Services.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Subject to the limited rights expressly granted hereunder, We reserve all rights, title and interest in and to the Services, including all related intellectual property rights. No rights are granted to You hereunder other than as expressly set forth herein.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Restrictions.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You shall not (i) permit any third party to access the Services except as permitted herein, (ii) create derivate works based on the Services except as authorized herein, (iii) copy, frame or mirror any part or content of the Services, other than copying or framing on Your own intranets or otherwise for Your own internal business purposes, (iv) reverse engineer the Services, or (v) access the Services in order to (a) build a competitive product or service, or (b) copy any features, functions or graphics of the Services.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your Applications and Code. If You, a third party acting on Your behalf, or a User creates applications or program code using the Services, You authorize Us to host, copy, transmit, display and adapt such applications and program code, solely as necessary for Us to provide the Services in accordance with this Agreement. Subject to the above, We acquire no right, title or interest from You or Your licensors under this Agreement in or to such applications or program code, including any intellectual property rights therein.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your Data. Subject to the limited rights granted by You hereunder, We acquire no right, title or interest from You or Your licensors under this Agreement in or to Your Data, including any intellectual property rights therein.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Suggestions. We shall have a royalty-free, worldwide, irrevocable, perpetual license to use and incorporate into the Services any suggestions, enhancement requests, recommendations or other feedback provided by You, including Users, relating to the operation of the Services.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Federal Government End Use Provisions.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We provide the Services, including related software and technology, for ultimate federal government end use solely in accordance with the following: Government technical data and software rights related to the Services include only those rights customarily provided to the public as defined in this Agreement. This customary commercial license is provided in accordance with FAR 12.211 (Technical Data) and FAR 12.212 (Software) and, for Department of Defense transactions, DFAR 252.227-7015 (Technical Data – Commercial Items) and DFAR 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). If a government agency has a need for rights not conveyed under these terms, it must negotiate with Us to determine if there are acceptable terms for transferring such rights, and a mutually acceptable written addendum specifically conveying such rights must be included in any applicable contract or agreement.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"confidentiality\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"CONFIDENTIALITY\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Definition of Confidential Information.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"As used herein, \\\\\\\"Confidential Information\\\\\\\" means all confidential information disclosed by a party (\\\\\\\"Disclosing Party\\\\\\\") to the other party (\\\\\\\"Receiving Party\\\\\\\"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and the circumstances of disclosure. Your Confidential Information shall include Your Data (with the exception of data entered into other’s business or personal workspaces, as delineated in Section 3.3 above); Our Confidential Information shall include the Services; and Confidential Information of each party shall include the terms and conditions of this Agreement and all Order Forms, as well as business and marketing plans, technology and technical information, product plans and designs, and business processes disclosed by such party. However, Confidential Information (other than Your Data) shall not include any information that (i) is or becomes generally known to the public without breach of any obligation owed to the Disclosing Party, (ii) was known to the Receiving Party prior to its disclosure by the Disclosing Party without breach of any obligation owed to the Disclosing Party, (iii) is received from a third party without breach of any obligation owed to the Disclosing Party, or (iv) was independently developed by the Receiving Party.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Protection of Confidential Information.\\\"],null],false],[0,\\\"\\\\\\\"\\\"],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"The Receiving Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind (but in no event less than reasonable care) (i) not to use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement, and (ii) except as otherwise authorized by the Disclosing Party in writing, to limit access to Confidential Information of the Disclosing Party to those of its and its Affiliates’ employees, contractors and agents who need such access for purposes consistent with this Agreement and who have signed confidentiality agreements with the Receiving Party containing protections no less stringent than those herein. Neither party shall disclose the terms of this Agreement or any Order Form to any third party other than its Affiliates and their legal counsel and accountants without the other party’s prior written consent.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Compelled Disclosure.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"The Receiving Party may disclose Confidential Information of the Disclosing Party if it is compelled by law to do so, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party&rsquo;s cost, if the Disclosing Party wishes to contest the disclosure. If the Receiving Party is compelled by law to disclose the Disclosing Party&rsquo;s Confidential Information as part of a civil proceeding to which the Disclosing Party is a party, and the Disclosing Party is not contesting the disclosure, the Disclosing Party will reimburse the Receiving Party for its reasonable cost of compiling and providing secure access to such Confidential Information.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"warranties\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"WARRANTIES AND DISCLAIMERS\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Our Warranties.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We warrant that (i) We have validly entered into this Agreement and have the legal power to do so, and (ii) We will not transmit Malicious Code to You, provided it is not a breach of this subpart (v) if You or a User uploads a file containing Malicious Code into the Services and later downloads that file containing Malicious Code. For any breach of a warranty above, Your exclusive remedy shall be as provided in Section 11 (Term and Termination).\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your Warranties.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You warrant that You have validly entered into this Agreement and have the legal power to do so.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Disclaimer.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"EXCEPT AS EXPRESSLY PROVIDED HEREIN, NEITHER PARTY MAKES ANY WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"indemnification\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"MUTUAL INDEMNIFICATION\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Indemnification by Us.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"We shall defend You against any claim, demand, suit, or proceeding made or brought against You by a third party alleging that the use of the Services as permitted hereunder infringes or misappropriates the intellectual property rights of a third party (a \\\\\\\"Claim Against You\\\\\\\"), and shall indemnify You for any damages, attorney fees and costs finally awarded against You as a result of, and for amounts paid by You under a court-approved settlement of, a Claim Against You; provided that You (a) promptly give Us written notice of the Claim Against You; (b) give Us sole control of the defense and settlement of the Claim Against You (provided that We may not settle any Claim Against You unless the settlement unconditionally releases You of all liability);\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"and (c) provide to Us all reasonable assistance, at Our expense. In the event of a Claim Against You, or if We reasonably believe the Services may infringe or misappropriate, We may in Our discretion and at no cost to You (i) modify the Services so that they no longer infringe or misappropriate, without breaching Our warranties under “Our Warranties” above, or (ii) obtain a license for Your continued use of the Services in accordance with this Agreement.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Indemnification by You.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You shall defend Us against any claim, demand, suit or proceeding made or brought against Us by a third party alleging that Your Data, or Your use of the Services in breach of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law (a \\\\\\\"Claim Against Us\\\\\\\"), and shall indemnify Us for any damages, attorney fees and costs finally awarded against Us as a result of, or for any amounts paid by Us under a court-approved settlement of, a Claim Against Us; provided that We (a) promptly give You written notice of the Claim Against Us; (b) give You sole control of the defense and settlement of the Claim Against Us (provided that You may not settle any Claim Against Us unless the settlement unconditionally releases Us of all liability); and (c) provide to You all reasonable assistance, at Your expense.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Exclusive Remedy.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"This Section 10 (Mutual Indemnification) states the indemnifying party’s sole liability to, and the indemnified party’s exclusive remedy against, the other party for any type of claim described in this Section.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"liability\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"LIMITATION OF LIABILITY\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Limitation of Liability.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"NEITHER PARTY'S LIABILITY WITH RESPECT TO ANY SINGLE INCIDENT ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) SHALL EXCEED THE LESSER OF $500,000 OR THE AMOUNT PAID BY YOU HEREUNDER IN THE 12 MONTHS PRECEDING THE INCIDENT, PROVIDED THAT IN NO EVENT SHALL EITHER PARTY’S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT (WHETHER IN CONTRACT OR TORT OR UNDER ANY OTHER THEORY OF LIABILITY) EXCEED THE TOTAL AMOUNT PAID BY YOU HEREUNDER. This clause does not apply to instances as defined in Paragraph 6.2 of this agreement, nor if you violate the primary terms of this agreement:\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\\\\\"You may not access the Services if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Services for purposes of monitoring their availability, performance or functionality, or for any other benchmarking or competitive purposes.\\\\\\\"\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"In such event, damages will be determined by a court of competent jurisdiction or settled by arbitration.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Exclusion of Consequential and Related Damages.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"IN NO EVENT SHALL EITHER PARTY HAVE ANY LIABILITY TO THE OTHER PARTY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE FOREGOING DISCLAIMER SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"termination\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TERM AND TERMINATION\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Term of Agreement.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"This Agreement commences on the date You accept it and continues until you discontinue use of the services.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Termination (i) upon 30 days written notice, either party may terminate this agreement.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Return of Your Data.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"Upon request by You made within 30 days after the effective date of termination of a Purchased Services subscription, We will make available to You for download a file of Your Data along with attachments in their native format. After such 30-day period, We shall have no obligation to maintain or provide any of Your Data and shall thereafter, unless legally prohibited, delete all of Your Data in Our systems or otherwise in Our possession or under Our control.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Surviving Provisions.\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"Section 6 (Proprietary Rights), 7 (Confidentiality), 8 (Disclaimer), 9 (Mutual Indemnification), 10 (Limitation of Liability), 11.3 (Return of Your Data), 12, Notices, Governing Law and Jurisdiction and 13 (General Provisions) shall survive any termination or expiration of this Agreement.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"contracting\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"WHO YOU ARE CONTRACTING WITH, NOTICES, GOVERNING LAW AND JURISDICTION\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"You are contracting with busybusy, Inc, a Nevada Corporation, whose address is:\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"7477 W. Lake Mead Blvd\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Las Vegas, NV 89128-1028\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This is the address that you must use for any notices to Us.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This Agreement is made subject to and shall be governed by and construed under the laws of the State of Nevada, without regard to conflicts of laws principles. Any legal action or proceeding relating to this Agreement shall be instituted in a state or federal court in Clark County, Nevada, except that injunctive or other equitable relief may be sought from any U.S. court of competent jurisdiction. The User acknowledges that the extent of damages to Us in the event of the breach of any provision of this Agreement by the User would be difficult or impossible to ascertain, and that there will be available no adequate remedy at law in the event of any such breach. The User therefore agrees that in the event it breaches any provision of this Agreement, We will be entitled to seek injunctive or other equitable relief, in addition to any other relief or remedies to which it may be entitled at law or in equity. If any arbitration or litigation is commenced between or among parties to this Agreement or their personal representatives concerning any provisions of this Agreement, or the rights and duties of any person in relation thereto, the court or arbitrator, as the case may be, may award to the party or parties prevailing in such arbitration or litigation, in addition to such other relief as may be granted, a reasonable sum for their attorneys’ fees\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"id\\\",\\\"general\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"General\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No failure or delay by a party in exercising any right under this Agreement will operate as a waiver of such right or any other right under this Agreement. In the event any provision of this Agreement is for any reason held to be invalid, illegal or unenforceable in any respect, the remaining provisions of this Agreement will remain in full force and effect to the maximum extent possible. This Agreement constitutes the entire agreement between the parties hereto relating to the subject matter hereof. All prior or contemporaneous agreements or understandings between the parties relating to the subject matter hereof, whether oral or written, are superseded by and merged into this Agreement. No amendment or modification of this Agreement will be valid or binding on the parties unless the same is in writing and executed on behalf of each party by its duly authorized representative.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"style\\\",\\\"text-align: center;\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"END of User Agreement\\\"],null],false],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"If you have any questions or concerns regarding this agreement,\\\"],null],false],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"please contact us at legal@busybusy.com\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-terms.hbs\" } });\n});","define(\"busy-app/templates/components/busy-time-picker\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Chf98np7\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"selector\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"text-field\\\",null,[[\\\"value\\\",\\\"seconds\\\",\\\"onBlur\\\",\\\"enter\\\"],[[20,[\\\"value\\\"]],[20,[\\\"seconds\\\"]],\\\"focusOutAction\\\",\\\"enterAction\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"button-container\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggle\\\"],[[\\\"bubbles\\\"],[true]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon clock-icon\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"fs-ignore-rage-clicks dropdown-menu \\\",[25,\\\"if\\\",[[20,[\\\"isOpen\\\"]],\\\"active\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"isTime\\\"]],\\\"time\\\",\\\"elapsed\\\"],null]]]],[7],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleHours\\\",1],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"glyphicon glyphicon-chevron-up\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"separator\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minutes\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMinutes\\\",1],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"glyphicon glyphicon-chevron-up\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"period\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[18,\\\"hourString\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"separator\\\"],[7],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minutes\\\"],[7],[1,[18,\\\"minuteString\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"period\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"changePeriod\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button btn-period\\\"],[7],[1,[18,\\\"periodString\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleHours\\\",0],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"separator\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minutes\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMinutes\\\",0],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"period\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-time-picker.hbs\" } });\n});","define(\"busy-app/templates/components/busy-title\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Bv1GQNYB\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"titleName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"titleName\\\"],false],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"buttonName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"buttonClick\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"buttonName\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/busy-title.hbs\" } });\n});","define(\"busy-app/templates/components/charts/legacy-bar-chart\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"8vG/dlqs\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"graphData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"graph-container page-color page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"titleSelected\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"title\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-container page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-graph\\\"],[10,\\\"style\\\",[19,1,[\\\"hoursStyle\\\"]],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-number\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"hoursString\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-container page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-graph\\\"],[10,\\\"style\\\",[19,1,[\\\"costStyle\\\"]],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-number\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"costString\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/charts/legacy-bar-chart.hbs\" } });\n});","define(\"busy-app/templates/components/charts/progress-chart\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"5FsY5ZYA\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"graph\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"right-fill\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[18,\\\"rightFillStyle\\\"],null],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"left-fill\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[18,\\\"leftFillStyle\\\"],null],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"center-fill\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"style\\\",[18,\\\"graphColorSafe\\\"],null],[7],[1,[18,\\\"percentString\\\"],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/charts/progress-chart.hbs\" } });\n});","define(\"busy-app/templates/components/clear-float\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"oJc9HQ9D\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/clear-float.hbs\" } });\n});","define(\"busy-app/templates/components/company/deactivate-account\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"KDEpTbfD\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Downgrade Account\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"submitAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-deactivate-account\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isFreeAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item account padded\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\",\\\"name\\\",\\\"label\\\",\\\"class\\\"],[\\\"isDowngrade\\\",[20,[\\\"isDowngrade\\\"]],\\\"selectCancelType\\\",\\\"downgrade\\\",[25,\\\"busy-loc\\\",[\\\"Free Account\\\"],null],\\\"red\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Downgrade to a Free account and remove access to Pro features\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item account padded\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\",\\\"name\\\",\\\"label\\\",\\\"class\\\"],[\\\"isDelete\\\",[20,[\\\"isDelete\\\"]],\\\"selectCancelType\\\",\\\"downgrade\\\",[25,\\\"busy-loc\\\",[\\\"Delete Account\\\"],null],\\\"red\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Permanently destroy your company records and close your busybusy account for yourself and all employees.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item account padded\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What made you leave?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"placeholder\\\",\\\"value\\\"],[\\\"Please tell us what we could do better.\\\",[20,[\\\"cancelReason\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item padded\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/deactivate-account.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/grid/grid-item-base\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"flygw3RQ\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/grid/grid-item-base.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/grid/grid-item\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"2Q8wb2Ti\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"integration-logo-wrapper\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isBeta\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/beta-04.png\\\"],[9,\\\"class\\\",\\\"integration-beta-flag\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[18,\\\"logo\\\"]]]],[9,\\\"class\\\",\\\"integration-logo\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"status\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\",\\\"spinCounter\\\"],[\\\"refresh\\\",\\\"Loading...\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"notFeatureEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"hasError\\\",\\\"icon\\\",\\\"text\\\"],[true,\\\"cancel\\\",[25,\\\"busy-loc\\\",[\\\"Subscription Required\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"hasError\\\",\\\"icon\\\",\\\"text\\\",\\\"subText\\\"],[true,\\\"cancel-red\\\",[20,[\\\"errorType\\\"]],[20,[\\\"errorMessage\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isInProgress\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\",\\\"subText\\\"],[\\\"check\\\",[25,\\\"busy-loc\\\",[\\\"Connected\\\"],null],[25,\\\"busy-loc\\\",[\\\"Import in progress\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isConnected\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"check\\\",[25,\\\"busy-loc\\\",[\\\"Connected\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"cancel\\\",[25,\\\"busy-loc\\\",[\\\"Not Connected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/grid/grid-item.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/integration-dashboard\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"BHhbxDWf\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/integration-dashboard.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/oauth-callback\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eONBX/s4\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"hasBackButton\\\",\\\"headerTitle\\\"],[true,[20,[\\\"integrationLabel\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integration-callback\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"rpcError\\\",\\\"errorType\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Error\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"Error Type: \\\"],[1,[20,[\\\"rpcError\\\",\\\"errorType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[0,\\\"Error Message: \\\"],[1,[20,[\\\"rpcError\\\",\\\"errorMessage\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",[[20,[\\\"dashboardUrl\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Return to Dashboard\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/oauth-callback.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/sync-log-dialog/log-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"w5Zx95xQ\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"onSave\\\"],[[20,[\\\"headerTitle\\\"]],[20,[\\\"closeText\\\"]],[20,[\\\"printText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onPrint\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog v-company-settings-integrations-sync-log\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoadingIntegrationAttempts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"spinCounter\\\",\\\"text\\\"],[\\\"refresh\\\",true,[25,\\\"busy-loc\\\",[\\\"Loading Log Entries...\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"integrationAttempts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sync-log-attempt-selector clearfix\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[\\\"left\\\",[20,[\\\"selectMenuOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectMenuOption\\\"],null],\\\"label\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sync-log-details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoadingIntegrationLog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"spinCounter\\\",\\\"text\\\"],[\\\"refresh\\\",true,[25,\\\"busy-loc\\\",[\\\"Loading Log Details...\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees Import\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"employee\\\",\\\"importEntries\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees Export\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"employee\\\",\\\"exportEntries\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects Import\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"project\\\",\\\"importEntries\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects Export\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"project\\\",\\\"exportEntries\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Import\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"costcode\\\",\\\"importEntries\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-section\\\",null,[[\\\"titleName\\\",\\\"entries\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Export\\\"],null],[20,[\\\"sectionizedIntegrationLogs\\\",\\\"costcode\\\",\\\"exportEntries\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No results\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/sync-log-dialog/log-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/sync-log-dialog/log-section\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"GFMvLO89\", \"block\": \"{\\\"symbols\\\":[\\\"entry\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[20,[\\\"titleName\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"sync-log-section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"entries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"resource\\\",\\\"name\\\"]],[19,1,[\\\"resource\\\",\\\"name\\\"]],[19,1,[\\\"resourceId\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"status\\\"],[7],[1,[19,1,[\\\"action\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/sync-log-dialog/log-section.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/sync-log-errors-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dKoPmVGb\", \"block\": \"{\\\"symbols\\\":[\\\"erroredAttempt\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"onSave\\\"],[[20,[\\\"headerTitle\\\"]],[20,[\\\"closeText\\\"]],[20,[\\\"printText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onPrint\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog v-company-settings-integrations-sync-log-errors\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"integrationAttemptErrors\\\",\\\"isLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"table\\\"],[9,\\\"cellpadding\\\",\\\"0\\\"],[9,\\\"cellspacing\\\",\\\"0\\\"],[7],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"integrationAttemptErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"nowrap\\\",\\\"\\\"],[7],[1,[19,1,[\\\"localeEndTime\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"strong\\\"],[7],[1,[19,1,[\\\"errorType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"pre\\\"],[7],[1,[19,1,[\\\"errorMessage\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[6,\\\"th\\\"],[7],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No errors\\\"],null],false],[8],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"spinCounter\\\",\\\"text\\\"],[\\\"refresh\\\",true,[25,\\\"busy-loc\\\",[\\\"Loading Error Logs...\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/sync-log-errors-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/upgrade-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"0t4RX+lN\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"cancelText\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subscription Required\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This is a premium feature.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To integrate with Procore, go to the subsciption tab and select a package with the appropriate number of employees.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Your first 30 days are free.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you have any questions, please feel free to contact customer service at 856-287-9287.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/upgrade-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/connect-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"EjY1b/q1\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-container\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"headerTitle\\\"]],[20,[\\\"cancelText\\\"]],[20,[\\\"saveText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"if\\\",[[20,[\\\"onSave\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSave\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/instructions-header\\\",null,[[\\\"logo\\\"],[\\\"/images/integration-logos/integration_logos-02.png\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"<em><strong>Important:</strong> busybusy and Procore have different project and cost code structures.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tProjects in Procore are flat, but multi-level in busybusy.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tConversely, cost codes in Procore are multi-level, and flat in busybusy.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tBefore proceeding, please read the following carefully:</em>\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,[[\\\"title\\\"],[[25,\\\"busy-loc\\\",[\\\"What to expect on the initial sync\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"The first time you connect busybusy to Procore, we attempt to link identical employees, projects, and cost codes.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tNext, any unique items found in Procore will be copied to busybusy.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tFinally, any unique items found in busybusy will be synced to Procore.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,[[\\\"title\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost code edits must be performed in Procore\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Procore does not allow integrated apps, such as busybusy, to modify cost codes in their system.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tDue to this limitation, future cost code edits should be performed in Procore, which will then sync down to busybusy.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,[[\\\"title\\\"],[[25,\\\"busy-loc\\\",[\\\"How busybusy handles layered projects during export\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Since Procore does not support sub-projects, busybusy will map all the subproject data to its parent project before exporting it to Procore.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tFor example, if you have a project named “Johnson Home” with a subproject of “Concrete”,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tall hours for the “Concrete” subproject will accrue on the “Johnson Home” parent project in Procore.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tThe project structure you’re familiar with in busybusy will remain unchanged.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,[[\\\"title\\\"],[[25,\\\"busy-loc\\\",[\\\"How busybusy handles layered cost codes during import\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Since busybusy does not support layered cost codes, busybusy converts layered cost codes into individual cost codes.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tFor example, if you have a Procore cost code division of “01” with the title “General Requirements”,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tand that division contains a cost code of “10” with the title “Cash Allowances”,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tthe following two cost codes will appear in busybusy after importing:\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"01 with the description General Requirements\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"01-10 with the description Cash Allowances\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"As you can see in this example, we have adopted the dash ( - ) separator to represent cost code layers in Procore.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tIf your busybusy account has flattened cost codes that you want exported to layered cost codes in Procore,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tyou must make sure your cost codes conform to this convention prior to initiating the initial sync.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tFor example, if you have a cost code in busybusy named 10.400.42, you would need to rename it to 10-400-42.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tYou would also need to create two additional cost codes:\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"10\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"10-400\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you do not create these additional cost codes in busybusy, this would export to Procore as a single-layer cost code having the name “10-400-42”.\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/instructions-section\\\",null,[[\\\"title\\\"],[[25,\\\"busy-loc\\\",[\\\"Other Important Considerations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Procore requires that:\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"all employees have an email address\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"all time entries are associated with a project\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employees and time entries which are missing the required information will not sync to Procore. Adding this information in busybusy at a later time will allow the data to sync.\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/connect-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/disconnect-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"JIXLZAue\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"buttonInfo\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[20,[\\\"buttonInfo\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Are you sure?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Are you sure you want to stop syncing with Procore?\\\"],null],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/disconnect-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/grid-item\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"0Dd28TFX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"company/integrations/grid/grid-item\\\",null,[[\\\"integrationName\\\",\\\"route\\\",\\\"logo\\\",\\\"isBeta\\\",\\\"featureFlag\\\",\\\"errorType\\\",\\\"errorMessage\\\",\\\"isEnabled\\\",\\\"isConnected\\\",\\\"isLoading\\\",\\\"isInProgress\\\",\\\"click\\\"],[[20,[\\\"integrationName\\\"]],[20,[\\\"route\\\"]],[20,[\\\"logo\\\"]],true,[20,[\\\"featureFlag\\\"]],[20,[\\\"errorType\\\"]],[20,[\\\"errorMessage\\\"]],[20,[\\\"isEnabled\\\"]],[20,[\\\"isConnected\\\"]],[20,[\\\"isLoading\\\"]],[20,[\\\"isInProgress\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"clickHandler\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerCloseModal\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerPlanUpgraded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/grid-item.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/integration-dashboard\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QAUi+CtT\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"hasBackButton\\\",\\\"headerTitle\\\",\\\"isBeta\\\",\\\"onBack\\\"],[true,[25,\\\"busy-loc\\\",[\\\"Procore\\\"],null],true,\\\"onBack\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integration-dashboard integration-dashboard-procore\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"logo\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/integration-logos/integration_logos-02.png\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Connecting with Procore will automatically sync employees, projects, and cost codes with busybusy. The Procore integration also automatically exports all busybusy time entries to Procore.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openLearnMoreDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn more\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"status-bar-wrapper\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"error\\\",\\\"icon\\\",\\\"text\\\",\\\"subText\\\"],[true,\\\"cancel-red\\\",[20,[\\\"errorType\\\"]],[20,[\\\"errorMessage\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"spinCounter\\\",\\\"text\\\"],[\\\"refresh\\\",true,[25,\\\"busy-loc\\\",[\\\"Loading Status...\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"organizationIntegration\\\",\\\"enabled\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasAttempt\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isImportInProgress\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"spinCounter\\\",\\\"text\\\",\\\"subText\\\"],[\\\"refresh\\\",true,[20,[\\\"importProgressPercent\\\"]],[25,\\\"busy-loc\\\",[\\\"Currently Syncing...\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasImportCompleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"error\\\",\\\"text\\\",\\\"subText\\\",\\\"detailsLabel\\\",\\\"detailsText\\\",\\\"badgeText\\\",\\\"badgeAction\\\"],[[25,\\\"if\\\",[[20,[\\\"lastAttemptSuccessful\\\"]],\\\"check\\\",\\\"cancel-red\\\"],null],[20,[\\\"lastAttemptFailed\\\"]],[25,\\\"busy-loc\\\",[\\\"Last Import\\\"],null],[20,[\\\"lastSyncTimeLocalized\\\"]],[25,\\\"if\\\",[[20,[\\\"hasImportErrors\\\"]],[25,\\\"busy-loc\\\",[\\\"Issues:\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"hasImportErrors\\\"]],[20,[\\\"errorsSinceSuccess\\\",\\\"count\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"hasImportErrors\\\"]],[25,\\\"busy-loc\\\",[\\\"Show Details\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"hasImportErrors\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openSyncLogErrorsDialog\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\",\\\"subText\\\"],[\\\"check\\\",[25,\\\"busy-loc\\\",[\\\"Last Import\\\"],null],[25,\\\"busy-loc\\\",[\\\"Loading...\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\",\\\"subText\\\"],[\\\"check\\\",[25,\\\"busy-loc\\\",[\\\"Connected\\\"],null],[25,\\\"busy-loc\\\",[\\\"Data not yet imported.\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"cancel\\\",[25,\\\"busy-loc\\\",[\\\"Not Connected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organizationIntegration\\\",\\\"enabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"option\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text header\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSyncLogErrorsDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Error Log\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Review recent syncing errors.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"button-bar\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organizationIntegration\\\",\\\"enabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[2,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<a class=\\\\\\\"d-button blue {{!if isImportInProgress 'disabled'}}\\\\\\\" {{!action (if isImportInProgress \\\\\\\"noop\\\\\\\" \\\\\\\"startManualImport\\\\\\\")}}>{{!busy-loc \\\\\\\"Import\\\\\\\"}}</a>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button red\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openDisconnectDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Disconnect\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openConnectDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Connect to Procore\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConnectDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/procore/connect-dialog\\\",null,[[\\\"headerTitle\\\",\\\"saveText\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"onClose\\\",\\\"openSubscriptionPage\\\"],[[25,\\\"busy-loc\\\",[\\\"Connect\\\"],null],[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],[25,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isProAccount\\\"]],\\\"connectIntegration\\\",\\\"closeConnectAndOpenUpgradeDialog\\\"],null],\\\"closeConnectDialog\\\",\\\"openSubscriptionPage\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDisconnectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDisconnectDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/procore/disconnect-dialog\\\",null,[[\\\"onClose\\\",\\\"onDisconnect\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDisconnectDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"disconnectIntegration\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLearnMoreDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/procore/connect-dialog\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"onClose\\\",\\\"openSubscriptionPage\\\"],[[25,\\\"busy-loc\\\",[\\\"About\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],\\\"closeLearnMoreDialog\\\",\\\"openSubscriptionPage\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSyncLogDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-dialog/log-dialog\\\",null,[[\\\"integrationName\\\",\\\"onClose\\\",\\\"onPrint\\\"],[[20,[\\\"integrationName\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"printSyncLog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSyncLogErrorsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogErrorsDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/sync-log-errors-dialog\\\",null,[[\\\"organizationIntegration\\\",\\\"onClose\\\",\\\"onPrint\\\"],[[20,[\\\"organizationIntegration\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogErrorsDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"printSyncLogErrors\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSettingsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSettingsDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/procore/settings-dialog\\\",null,[[\\\"integrationName\\\",\\\"isImportInProgress\\\",\\\"onClose\\\",\\\"triggerImport\\\"],[[20,[\\\"integrationName\\\"]],[20,[\\\"isImportInProgress\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSettingsDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"startManualImport\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUpgradeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/integrations/upgrade-dialog\\\",null,[[\\\"closeUpgradeDialog\\\",\\\"openSubscriptionPage\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionPage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/integration-dashboard.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/oauth-callback\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"V1IO5MPu\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"hasBackButton\\\",\\\"headerTitle\\\"],[true,[20,[\\\"integrationLabel\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasRpcError\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"abortIntegration\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"cancelText\\\"],[[25,\\\"busy-loc\\\",[\\\"Setup Error\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"abortIntegrationConfirm\\\"],null],[25,\\\"busy-loc\\\",[\\\"Abort Integration\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog v-company-settings-integration-callback-company-options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"An error occurred\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[20,[\\\"rpcError\\\",\\\"debug\\\",\\\"errors\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[6,\\\"pre\\\"],[9,\\\"style\\\",\\\"font-size: 8pt\\\"],[7],[1,[18,\\\"rpcErrorString\\\"],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"abortIntegration\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Complete Setup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"abortIntegrationConfirm\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"finalizeIntegration\\\"],null],[25,\\\"busy-loc\\\",[\\\"Connect\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog v-company-settings-integration-callback-company-options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"v-company-settings-integration-callback-company-options-companies\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Which company would you like to sync to busybusy?\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"procoreCompanies\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectCompany\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"selectedCompanyId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"selected\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Select a company\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"optgroup\\\"],[10,\\\"label\\\",[25,\\\"busy-loc\\\",[\\\"Available Companies\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"procoreCompaniesAvailable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,3,[\\\"id\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedCompanyId\\\"]],[19,3,[\\\"id\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[7],[0,\\\"—\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"optgroup\\\"],[10,\\\"label\\\",[25,\\\"busy-loc\\\",[\\\"Unavailable Companies\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"procoreCompaniesUnavailable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,2,[\\\"id\\\"]],null],[9,\\\"disabled\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"procoreCompaniesAvailable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-status-bar\\\",null,[[\\\"hasError\\\",\\\"icon\\\",\\\"subText\\\"],[true,\\\"cancel-red\\\",[25,\\\"busy-loc\\\",[\\\"No associated Procore companies are eligible for connection.\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If a Procore company has already been connected to busybusy, it must be disconnected from busybusy before it can be re-connected to a new busybusy account.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Loading...\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"selectedCompanyId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"v-company-settings-integration-callback-company-options-costcodes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Which cost codes would you like to sync to busybusy?\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"procoreCostCodeLists\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectCostCodeList\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"selectedCostCodeListId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"selected\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Select a cost code\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[20,[\\\"procoreCostCodeLists\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,1,[\\\"id\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedCostCodeListId\\\"]],[19,1,[\\\"id\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Loading...\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integration-callback\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"rpcError\\\",\\\"errorType\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Error\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"Error Type: \\\"],[1,[20,[\\\"rpcError\\\",\\\"errorType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[0,\\\"Error Message: \\\"],[1,[20,[\\\"rpcError\\\",\\\"errorMessage\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",[[20,[\\\"dashboardUrl\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Return to Dashboard\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/oauth-callback.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/procore/settings-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"nFnPsYtk\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"onCancel\\\",\\\"saveText\\\",\\\"onSave\\\",\\\"errorMessage\\\"],[[25,\\\"busy-loc\\\",[\\\"Procore Settings\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSave\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save and Import\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveAndImport\\\"],null],[20,[\\\"error\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog integration-settings\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"error\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Would you like to run an auto-import each day to retrieve any new Procore data?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[\\\"full\\\",[20,[\\\"autoImportEnabledOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectAutoImportOption\\\"],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"br\\\"],[9,\\\"style\\\",\\\"clear:both\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/procore/settings-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/quickbooks/grid-item\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LPEIvPG5\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"company/integrations/grid/grid-item\\\",null,[[\\\"integrationName\\\",\\\"route\\\",\\\"logo\\\",\\\"featureFlag\\\",\\\"isEnabled\\\",\\\"errorType\\\",\\\"errorMessage\\\",\\\"isConnected\\\",\\\"isLoading\\\",\\\"isInProgress\\\",\\\"click\\\"],[[20,[\\\"integrationName\\\"]],[20,[\\\"route\\\"]],[20,[\\\"logo\\\"]],[20,[\\\"featureFlag\\\"]],[20,[\\\"isEnabled\\\"]],[20,[\\\"errorType\\\"]],[20,[\\\"errorMessage\\\"]],[20,[\\\"isConnected\\\"]],[20,[\\\"isLoading\\\"]],[20,[\\\"isInProgress\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"clickHandler\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[\\\"proFeatureManagerCloseModal\\\",\\\"proFeatureManagerPlanUpgraded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/quickbooks/grid-item.hbs\" } });\n});","define(\"busy-app/templates/components/company/integrations/vendors/quickbooks/sync-options\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6ZvvPNRk\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"onSave\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Entry Sync Options\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"save\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"quickbooks-sync-options\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"quickbooksConnected\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"_isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"loading-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\",\\\"inline\\\",\\\"minimal\\\"],[[20,[\\\"_isLoading\\\"]],false,true,true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectSyncType\\\",\\\"recent\\\"],[[\\\"bubbles\\\"],[false]]],null],[10,\\\"class\\\",[26,[\\\"synctype-option \\\",[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"recent\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"radio\\\"],[7],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\"],[\\\"syncType\\\",\\\"recent\\\",[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"recent\\\"],null]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"recommended\\\"],[7],[0,\\\"recommended\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Sync only recent time entries\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"multiline\\\",\\\"direction\\\",\\\"content\\\"],[true,\\\"right\\\",[20,[\\\"_recentTooltip\\\"]]]],{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon info-icon\\\"],[7],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectSyncType\\\",\\\"custom\\\"],[[\\\"bubbles\\\"],[false]]],null],[10,\\\"class\\\",[26,[\\\"synctype-option \\\",[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"custom\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"radio\\\"],[7],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\"],[\\\"syncType\\\",\\\"custom\\\",[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"custom\\\"],null]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Sync back to this date\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"multiline\\\",\\\"direction\\\",\\\"content\\\"],[false,\\\"right\\\",[20,[\\\"_customTooltip\\\"]]]],{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon info-icon\\\"],[7],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"custom-date-picker \\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"custom\\\"],null],\\\"enabled\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"utc\\\",\\\"unix\\\",\\\"format\\\",\\\"hideTime\\\",\\\"minDate\\\"],[true,[20,[\\\"syncDate\\\"]],\\\"L\\\",true,[20,[\\\"_minSyncDate\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"synctype-option is-permanent \\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"syncType\\\"]],\\\"custom\\\"],null],\\\"enabled\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"name\\\"],[[20,[\\\"isTemporary\\\"]],\\\"isTemporary\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleProperty\\\",\\\"isTemporary\\\"],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"After successful sync, resume syncing only recent time entries.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/integrations/vendors/quickbooks/sync-options.hbs\" } });\n});","define(\"busy-app/templates/components/company/permission-boxes\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dBXoY7oS\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"group\\\",\\\"disabled\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Self\\\"],null],[20,[\\\"_self\\\"]],[20,[\\\"group\\\"]],[20,[\\\"disableSelfBool\\\"]],\\\"self\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"group\\\",\\\"disabled\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Others with lower position\\\"],null],[20,[\\\"_lower\\\"]],[20,[\\\"group\\\"]],[20,[\\\"disableLowerBool\\\"]],\\\"lowerPosition\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"group\\\",\\\"disabled\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Others with same position\\\"],null],[20,[\\\"_same\\\"]],[20,[\\\"group\\\"]],[20,[\\\"disableSameBool\\\"]],\\\"samePosition\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"group\\\",\\\"disabled\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Others with higher position\\\"],null],[20,[\\\"_higher\\\"]],[20,[\\\"group\\\"]],[20,[\\\"disableHigherBool\\\"]],\\\"higherPosition\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/permission-boxes.hbs\" } });\n});","define(\"busy-app/templates/components/company/permission-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"aYVz7ep6\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"onSave\\\",\\\"onDelete\\\"],[[20,[\\\"headerTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"if\\\",[[20,[\\\"isDisabledAll\\\"]],null,[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"isDisabledAll\\\"]],null,[25,\\\"if\\\",[[20,[\\\"onDelete\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"customRoles\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upgrade-required\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To customize permission,\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showUpgradeDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"upgrade to pro.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"position-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"required\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Title\\\"],null],[20,[\\\"position\\\",\\\"title\\\"]],[20,[\\\"isDisabledAll\\\"]],true,\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"groupPermissions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"flex-row info-highlight\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-control\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"name\\\",\\\"action\\\"],[[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"scopeByGroup\\\"]],\\\"scopeByGroup\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onChangeScopeByGroup\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Limit permissions to employee groups\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Limiting permissions to employee groups will allow employees with this position to have permissions only over employees that belong to his or her employee group.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Projects</b> (can add, edit, and remove projects, subprojects, and groups)\\\"],null],[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageProjects\\\"]],\\\"projects\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"laborBudgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Budgets</b> (can view, add, edit, and remove budgets)\\\"],null],[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageBudgets\\\"]],\\\"budgets\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Cost Codes</b> (can add, edit, and remove cost codes, and groups)\\\"],null],[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageCostCodes\\\"]],\\\"costCodes\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>View Expenses</b> (can see money spent on projects and paid to employees)\\\"],null],[20,[\\\"isDisabledAll\\\"]],\\\"projectExpenses\\\",[20,[\\\"position\\\",\\\"viewProjectExpenses\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Company Settings</b> (can manage settings for the whole company)\\\"],null],[20,[\\\"isDisabledAll\\\"]],\\\"editSettings\\\",[20,[\\\"position\\\",\\\"manageCompanySettings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Employee Groups</b> (can arrange employees into group)\\\"],null],[20,[\\\"isDisabledManageEmployeeGroup\\\"]],\\\"groupEmployee\\\",[20,[\\\"position\\\",\\\"manageEmployeeGroups\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Manage Equipment</b> (can access equipment app)\\\"],null],[20,[\\\"isDisabledAll\\\"]],\\\"accessEquipment\\\",[20,[\\\"position\\\",\\\"manageEquipment\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"dailyReports\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"dailyReportsPrompts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\",\\\"action\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Receive Project Report Prompts</b> (remind the employee to fill out a project reports)\\\"],null],[20,[\\\"isDisabledAll\\\"]],\\\"dailyProjectPrompts\\\",[20,[\\\"position\\\",\\\"dailyProjectPrompts\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onChangeDailyProjectPrompts\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"position\\\",\\\"dailyProjectPrompts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"dailyProjectPromptsUseSubprojects\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Assign Reports to Subproject</b> (prompt the employee to create a report for each subproject)\\\"],null],[20,[\\\"isDisabledAll\\\"]],\\\"dailyProjectPromptsUseSubprojects\\\",[20,[\\\"position\\\",\\\"dailyProjectPromptsUseSubprojects\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Employees for:\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"(can add, edit, and remove employees and can set their wage, position, etc.)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"group2\\\",[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageEmployees\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[2,\\\" <p class=\\\\\\\"topic-header\\\\\\\"><b>Request Signatures by:</b> (can request that time cards be signed)</p>\\\\n\\\\t\\\\t<div class=\\\\\\\"topic-section\\\\\\\">\\\\n{{!company/permission-boxes\\\\n\\\\t\\\\t\\\\t\\\\tgroup=\\\\\\\"group4\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\tdisabled=isDisabledAll\\\\n\\\\t\\\\t\\\\t\\\\tvalue=position.requestSignatures}}\\\\t\\\\t</div> \\\"],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Track Time for:\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"(can clock in, clock out, and take breaks)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"disableSelf\\\",\\\"disableLower\\\",\\\"disableSame\\\",\\\"disableHigher\\\",\\\"value\\\"],[\\\"group5\\\",[20,[\\\"isDisabledAll\\\"]],true,[20,[\\\"timeEventDisableLower\\\"]],[20,[\\\"timeEventDisableSame\\\"]],[20,[\\\"timeEventDisableHigher\\\"]],[20,[\\\"position\\\",\\\"timeEvents\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Time Entries for:\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"(can create and edit time entries)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"group6\\\",[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageTimeEntries\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Photos posted by:\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"(can remove photos or edit notes)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"group7\\\",[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"manageMediaCollection\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Lock Dates for:\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"(can view, add, edit, and remove lock dates)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"group8\\\",[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"memberLock\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Activity Reports\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isDisabledAll\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-select-menu\\\",null,[[\\\"large\\\",\\\"fullwidth\\\",\\\"onSelect\\\",\\\"label\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"changeActivityReportPermission\\\"],null],[20,[\\\"activityReportPermission\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"All Activity Reports - Web & Mobile\\\"],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"All Activity Reports - Web & Mobile\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Employee Report Only - Mobile Only\\\"],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee Report Only - Mobile Only\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[1,[18,\\\"activityReportPermission\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"position\\\",\\\"viewAllActivityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"topic-header\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Employee  Activity Report for:\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"topic-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-boxes\\\",null,[[\\\"group\\\",\\\"disabled\\\",\\\"value\\\",\\\"disableSelf\\\"],[\\\"group9\\\",[20,[\\\"isDisabledAll\\\"]],[20,[\\\"position\\\",\\\"viewMemberActivityReport\\\"]],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/permission-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/company/permission-settings\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qpKHBrBq\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"customRoles\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"newPosition\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"New Position\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"permission-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"permissions-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"position\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Position\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"permission\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"customRoles\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Drag Positions up or down\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"blank\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"positions\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"customRoles\\\"]]],null,{\\\"statements\\\":[[4,\\\"lib/drag-drop-box\\\",null,[[\\\"model\\\",\\\"disabled\\\",\\\"dragContainer\\\",\\\"tagName\\\",\\\"onClick\\\",\\\"onDrag\\\",\\\"onDrop\\\",\\\"onDragOver\\\",\\\"onDragEnd\\\"],[[19,1,[]],[25,\\\"is-equal\\\",[[19,1,[\\\"level\\\"]],1],null],\\\".drag-move\\\",\\\"li\\\",[25,\\\"action\\\",[[19,0,[]],\\\"clickedPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"draggingPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"droppedPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"dragOverPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"dragEndPosition\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"position\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[\\\"Level: \\\",[19,1,[\\\"level\\\"]],\\\", Active Members: \\\",[19,1,[\\\"members\\\",\\\"length\\\"]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"permission\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"drag drag-move\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clickable\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lines\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lines\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lines\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"position\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clickedPosition\\\",[19,1,[]]]],[7],[1,[19,1,[\\\"title\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"loadingMessage\\\",\\\"isLoading\\\"],[[25,\\\"busy-loc\\\",[\\\"Saving...\\\"],null],[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPositionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelPosition\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-dialog\\\",null,[[\\\"position\\\",\\\"onClose\\\",\\\"onSave\\\",\\\"headerTitle\\\",\\\"isDisabledAll\\\"],[[20,[\\\"newPosition\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Position\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelPosition\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"company/permission-dialog\\\",null,[[\\\"position\\\",\\\"onClose\\\",\\\"onDelete\\\",\\\"showUpgradeDialog\\\",\\\"headerTitle\\\"],[[20,[\\\"newPosition\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelPosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deletePosition\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"showUpgradeDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Position\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[\\\"proFeatureManagerCloseModal\\\",\\\"proFeatureManagerPlanUpgraded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/permission-settings.hbs\" } });\n});","define(\"busy-app/templates/components/company/profile-info\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"D8CMMj2t\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"button-container\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editProfile\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Profile\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"General\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Name\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationName\\\"]],[20,[\\\"organization\\\",\\\"organizationName\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"phone\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"phone\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Logo\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPhotoDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Primary Account Holder\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"organization\\\",\\\"primaryAccountHolder\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Address\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address2\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address2\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"City\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"city\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"city\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"State\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"state\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"state\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"postalCode\\\"]],[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"postalCode\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Regional Settings\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Currency\\\"],null],false],[0,\\\" (\\\"],[1,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"currencyCode\\\"]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"currencyCode\\\"]],[20,[\\\"currencyCodeLabel\\\"]],[25,\\\"busy-loc\\\",[\\\"USD - United States Dollars\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Account Info\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subscription Status\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"planTypeFormatted\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Account Created On\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"organization\\\",\\\"createdOnDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text red\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openDeactivateAccount\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Deactivate Account\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveCompanySettings\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Company Profile\\\"],null]]],{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"General\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Company Name\\\"],null],true,[20,[\\\"organization\\\",\\\"organizationName\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"phone\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[\\\"Location\\\"]],{\\\"statements\\\":[[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"address2\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"City\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"city\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"State\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"state\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],false,[20,[\\\"organization\\\",\\\"organizationInfo\\\",\\\"postalCode\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Regional Settings\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Currency\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\",\\\"class\\\"],[[20,[\\\"currencyOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectCurrency\\\"],null],\\\"value\\\",[20,[\\\"currencyCodeLabel\\\"]],\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPhotoDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closePhotoDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closePhotoDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"savePhoto\\\"],null],[25,\\\"busy-loc\\\",[\\\"Upload Company Photo\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"busy-image-uploader\\\",null,[[\\\"onChange\\\",\\\"imageUrl\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"imageChange\\\"],null],[20,[\\\"organization\\\",\\\"imageThumbUrl\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeactivate\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"company/deactivate-account\\\",null,[[\\\"onClose\\\"],[\\\"closeDeactivateAccount\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/profile-info.hbs\" } });\n});","define(\"busy-app/templates/components/company/time-keeping\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"R4ce/XX7\", \"block\": \"{\\\"symbols\\\":[\\\"question\\\",\\\"member\\\",\\\"member\\\",\\\"member\\\",\\\"payPeriodDate\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-keeping\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"General\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openGeneralDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Require Project:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"requireProject\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"beta-flagged\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Enable Cost Codes:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackCostCode\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Require Cost Codes:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"requireCostCode\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"projectCostCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Specific Cost Codes:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"useProjectCostCodeScoping\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Track Time on Equipment:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackEquipment\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"laborBudgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Use Labor Budgets:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackBudgets\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Card Approval\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openApprovalDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Enable Digital Signature\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"enableDigitalSignatures\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"enableDigitalSignatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"signatureDate\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"date-format\\\",[[20,[\\\"organization\\\",\\\"signatureDate\\\"]]],[[\\\"format\\\"],[\\\"ll\\\"]]],false]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lock Time Card on Approval\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"lockOnSelfSignature\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signaturesSupervisor\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Enable Supervisor Signatures\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"authoritativeSignature\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Card Disclaimer\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left disclaimer\\\"],[7],[1,[20,[\\\"organization\\\",\\\"disclaimer\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"safetySignOff\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openSafetyDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety Sign-Off\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"safetySignature\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety Notifications\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"safetyMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[18,\\\"selectedSafetyMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety Instructions\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left disclaimer\\\"],[7],[1,[18,\\\"safetyMessage\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row spacer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Accuracy Sign-Off\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"timeAccuracy\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TimeAccuracy Notifications\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"accuracyMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[18,\\\"selectedAccuracyMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Correct Disclaimer\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left disclaimer\\\"],[7],[1,[18,\\\"accuracyMessage\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"breakSignOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row spacer\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Policy Sign-Off\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicy\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Policy Notifications\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"breaksMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[18,\\\"selectedBreaksMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Use California Rules\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Policy Disclaimer\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left disclaimer\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]],[20,[\\\"breakPolicyMessageCali\\\"]],[20,[\\\"breakPolicyMessage\\\"]]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"busySignIn\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Sign-In\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openSignInDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"busySignInQuestion\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"scheduledOvertimePeriod\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Period\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"overtimePeriod\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-box\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled Overtime Change\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type: %@\\\",[20,[\\\"scheduledOvertimePeriod\\\",\\\"overtimePreference\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Period: %@\\\",[20,[\\\"scheduledOvertimePeriod\\\",\\\"overtimePeriod\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date: %@\\\",[20,[\\\"scheduledOvertimePeriod\\\",\\\"effectiveDate\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"delete\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"deleteScheduledOvertimeChange\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewScheduledOvertimeChange\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Scheduled Rules\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOvertimePreviewDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Current Overtime Rules\\\"],null],false],[8],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openOvertimeHistoryDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Overtime History\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"showCustomOptionsDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Current Overtime Period\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"overtimePeriod\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOvertimePreviewDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Current Overtime Rules\\\"],null],false],[8],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openOvertimeHistoryDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Overtime History\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"scheduledPayPeriod\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Pay Period\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"periodTypeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Starts Over\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"startOnString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-box\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled Pay Period Change\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type: %@\\\",[20,[\\\"scheduledPayPeriod\\\",\\\"periodTypeString\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Starts Over: %@\\\",[20,[\\\"scheduledPayPeriod\\\",\\\"startOnString\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date: %@\\\",[20,[\\\"scheduledPayPeriod\\\",\\\"effectiveDate\\\"]]],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"delete\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"deleteScheduledPayPeriodChange\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Pay Period\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"currentPayPeriodDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"periodTypeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Starts Over\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"startOnString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentPayPeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Default Entry Times\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openDefaultTimeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"defaultStartTime\\\"]],[20,[\\\"organization\\\",\\\"startTimeString\\\"]],\\\"N/A\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"defaultEndTime\\\"]],[20,[\\\"organization\\\",\\\"endTimeString\\\"]],\\\"N/A\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Duration\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[20,[\\\"organization\\\",\\\"breakDurationString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Rounding Time\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openTimeRoundingDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Round Employee Time\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"timeRounding\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"timeRounding\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[18,\\\"currentRoundingType\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Interval\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[18,\\\"currentRoundingInterval\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"App Version\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openAppVersionDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Minimum App Version\\\"],null],false],[0,\\\": \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-left\\\"],[7],[1,[18,\\\"currentMinimumAppVersion\\\"],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"overtimeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelOvertimePeriod\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelOvertimePeriod\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveOvertimePeriod\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Overtime Period\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-time-keeping-current-overtime-period\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select which day of the week you want your workweek to begin. The date you choose is also when this change will take place.\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"minDate\\\",\\\"maxDate\\\",\\\"unix\\\",\\\"hideTime\\\",\\\"utc\\\",\\\"format\\\"],[[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],[20,[\\\"overtimeChangeDate\\\"]],true,true,\\\"ddd. MMM DD\\\"]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"customOptionsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"hideCustomOptionsDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"hideCustomOptionsDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveCustomOvertime\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Overtime Rules\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-period-change\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"defaultFirstOption\\\",\\\"itemLabel\\\"],[\\\"full\\\",[20,[\\\"overtimeRules\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectOvertimeAction\\\"],null],true,\\\"value\\\"]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select which day of the week you want your workweek to begin:\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"hideTime\\\",\\\"utc\\\",\\\"format\\\"],[[20,[\\\"overtimeChangeDate\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true,true,\\\"ddd. MMM DD\\\"]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"customOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"custom-overtime\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],\\\"weeklyOvertime\\\",[20,[\\\"cWeeklyOvertime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"disabled\\\",\\\"invalidError\\\",\\\"validateExpression\\\",\\\"tabindex\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"if\\\",[[20,[\\\"cWeeklyOvertime\\\"]],false,true],null],[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",1,[20,[\\\"newOvertimePeriod\\\",\\\"weeklyOvertime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],\\\"dailyOvertime\\\",[20,[\\\"cDailyOvertime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"disabled\\\",\\\"invalidError\\\",\\\"validateExpression\\\",\\\"tabindex\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"if\\\",[[20,[\\\"cDailyOvertime\\\"]],false,true],null],[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",2,[20,[\\\"newOvertimePeriod\\\",\\\"dailyOvertime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],\\\"dailyOvertimeTwo\\\",[20,[\\\"cDailyDoubletime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"disabled\\\",\\\"invalidError\\\",\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"if\\\",[[20,[\\\"cDailyDoubletime\\\"]],false,true],null],[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",[20,[\\\"newOvertimePeriod\\\",\\\"dailyDoubletime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],\\\"seventhDayOvertime\\\",[20,[\\\"cSeventhDayOvertime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"cSeventhDayOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"defaultLabel\\\",\\\"model\\\"],[\\\"full\\\",\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"seventhDayOvertime\\\"],null],[25,\\\"busy-loc\\\",[\\\"Select\\\"],null],[20,[\\\"seventhDayOvertimeList\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],\\\"seventhDayOvertimeTwo\\\",[20,[\\\"cSeventhDayDoubletime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"disabled\\\",\\\"invalidError\\\",\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"if\\\",[[20,[\\\"cSeventhDayDoubletime\\\"]],false,true],null],[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",[20,[\\\"newOvertimePeriod\\\",\\\"seventhDayDoubletime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],\\\"saturdayPayRate\\\",[20,[\\\"cSaturdayMultiplier\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"cSaturdayMultiplier\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"wage x\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[[20,[\\\"saturdayOvertimeList\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"saturdayMultiplier\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],\\\"sundayPayRate\\\",[20,[\\\"cSundayMultiplier\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"cSundayMultiplier\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"wage x\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-fields\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[[20,[\\\"sundayOvertimeList\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"sundayMultiplier\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"field-text2\\\"],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"payPeriodDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelPayPeriod\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelPayPeriod\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"savePayPeriod\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Pay Period\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-current-pay-period\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"How often do you process payroll?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[20,[\\\"payPeriodTypeMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectItem\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select a pay period\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"weeklySelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What weekday does your weekly pay period begin?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[20,[\\\"payPeriodWeekday\\\"]],\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"daySelected\\\"],null],[25,\\\"busy-loc\\\",[\\\"Select a weekday\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"When would you like this change to take effect?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"hideTime\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\"],[\\\"ddd. MMM DD\\\",true,[20,[\\\"payPeriodChangeDate\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"biWeeklySelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What weekday does your biweekly pay period begin?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"onSelect\\\",\\\"model\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"daySelected\\\"],null],[20,[\\\"payPeriodWeekday\\\"]],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select a weekday\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"When would you like this change to take effect?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"hideTime\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\"],[\\\"ddd. MMM DD\\\",true,[20,[\\\"payPeriodChangeDate\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"semiMonthlySelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What two days does your Semimonthly pay period begin?\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[20,[\\\"payPeriodDayOne\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"daySelected\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select a day\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"and\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[20,[\\\"payPeriodDay\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"dayOfMonthSelectedTwo\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select a day\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"When would you like this change to take effect?\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"hideTime\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\"],[\\\"ddd. MMM DD\\\",true,[20,[\\\"payPeriodChangeDate\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"monthlySelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What day does your monthly pay period begin?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[\\\"full\\\",[20,[\\\"payPeriodDay\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"daySelected\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select a day\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"When would you like this change to take effect?\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"hideTime\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\"],[\\\"ddd. MMM DD\\\",true,[20,[\\\"payPeriodChangeDate\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showGeneralDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGeneralDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGeneralDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"busy-loc\\\",[\\\"General Settings\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-general-settings\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"disabled\\\"],[[25,\\\"busy-loc\\\",[\\\"Require Project\\\"],null],[20,[\\\"organization\\\",\\\"requireProject\\\"]],[20,[\\\"disabledRequireProjectControl\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"beta-flagged\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"action\\\"],[[25,\\\"busy-loc\\\",[\\\"Enable Cost Codes\\\"],null],[20,[\\\"organization\\\",\\\"trackCostCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onChangeTrackCostCode\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"action\\\"],[[25,\\\"busy-loc\\\",[\\\"Require Cost Codes\\\"],null],[20,[\\\"organization\\\",\\\"requireCostCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onChangeRequireCostCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"projectCostCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"action\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Specific Cost Codes\\\"],null],[20,[\\\"organization\\\",\\\"useProjectCostCodeScoping\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onChangeUseProjectCostCodeScoping\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Track Time on Equipment\\\"],null],[20,[\\\"organization\\\",\\\"trackEquipment\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"laborBudgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Use Labor Budgets\\\"],null],[20,[\\\"organization\\\",\\\"trackBudgets\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showApprovalDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelApprovalDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelApprovalDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveApprovalSettings\\\"],null],[25,\\\"busy-loc\\\",[\\\"Time Card Approval Settings\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-approval-settings\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Enable Digital Signature\\\"],null],[20,[\\\"enableDigitalSignatures\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"enableDigitalSignatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"secondary-options\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"option-row\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Lock Time Card on Approval\\\"],null],[20,[\\\"organization\\\",\\\"lockOnSelfSignature\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signaturesSupervisor\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"option-row\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Enable Supervisor Signatures\\\"],null],[20,[\\\"organization\\\",\\\"authoritativeSignature\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"enableDigitalSignaturesThisSession\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-greater\\\",[[20,[\\\"payPeriodDates\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"option-row\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"When should busybusy begin requiring digital signatures?\\\"],null],false],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-date-options \\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"payPeriodDates\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-date-option option-row\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-date-radio\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\",\\\"checked\\\"],[\\\"organizationSignatureDate\\\",[19,5,[\\\"dates\\\",\\\"start\\\"]],\\\"setSignatureDate\\\",[25,\\\"is-equal\\\",[[19,5,[\\\"dates\\\",\\\"start\\\"]],[20,[\\\"organization\\\",\\\"signatureDate\\\"]]],null]]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-date-label\\\"],[7],[1,[19,5,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Card Disclaimer\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"class\\\"],[\\\"\\\",[20,[\\\"organization\\\",\\\"disclaimer\\\"]],[25,\\\"if\\\",[[20,[\\\"disclaimerHasError\\\"]],\\\"error\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"disclaimer-usage \\\",[25,\\\"if\\\",[[20,[\\\"disclaimerHasError\\\"]],\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[7],[1,[18,\\\"disclaimerErrorMessage\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"organization\\\",\\\"disclaimer\\\",\\\"length\\\"]],false],[0,\\\" / \\\"],[1,[18,\\\"maxDisclaimerLength\\\"],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"overtimePreviewDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"hideOvertimePreviewDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-preview\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"weeklyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"dailyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"dailyDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"seventhDayOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"seventhDayDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"saturdayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row last\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"sundayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective:\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"currentOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"timeRoundingDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeTimeRoundingDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Rounding Time\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeRoundingDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-rounding-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Enabling this feature will round employee time when they clock in, clock out, or go on break.\\\"],null],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Round Employee Time\\\"],null],[20,[\\\"organization\\\",\\\"timeRounding\\\"]]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"timeRounding\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    Type\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\",\\\"multiline\\\"],[[20,[\\\"employeeExplanation\\\"]],\\\"right\\\",true]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon info-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-select-menu\\\",null,[[\\\"large\\\",\\\"fullwidth\\\",\\\"label\\\",\\\"onSelect\\\"],[true,true,[20,[\\\"currentRoundingType\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setRoundingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"10\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Nearest\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"20\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Round Down\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"30\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Round Up\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"40\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee Favorable\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Interval\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-select-menu\\\",null,[[\\\"large\\\",\\\"fullwidth\\\",\\\"label\\\",\\\"onSelect\\\"],[true,true,[20,[\\\"currentRoundingInterval\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setRoundingInterval\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"5 minutes\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"6\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"6 minutes\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"10\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"10 minutes\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"15\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"15 minutes\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"30\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"30 minutes\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetyDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\",true],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\",true],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-rounding-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Safety Sign-Off\\\"],null],[20,[\\\"organization\\\",\\\"safetySignature\\\"]]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety Notifications\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey full-width-button\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openSafetySelectDialog\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"safetyMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[18,\\\"selectedSafetyMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety Instructions\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"safetyMessage\\\"]],500]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Accuracy Sign-Off\\\"],null],[20,[\\\"organization\\\",\\\"timeAccuracy\\\"]]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Accuracy Notifications\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey full-width-button\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openTimeAccuracySelectDialog\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"accuracyMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[18,\\\"selectedAccuracyMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Correct Disclaimer\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"accuracyMessage\\\"]],500]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"breakSignOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Break Policy Sign-Off\\\"],null],[20,[\\\"organization\\\",\\\"breakPolicy\\\"]]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Policy Notifications\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey full-width-button\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openBreaksSelectDialog\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"breaksMembersSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[18,\\\"selectedBreaksMembersLength\\\"],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Assigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Set Up\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"disabled\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Use California Rules\\\"],null],[20,[\\\"californiaBreaksDisabled\\\"]],[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks Correct Disclaimer\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[18,\\\"breakPolicyMessageCali\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"breakPolicyMessage\\\"]],500]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDefaultTimeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDefaultTimeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Default Entry Times\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeDefaultTimeDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-default-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"The initial times and duration that appear when creating manual time entries or adding breaks.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"input\\\"],[7],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"utc\\\",\\\"unix\\\",\\\"format\\\",\\\"round\\\",\\\"hideDate\\\"],[true,[20,[\\\"defaultStartTime\\\"]],\\\"hh:mm A\\\",[20,[\\\"timeRoundingInterval\\\"]],true]]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"input\\\"],[7],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"utc\\\",\\\"unix\\\",\\\"format\\\",\\\"round\\\",\\\"hideDate\\\"],[true,[20,[\\\"defaultEndTime\\\"]],\\\"hh:mm A\\\",[20,[\\\"timeRoundingInterval\\\"]],true]]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item-inline\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Duration\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"input\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\",\\\"onSelect\\\"],[[20,[\\\"breakHoursOptions\\\"]],\\\"value\\\",[20,[\\\"breakHoursLabel\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changeBreakHours\\\"],null]]]],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"input\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\",\\\"onSelect\\\"],[[20,[\\\"breakMinutesOptions\\\"]],\\\"value\\\",[20,[\\\"breakMinutesLabel\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changeBreakMinutes\\\"],null]]]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showWarningCostCodesRequired\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\",\\\"small\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeWarningCostCodesRequired\\\"],null],true]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-warning\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warning\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes are required to clock in, therefore employees will not be able to clock in until cost codes are assigned to project(s).\\\"],null],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"buttons\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"disableUseProjectCostCodeScoping\\\",[20,[\\\"showWarningCostCodesRequiredTrigger\\\"]]],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"confirmUseProjectCostCodeScoping\\\",[20,[\\\"showWarningCostCodesRequiredTrigger\\\"]]],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Ok\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMinimumAppDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeMinimumAppDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Minimum App Version\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMinimumAppDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-minimum-app-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minimum-app-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Require employees to update their mobile app to a minimum version. Employees will still be allowed to use the app up to 5 times before an update is required.\\\"],null],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minimum-app-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Minimum Version\\\"],null],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"minimum-app-row\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\",\\\"onSelect\\\"],[\\\"full\\\",[20,[\\\"minimumAppVersionOptions\\\"]],\\\"value\\\",[20,[\\\"currentMinimumAppVersion\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setMinimumAppVersion\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeAccuracySelectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeAndRollbackTimeAccuracySelectDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Accuracy Notifications\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeAccuracySelectDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"style\\\",\\\"max-height: 600px; overflow: auto;\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"accuracyAllSelected\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAllAccuracyMembers\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select All\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[19,4,[\\\"selectedAccuracy\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addMemberToAccuracyList\\\",[19,4,[]]],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,4,[\\\"imageThumbUrl\\\"]],[19,4,[\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,4,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetySelectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeAndRollbackSafetySelectDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Safety Notifications\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetySelectDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"style\\\",\\\"max-height: 600px; overflow: auto;\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"safetyAllSelected\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAllSafetyMembers\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select All\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[19,3,[\\\"selectedSafety\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addMemberToSafetyList\\\",[19,3,[]]],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,3,[\\\"imageThumbUrl\\\"]],[19,3,[\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,3,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showBreaksSelectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeAndRollbackBreaksSelectDialog\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Break Notifications\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeBreaksSelectDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"style\\\",\\\"max-height: 600px; overflow: auto;\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"breaksAllSelected\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAllBreakMembers\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select All\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[19,2,[\\\"selectedBreaks\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addMemberToBreakList\\\",[19,2,[]]],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,2,[\\\"imageThumbUrl\\\"]],[19,2,[\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,2,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOvertimeHistoryDialog\\\"]]],null,{\\\"statements\\\":[[12,\\\"partials/overtime-history-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showScheduledDetailsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeScheduledOvertimeChange\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Scheduled Overtime Change\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-preview\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"weeklyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"dailyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"dailyDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"seventhDayOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"seventhDayDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"saturdayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row last\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"sundayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled:\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"scheduledOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showSignInDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSignInDialog\\\",true],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Sign-In\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveGeneralSettings\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSignInDialog\\\",true],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-rounding-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"rounding-row\\\"],[7],[0,\\\"\\\\n\\\\n    \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],[20,[\\\"organization\\\",\\\"busySignInQuestion\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkbox-description\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"All employees will be required to complete a COVID-19 questionnaire on clock in. If answers indicate the employee is a possible COVID-19 risk,\\\\r\\\\n         they will not be able to clock in for the day. All answer submissions can be viewed in the COVID-19 Check report.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"covidQuestionsVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideCovidQuestions\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hide COVID Questions\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"questions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"b\\\"],[7],[1,[19,1,[\\\"questionTitle\\\"]],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n          \\\"],[1,[19,1,[\\\"questionDescription\\\"]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showCovidQuestions\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View COVID Questions\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/company/time-keeping.hbs\" } });\n});","define(\"busy-app/templates/components/cost-codes/import-cost-codes\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"oGyEOb7U\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"dialog\\\",\\\"list\\\",\\\"dialog\\\",\\\"item\\\",\\\"dialog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportError\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Import Error\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeErrorAction\\\"],null],[20,[\\\"buttonInfoError\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"There was an error in your csv file or the system failed to get some required information from the csv file.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"importErrorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"help\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"For further assistance please send us a\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openIntercom\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Message\\\"],null],false],[8],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"or call our customer service\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[0,\\\"1-855-287-9287\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showPreview\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Import Step 3 of 3\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closePreviewAction\\\"],null],[20,[\\\"buttonInfo3\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-preview\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"importData\\\",\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Cost Code #\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"costCode\\\"]],[19,5,[\\\"costCode\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Description\\\"],null]]]],[7],[1,[19,5,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Unit of Measure\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"unitTitle\\\"]],[19,5,[\\\"unitTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"insuranceClasses\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Workers' Compensation\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"workersCompTitle\\\"]],[19,5,[\\\"workersCompTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"General Liability\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"generalLiabilityTitle\\\"]],[19,5,[\\\"generalLiabilityTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showMapping\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Import Step 2 of 3\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMappingAction\\\"],null],[20,[\\\"buttonInfo2\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-mapping\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Headers\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your File Headers\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"importData\\\",\\\"headerLists\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"defaultLabel\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[19,3,[\\\"value\\\"]],\\\"None\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectListItem\\\"],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Import Step 1 of 3\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null],[20,[\\\"buttonInfo1\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"The following fields can be imported for cost codes:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code #\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Unit of Measure\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"insuranceClasses\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Insurance Workers' Compensation Class\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Insurance General Liability Class\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"*Cost Code #, Description and Unit of Measure are required.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-button\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"file-input\\\",null,[[\\\"class\\\",\\\"onChange\\\",\\\"title\\\"],[\\\"csv-upload\\\",\\\"uploadAction\\\",[25,\\\"busy-loc\\\",[\\\"Upload\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/cost-codes/import-cost-codes.hbs\" } });\n});","define(\"busy-app/templates/components/cost-codes/splash-screen\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"tR7ytE5c\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"onClose\\\"]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-splash-screen\\\"],[7],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/splash-screen-costcodes.png\\\"],[9,\\\"width\\\",\\\"192\\\"],[9,\\\"height\\\",\\\"172\\\"],[7],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header-underscore\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"manageCompanySettings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Scope to Projects\\\"],null],[20,[\\\"scopeToProject\\\"]],\\\"cost-code-checkbox\\\"]]],false],[0,\\\"\\\\n      \\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Require Cost Codes\\\"],null],[20,[\\\"requireCostCode\\\"]],\\\"cost-code-checkbox\\\"]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button large blue \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"disabled\\\",\\\"\\\"],null]]]],[10,\\\"disabled\\\",[26,[[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onEnable\\\"]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Enabling...\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Enable\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button large d-button-outline blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onLearnMore\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn More\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/cost-codes/splash-screen.hbs\" } });\n});","define(\"busy-app/templates/components/d-button-split\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"3l/5/RbS\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[25,\\\"if\\\",[[19,0,[\\\"primaryIcon\\\"]],\\\"with-icon\\\"],null],\\\" \\\",[25,\\\"if\\\",[[19,0,[\\\"classModifiers\\\"]],[20,[\\\"classModifiers\\\"]]],null]]]],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onPrimaryAction\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"selectOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"highlightSlected\\\"],[[25,\\\"concat\\\",[\\\"select-action d-button \\\",[19,0,[\\\"classModifiers\\\"]]],null],[19,0,[\\\"selectOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectAction\\\"],null],\\\"value\\\",\\\"Select\\\",false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/d-button-split.hbs\" } });\n});","define(\"busy-app/templates/components/d-button\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"C7ZTdm6k\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/d-button.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/button-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"D3cd339A\", \"block\": \"{\\\"symbols\\\":[\\\"button\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"button-container\\\",[25,\\\"if\\\",[[20,[\\\"_buttonInfo\\\",\\\"length\\\"]],\\\" active\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"_buttonInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[19,1,[\\\"color\\\"]],[25,\\\"if\\\",[[19,1,[\\\"left\\\"]],\\\" left\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"disabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"invokeAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"text\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"save-message-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"autosave-signal \\\",[25,\\\"if\\\",[[20,[\\\"isShowing\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saving \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savingMessageText\\\"],false],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/loaderc.gif\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saved \\\",[25,\\\"if\\\",[[20,[\\\"isSaved\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savedMessageText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"isError\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"errorMessageText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConfirm\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"confirmText\\\",\\\"cancelText\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"onConfirm\\\",\\\"onCancel\\\"],[[20,[\\\"confirmText\\\"]],[20,[\\\"confirmCancelText\\\"]],[20,[\\\"confirmHeader\\\"]],[20,[\\\"confirmReasonText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"confirmAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelConfirmAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/button-bar.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/confirm-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"E34wH1Ji\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"basic\\\",\\\"small\\\",\\\"onClose\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-confirm-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"confirmHeader\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"confirmMessage\\\"],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideConfirmButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[25,\\\"if\\\",[[20,[\\\"alertHigh\\\"]],\\\"red\\\",\\\"blue\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"confirm\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"confirmText\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"cancelText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/confirm-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/content-view\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dDtIykZ3\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"headerTitle\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"onBack\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[20,[\\\"headerTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"backAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\"],[[20,[\\\"headerTitle\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"body\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"content\\\",[25,\\\"if\\\",[[20,[\\\"disablePadding\\\"]],\\\" no-pad\\\"],null]]]],[7],[0,\\\"\\\\n      \\\"],[11,1,[[19,0,[]]]],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showFooter\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"dialogs/button-bar\\\",null,[[\\\"buttonInfo\\\",\\\"onDone\\\",\\\"targetParent\\\"],[[20,[\\\"buttonInfo\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"doneAction\\\"],null],[19,0,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"savingMessageText\\\",\\\"targetParent\\\"],[[20,[\\\"savingMessage\\\"]],[19,0,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/content-view.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/delete-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QXUeN6aX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"basic\\\",\\\"small\\\",\\\"onClose\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-delete-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Confirm %@\\\",[20,[\\\"deleteText\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"deleteMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button red\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"confirm\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"deleteText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/delete-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/error/gps-location-required\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"il3oAPDd\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"basic\\\",\\\"small\\\",\\\"onClose\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c--dialog--gps-location-required--content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"GPS Location Unavailable\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Requiring GPS Location will not allow an employee to clock in or out using the web site.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/error/gps-location-required.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/fs-modal-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Kub0kk9l\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"modal-dialog\\\",null,[[\\\"containerClassNames\\\",\\\"translucentOverlay\\\",\\\"clickOutsideToClose\\\",\\\"renderInPlace\\\",\\\"onClose\\\"],[[20,[\\\"_classNames\\\"]],[20,[\\\"translucentOverlay\\\"]],[20,[\\\"clickOutsideToClose\\\"]],[20,[\\\"renderInPlace\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/fs-modal-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/instructions-container\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qrrvmIq4\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\",\\\"renderInPlace\\\"],[[20,[\\\"onClose\\\"]],[20,[\\\"renderInPlace\\\"]]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"saveText\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"onCancel\\\"],[[25,\\\"if\\\",[[20,[\\\"headerTitle\\\"]],[20,[\\\"headerTitle\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"saveText\\\"]],[20,[\\\"saveText\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"cancelText\\\"]],[20,[\\\"cancelText\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"onSave\\\"]],[20,[\\\"onSave\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"onSave\\\"]],[20,[\\\"onClose\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-instructions-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/instructions-container.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/instructions-header\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6zKpvVp3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"logo\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"class\\\",\\\"logo\\\"],[10,\\\"src\\\",[26,[[18,\\\"logo\\\"]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"title\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"title\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/instructions-header.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/instructions-section\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sGpqWsIK\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"title\\\"],false],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/instructions-section.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/modal-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/VqSU2ot\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"modal-dialog\\\",null,[[\\\"containerClassNames\\\",\\\"translucentOverlay\\\",\\\"clickOutsideToClose\\\",\\\"renderInPlace\\\",\\\"onClose\\\"],[[20,[\\\"_classNames\\\"]],[20,[\\\"translucentOverlay\\\"]],[20,[\\\"clickOutsideToClose\\\"]],[20,[\\\"renderInPlace\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-body\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCloseButton\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"onCloseButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"modal-dialog-close\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeButtonAction\\\"]],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"modal-dialog-close\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"]],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/modal-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/open-entry-location\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"EbkrPBH1\", \"block\": \"{\\\"symbols\\\":[\\\"map\\\",\\\"item\\\",\\\"marker\\\",\\\"marker\\\"],\\\"statements\\\":[[4,\\\"dialogs/fs-modal-dialog\\\",null,null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-tab-header-dialog\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"smaller-height\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-header-bar modal-dialog-titles-bar\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-titles\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"modal-dialog-title-primary\\\"],[7],[1,[20,[\\\"member\\\",\\\"fullName\\\"]],true],[8],[0,\\\"\\\\n          \\\"],[6,\\\"h2\\\"],[9,\\\"class\\\",\\\"modal-dialog-title-sub\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"openEntry\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[20,[\\\"showEndTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"openEntry\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Open\\\"],null],false],[0,\\\"\\\\n          \\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-date\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"openEntry\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"MMMM D, YYYY\\\"]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-close\\\"],[7],[0,\\\"\\\\n          \\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"close\\\",[25,\\\"busy-loc\\\",[\\\"Close (Tip: esc to close)\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"mapLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"marker-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"mapMarkers\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,4,[\\\"noTooltip\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"div\\\"],[10,\\\"id\\\",[26,[\\\"marker-\\\",[19,4,[\\\"timeLocal\\\"]]]]],[10,\\\"class\\\",[26,[\\\"marker-item \\\",[25,\\\"if\\\",[[19,4,[\\\"active\\\"]],\\\"active\\\",\\\"\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openInfoWindow\\\",[19,4,[]]]],[7],[0,\\\"\\\\n              \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"distance right\\\"],[7],[1,[19,4,[\\\"distanceFromProject\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"if\\\",[[19,4,[\\\"distanceFromProject\\\"]],\\\"mi\\\"],null],false],[8],[0,\\\"\\\\n              \\\"],[1,[19,4,[\\\"markerType\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"if\\\",[[19,4,[\\\"isLocationChange\\\"]],\\\"Update\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n              \\\"],[1,[25,\\\"date-format\\\",[[19,4,[\\\"timeLocal\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"location-summary-map\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"g-map\\\",null,[[\\\"lat\\\",\\\"lng\\\",\\\"zoom\\\",\\\"onClick\\\",\\\"onComponentsLoad\\\",\\\"onBoundChanged\\\"],[[20,[\\\"lat\\\"]],[20,[\\\"lng\\\"]],[20,[\\\"zoom\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeInfoWindows\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onLoad\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onLoad\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"mapMarkers\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[25,\\\"component\\\",[[19,1,[\\\"circle\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"radius\\\",\\\"onClick\\\",\\\"fillColor\\\",\\\"fillOpacity\\\",\\\"strokeColor\\\",\\\"strokeOpacity\\\",\\\"strokeWeight\\\"],[[19,2,[\\\"latitude\\\"]],[19,2,[\\\"longitude\\\"]],[19,2,[\\\"locationRadius\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeInfoWindows\\\"],null],\\\"#30aeef\\\",0,\\\"#30aeef\\\",1,1]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[19,1,[\\\"marker\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"label\\\",\\\"icon\\\",\\\"onClick\\\"],[[19,2,[\\\"latitude\\\"]],[19,2,[\\\"longitude\\\"]],[19,2,[\\\"markerLabel\\\"]],[19,2,[\\\"markerImage\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openInfoWindow\\\",[19,2,[]],true],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[19,2,[\\\"noTooltip\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[19,3,[\\\"infoWindow\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"isOpen\\\"],[[19,2,[\\\"latitude\\\"]],[19,2,[\\\"longitude\\\"]],[19,2,[\\\"active\\\"]]]],{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"marker-item\\\"],[7],[0,\\\"\\\\n                    \\\"],[1,[19,2,[\\\"markerType\\\"]],false],[0,\\\"  \\\"],[1,[25,\\\"if\\\",[[19,2,[\\\"isLocationChange\\\"]],\\\"recorded\\\"],null],false],[0,\\\" @ \\\"],[1,[25,\\\"date-format\\\",[[19,2,[\\\"timeLocal\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[0,\\\" \\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"distance\\\"],[7],[1,[19,2,[\\\"distanceFromProject\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"if\\\",[[19,2,[\\\"distanceFromProject\\\"]],\\\"miles outside project\\\"],null],false],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/open-entry-location.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/open-trial\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"61PdwA2Z\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-open-trial\\\"],[7],[0,\\\"\\\\n\\\\t\\\\tYou must have a subscription to use this feature.\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/open-trial.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/pro-feature-upgrade\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"msP6WF2J\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isTrialAvailable\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"startTrial\\\"],null],[25,\\\"busy-loc\\\",[\\\"Start Free Trial\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-pro-feature-upgrade v-pro-feature-upgrade-trial-start\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade to Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This is a Pro feature.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To try our pro features, sign up for our 30 day free trial.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"There is no obligation and you can cancel anytime.\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"clickable\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"learnMore\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn more.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isTrialEnded\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"startUpgrade\\\"],null],[25,\\\"busy-loc\\\",[\\\"Upgrade\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-pro-feature-upgrade v-pro-feature-upgrade-trial-expired\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trial Expired\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Your 30-day free trial has expired.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade to Pro to continue enjoying our Pro features.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"There is no obligation and you can cancel anytime.\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"clickable\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"learnMore\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn more.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"startUpgrade\\\"],null],[25,\\\"busy-loc\\\",[\\\"Upgrade\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-pro-feature-upgrade v-pro-feature-upgrade-no-trial\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade to Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This is a Pro feature.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To use this feature, you will need to upgrade to Pro.\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"clickable\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"learnMore\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn more.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/pro-feature-upgrade.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/save-message\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7dg1d8AK\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"autosave-signal \\\",[25,\\\"if\\\",[[20,[\\\"isShowing\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saving \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savingMessageText\\\"],false],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/loaderc.gif\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"saved \\\",[25,\\\"if\\\",[[20,[\\\"isSaved\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"savedMessageText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"p\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"isError\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"errorMessageText\\\"],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/save-message.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/summary-report\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"C31zkYw+\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/tab-header-dialog\\\",null,[[\\\"title\\\",\\\"subTitle\\\",\\\"start\\\",\\\"end\\\",\\\"selectOptions\\\",\\\"currentOption\\\",\\\"tabOptions\\\",\\\"currentTab\\\",\\\"noDate\\\",\\\"enableCSV\\\",\\\"onClose\\\",\\\"onSelectOption\\\",\\\"onSelectTab\\\",\\\"onExportCSV\\\",\\\"useSplitButton\\\",\\\"createTimeEntryConfig\\\",\\\"refreshSync\\\"],[[20,[\\\"title\\\"]],[20,[\\\"subTitle\\\"]],[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"selectOptions\\\"]],[20,[\\\"currentOption\\\"]],[20,[\\\"tabOptions\\\"]],[20,[\\\"currentTab\\\"]],[20,[\\\"isDay\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectOptionAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectTabAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"exportCSVAction\\\"],null],true,[19,0,[\\\"createTimeEntryConfig\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-summary-report\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"class\\\",\\\"isLoading\\\"],[\\\"csv-loader\\\",[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentTab\\\"]],\\\"summary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/summary-report/summary\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/summary-report/details\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"syncing\\\",\\\"start\\\",\\\"end\\\",\\\"onSync\\\"],[[20,[\\\"dirtyFlag\\\"]],[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],\\\"refreshModel\\\"]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"upgradeDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[12,\\\"partials/report-upgrade-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/summary-report.hbs\" } });\n});","define(\"busy-app/templates/components/dialogs/tab-header-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"H3fiiwkz\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"dialogs/fs-modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-dialogs-tab-header-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-header-bar modal-dialog-titles-bar\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-titles\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"modal-dialog-title-primary\\\"],[7],[1,[18,\\\"title\\\"],true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[9,\\\"class\\\",\\\"modal-dialog-title-sub\\\"],[7],[1,[18,\\\"subTitle\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-date\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"_dateTitle\\\"],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-close\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"close\\\",[25,\\\"busy-loc\\\",[\\\"Close (Tip: esc to close)\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-header-bar modal-dialog-actions-bar\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-actions-bar-section modal-dialog-action-bar-options\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"_selectOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[\\\"left\\\",[20,[\\\"_selectOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectOptionAction\\\"],null],\\\"label\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-actions-bar-section modal-dialog-action-bar-tabs\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"_tabOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"_tabOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"_selected\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectTabAction\\\",[19,2,[]]]],[7],[1,[19,2,[\\\"label\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-dialog-actions-bar-section modal-dialog-action-bar-buttons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"createTimeEntryConfig\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,0,[\\\"createTimeEntryConfig\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,0,[\\\"showNewTimeEntryDialog\\\"]],true],null]],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add Entry\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[19,0,[\\\"useSplitButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"d-button-split\\\",null,[[\\\"primaryAction\\\",\\\"classModifiers\\\",\\\"selectOptions\\\",\\\"selectAction\\\"],[[25,\\\"action\\\",[[19,0,[]],[19,0,[\\\"_splitButtonOptions\\\",\\\"primaryAction\\\"]]],null],[19,0,[\\\"_splitButtonOptions\\\",\\\"classModifiers\\\"]],[19,0,[\\\"_splitButtonOptions\\\",\\\"selectOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],[19,0,[\\\"_splitButtonOptions\\\",\\\"selectAction\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,0,[\\\"_splitButtonOptions\\\",\\\"primaryText\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"enableCSV\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"get_app\\\",[25,\\\"busy-loc\\\",[\\\"Export CSV\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"exportCSVAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[20,[\\\"buttonOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,[19,1,[\\\"name\\\"]],[25,\\\"busy-loc\\\",[[19,1,[\\\"title\\\"]]],null],[19,1,[\\\"action\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"print\\\",[25,\\\"busy-loc\\\",[\\\"Print\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"printAction\\\"],null]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"modal-dialog-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[11,3],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]],false],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"date\\\",\\\"onClose\\\",\\\"onSave\\\"],[[19,0,[\\\"createTimeEntryConfig\\\",\\\"member\\\"]],[19,0,[\\\"createTimeEntryConfig\\\",\\\"date\\\"]],[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,0,[\\\"showNewTimeEntryDialog\\\"]],false],null]],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/dialogs/tab-header-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employee-selector\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"R9FfXe6K\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"c-employee-selector-bar\\\",[25,\\\"if\\\",[[20,[\\\"__selectedMembers\\\",\\\"length\\\"]],\\\" edit\\\"],null],[25,\\\"unless\\\",[[20,[\\\"canEdit\\\"]],\\\" disable\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"__selectedMembers\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"add-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"add-new\\\"],[3,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[20,[\\\"showEmployeeDialog\\\"]]],null],true]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"+\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear-float\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"__selectedMembers\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employees-select-box\\\"],[3,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[20,[\\\"showEmployeeDialog\\\"]]],null],[25,\\\"unless\\\",[[20,[\\\"__restrictedMembers\\\",\\\"length\\\"]],true,false],null]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"selected-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"max-images-box\\\",null,[[\\\"model\\\",\\\"imagePath\\\",\\\"altTextPath\\\"],[[20,[\\\"__selectedMembers\\\"]],\\\"imageThumbUrl\\\",\\\"fullName\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"arrow-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"arrow\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear-float\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEmployeeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"showCloseButton\\\",\\\"onClose\\\"],[[20,[\\\"allowCancel\\\"]],[25,\\\"if\\\",[[20,[\\\"allowCancel\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"doneAction\\\"],null]],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"saveText\\\",\\\"onSave\\\"],[[20,[\\\"headerTitle\\\"]],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"doneAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-employee-selector-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item select-all\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"__isSelectAll\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAllItems\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title select-all-title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select All\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"__memberList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"employeeClicked\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[19,1,[\\\"isSelected\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"employeeSelected\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,1,[\\\"imageThumbUrl\\\"]],[19,1,[\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employee-selector.hbs\" } });\n});","define(\"busy-app/templates/components/employees/edit-info-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bPqcIgV4\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"save\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Details\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-employee-dialog-details\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"firstName\\\"]],true,[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],\\\"64\\\"]]],false],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"lastName\\\"]],true,[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],\\\"64\\\"]]],false],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"username\\\"]],[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],\\\"256\\\"]]],false],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"username-error\\\"],[7],[1,[18,\\\"usernameWarning\\\"],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"usernameError\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"username-error\\\"],[7],[1,[18,\\\"usernameError\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canShowCompanyInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"memberNumber\\\"]],[25,\\\"busy-loc\\\",[\\\"Employee ID\\\"],null],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-owner\\\",[[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-menu-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Position\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"onSelect\\\",\\\"class\\\"],[[20,[\\\"positionsMenu\\\"]],\\\"title\\\",[20,[\\\"member\\\",\\\"positionName\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectPosition\\\"],null],\\\"full drop-down\\\"]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"email\\\"]],\\\"email\\\",[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n  \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"phone\\\"]],\\\"tel\\\",[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"memberGpsSettingDevelopment\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-menu-container member-gps-setting\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"GPS Location\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"memberGpsSetting\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"PRO\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"class\\\"],[[20,[\\\"gpsLocationMenu\\\"]],\\\"title\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectGpsLocation\\\"],null],\\\"full drop-down\\\"]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/edit-info-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/edit-lock-date\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"hJjZjW2x\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"onDelete\\\",\\\"confirmOnDelete\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null],false,[25,\\\"busy-loc\\\",[\\\"Edit Lock Date\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employees-edit-lock-date\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Edit Lock Date\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"format\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"hideTime\\\"],[[20,[\\\"lockDate\\\"]],[20,[\\\"format\\\"]],[20,[\\\"maxDate\\\"]],true,true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"warnings lock-dialog\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersWithOlderOpenEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"warning-message\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"membersWithOlderOpenEntriesWarning\\\"],false],[0,\\\":\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"warning-details names-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"membersWithOlderOpenEntriesList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning-detail names-list-item\\\"],[7],[1,[19,2,[]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,\\\"is-greater\\\",[[20,[\\\"memberEntries\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[6,\\\"span\\\"],[9,\\\"id\\\",\\\"num-employees-selected\\\"],[7],[1,[20,[\\\"memberEntries\\\",\\\"length\\\"]],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employees Selected\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSaveConfirmOverlay\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inner-dialog confirm-save-overlay active\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"confirm-save-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Open Entries\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersWithOlderOpenEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"warnings confirm-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"warning-message\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"membersWithOlderOpenEntriesWarning\\\"],false],[0,\\\":\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"warning-details names-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"membersWithOlderOpenEntriesList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning-detail names-list-item\\\"],[7],[1,[19,1,[]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersUpdateable\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning num-updateable\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Move lock date for %@ others selected?\\\",[20,[\\\"membersUpdateable\\\",\\\"length\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"warning num-updateable error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No lock dates can be moved\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersUpdateable\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"saveConfirmAccepted\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"saveConfirmDeclined\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/edit-lock-date.hbs\" } });\n});","define(\"busy-app/templates/components/employees/edit-photo-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Pwck2gCE\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"savePhoto\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Photo\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"busy-image-uploader\\\",null,[[\\\"onChange\\\",\\\"imageUrl\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"imageChange\\\"],null],[20,[\\\"member\\\",\\\"imageUrl\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/edit-photo-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/employee-info\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"BaYKY0n9\", \"block\": \"{\\\"symbols\\\":[\\\"member\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isSelf\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"butttonDiv\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openEditDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Details\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isOwner\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTransferDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Transfer Ownership\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"butttonDiv\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openEditDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Details\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"bbusy-lock\\\",[25,\\\"busy-loc\\\",[\\\"General\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"firstName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"lastName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCompanyInfo\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee ID\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"memberNumber\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Position\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"positionName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"memberGroupId\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Group\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"memberGroup\\\",\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Profile Picture\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPhotoDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isSelf\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Profile Picture\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPhotoDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"memberGpsSettingDevelopment\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title gps-location-title\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"GPS Location\\\"],null],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\",\\\"multiline\\\"],[[25,\\\"busy-loc\\\",[\\\"Requiring GPS Location will not allow an employee to clock in or out unless their phone's GPS is turned on, and busybusy has been granted permission to use the employee's location.\\\"],null],\\\"right\\\",true]],{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons material-icons-info\\\"],[7],[0,\\\"info\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"memberGpsSetting\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"navigateToSubscription\\\"],null],null],[7],[0,\\\"PRO\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"timeLocationRequiredDescription\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Contact Information\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"pendingEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[10,\\\"href\\\",[26,[\\\"mailto:\\\",[20,[\\\"member\\\",\\\"pendingEmail\\\"]]]]],[7],[1,[20,[\\\"member\\\",\\\"pendingEmail\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[10,\\\"href\\\",[26,[\\\"mailto:\\\",[20,[\\\"member\\\",\\\"certifiedEmail\\\"]]]]],[7],[1,[20,[\\\"member\\\",\\\"certifiedEmail\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Phone Number\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"a\\\"],[10,\\\"href\\\",[26,[\\\"tel:\\\",[20,[\\\"member\\\",\\\"phone\\\"]]]]],[7],[1,[20,[\\\"member\\\",\\\"phone\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Login\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"username\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPassDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Change Password\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isProAccount\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"PIN Code\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPinDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"pinCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Change PIN\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Create PIN\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isSelf\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Login\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"username\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"text-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openPassDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Change Password\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"timeFormat\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"showCompanyInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,[[\\\"class\\\"],[\\\"preferences\\\"]],{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Preferences\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Format\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[20,[\\\"timeFormat\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changeTimeFormat\\\"],null],\\\"value\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"allowSubscriptionOverride\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"showCompanyInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,[[\\\"class\\\"],[\\\"testing-feature\\\"]],{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Testing features\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Toggle Pro Account\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[\\\"\\\",[20,[\\\"allowProOverride\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditDetails\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/edit-info-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\",\\\"positionsMenu\\\",\\\"showCompanyInfo\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditDetails\\\"],null],[20,[\\\"member\\\"]],[20,[\\\"positionsMenu\\\"]],[20,[\\\"showCompanyInfo\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPassDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelResetPass\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/reset-pass-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelResetPass\\\"],null],[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showPinDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelResetPin\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/reset-pin-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelResetPin\\\"],null],[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPhotoDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closePhotoDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/edit-photo-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closePhotoDialog\\\"],null],[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTransferDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTransferDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"saveColor\\\",\\\"hideFooter\\\",\\\"onSave\\\",\\\"closeOnSave\\\",\\\"hideSaveAndClose\\\",\\\"saveText\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"Transfer Ownership\\\"],null],\\\"red\\\",[20,[\\\"hideTransferFooter\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openConfirmTransferDialog\\\"],null],false,true,[25,\\\"busy-loc\\\",[\\\"Transfer\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeTransferDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"help-text\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You may only transfer company ownership to an Admin who has a verified email.\\\"],null],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"style\\\",\\\"max-height: 600px; overflow: auto;\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"adminMembers\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"select-list-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"select-box-radio\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\"],[\\\"group1\\\",[19,1,[\\\"id\\\"]],[19,1,[\\\"selected\\\"]],\\\"setSelectedTransferMember\\\"]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,1,[\\\"imageThumbUrl\\\"]],[19,1,[\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"inbox\\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"no-admins\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Admins With Verified Email\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"An Admin can verify their email from their account settings.\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showConfirmTransferDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"alertHigh\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"saveTransferOwner\\\"],null],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeConfirmTransferDialog\\\"],null],[20,[\\\"transferHeader\\\"]],[20,[\\\"transferMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Transfer\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/employee-info.hbs\" } });\n});","define(\"busy-app/templates/components/employees/import-employees\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"KcBhnwKU\", \"block\": \"{\\\"symbols\\\":[\\\"list\\\",\\\"member\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportError\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Import Error\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeErrorAction\\\"],null],[20,[\\\"buttonInfoError\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"There was an error in your csv file or the system failed to get some required information from the csv file.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"importErrorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"help\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"For further assistance please send us a\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openIntercom\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"message\\\"],null],false],[8],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"or call our customer service\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[0,\\\"1-855-287-9287\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showPostReview\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Import Step 4 of 4\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closePostReviewAction\\\"],null],[20,[\\\"buttonInfo4\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-post-review\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"importMembers\\\",\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null]]]],[7],[1,[19,3,[\\\"firstName\\\"]],false],[0,\\\" \\\"],[1,[19,3,[\\\"lastName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Position\\\"],null]]]],[7],[1,[19,3,[\\\"positionName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Username\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"username\\\"]],[19,3,[\\\"username\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Password\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"password\\\"]],[19,3,[\\\"password\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showPreview\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Import Step 3 of 4\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closePreviewAction\\\"],null],[20,[\\\"buttonInfo3\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-preview\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"importMembers\\\",\\\"hasInvalidData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"invalid-message c-icon error-icon\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Items that show red have been altered because of invalid input. The data must be fixed in the csv file and uploaded again or it will be submitted as seen below.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"importMembers\\\",\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"invalidName\\\"]],\\\"invalid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null]]]],[7],[1,[19,2,[\\\"firstName\\\"]],false],[0,\\\" \\\"],[1,[19,2,[\\\"lastName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"drop-menu\\\"],[7],[1,[25,\\\"selectors/position-select\\\",null,[[\\\"onSelect\\\",\\\"selected\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"setPermisionFor\\\",[19,2,[]]],null],[19,2,[\\\"positionId\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee ID\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"memberNumber\\\"]],[19,2,[\\\"memberNumber\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"invalidPayrollRate\\\"]],\\\"invalid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Payroll Rate\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"payrollRate\\\"]],[19,2,[\\\"payrollRate\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"invalidPayrollType\\\"]],\\\"invalid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Payroll Type\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"payrollType\\\"]],[19,2,[\\\"payrollType\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"invalidPhone\\\"]],\\\"invalid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"phone\\\"]],[19,2,[\\\"phone\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"invalidEmail\\\"]],\\\"invalid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Email\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"email\\\"]],[19,2,[\\\"email\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showMapping\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Import Step 2 of 4\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMappingAction\\\"],null],[20,[\\\"buttonInfo2\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-mapping\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"importMembers\\\",\\\"headerLists\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"busybusy Headers\\\"],null]]]],[7],[1,[19,1,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"drop-menu\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Your File Headers\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"defaultLabel\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[19,1,[\\\"value\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectListItem\\\"],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Import Step 1 of 4\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null],[20,[\\\"buttonInfo1\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Download our\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[9,\\\"href\\\",\\\"/docs/employee-headers.csv\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sample File\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"to see the required headers.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"The following fields can be imported for employees:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee ID\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Payroll Rate\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Payroll Type\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"*Only the first and last names are required.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-button\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"file-input\\\",null,[[\\\"class\\\",\\\"onChange\\\",\\\"title\\\"],[\\\"csv-upload\\\",[25,\\\"action\\\",[[19,0,[]],\\\"uploadAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Upload\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/import-employees.hbs\" } });\n});","define(\"busy-app/templates/components/employees/overtime-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"GZkPjjtS\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveOvertime\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Overtime\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-employee-dialog-current-overtime\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[\\\"full\\\",[20,[\\\"overtimeChoice\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\"],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSelectDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select which day of the week you want your workweek to begin:\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date:\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"hideTime\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\"],[\\\"ddd. MMM Do\\\",true,[20,[\\\"startDateTime\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active clearfix\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cannot set an effective date older than the lock date\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"custom-overtime\\\",[25,\\\"if\\\",[[20,[\\\"showCustom\\\"]],\\\" active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],\\\"weeklyOvertime\\\",[20,[\\\"customOvertime\\\",\\\"weeklyOvertime\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"invalidError\\\",\\\"validateExpression\\\",\\\"tabindex\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",1,[20,[\\\"overtimeRules\\\",\\\"weeklyOvertime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],\\\"dailyOvertime\\\",[20,[\\\"customOvertime\\\",\\\"dailyOvertime\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"invalidError\\\",\\\"validateExpression\\\",\\\"tabindex\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",2,[20,[\\\"overtimeRules\\\",\\\"dailyOvertime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],\\\"dailyOvertimeTwo\\\",[20,[\\\"customOvertime\\\",\\\"dailyOvertimeTwo\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"invalidError\\\",\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",[20,[\\\"overtimeRules\\\",\\\"dailyDoubletime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],\\\"seventhDayOvertime\\\",[20,[\\\"customOvertime\\\",\\\"seventhDayOvertime\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"model\\\"],[\\\"full\\\",\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"seventhDayOvertime\\\"],null],[20,[\\\"booleanList\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"7th Day Doubletime (wage x 2.0)\\\"],null],\\\"seventhDayOvertimeTwo\\\",[20,[\\\"customOvertime\\\",\\\"seventhDayOvertimeTwo\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"after\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"invalidError\\\",\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Must be a number\\\"],null],\\\"^\\\\\\\\s*\\\\\\\\d+\\\\\\\\s*$\\\",[20,[\\\"overtimeRules\\\",\\\"seventhDayDoubletime\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],\\\"saturdayPayRate\\\",[20,[\\\"customOvertime\\\",\\\"saturdayPayRate\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"wage x\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultFirstOption\\\"],[[20,[\\\"overtimeIncreasesSunday\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"saturdayMultiplier\\\"],null],\\\"value\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"complete-line\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"checkfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],\\\"sundayPayRate\\\",[20,[\\\"customOvertime\\\",\\\"sundayPayRate\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"explanation-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"wage x\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"inputfields\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultFirstOption\\\"],[[20,[\\\"overtimeIncreasesSaturday\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"sundayMultiplier\\\"],null],\\\"value\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fieldtext2\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/overtime-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/overtime-preview-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"A5SlRKa6\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"onClose\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-preview\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"weeklyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"dailyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"dailyDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"seventhDayOvertimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"seventhDayDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"saturdayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row last\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"sundayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective:\\\"],null],false],[0,\\\" \\\"],[1,[18,\\\"effectiveDate\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/overtime-preview-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/reset-pass-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ClpZnt9W\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"save\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Password\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"label\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[\\\"password\\\",\\\"\\\",[25,\\\"busy-loc\\\",[\\\"New Password\\\"],null],\\\"new-password\\\",true,[20,[\\\"member\\\",\\\"password\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"required-text\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[18,\\\"passwordRequirement\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"label\\\",\\\"value\\\",\\\"required\\\",\\\"maxlength\\\"],[\\\"password\\\",\\\"\\\",[25,\\\"busy-loc\\\",[\\\"Confirm Password\\\"],null],[20,[\\\"confirmPass\\\"]],true,\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/reset-pass-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/reset-pin-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"og2Xm+vN\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"save\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change PIN Code\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"placeholder\\\",\\\"type\\\",\\\"autocomplete\\\",\\\"value\\\",\\\"required\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"PIN Code\\\"],null],\\\"\\\",\\\"password\\\",\\\"new-password\\\",[20,[\\\"newPin\\\"]],false,\\\"4\\\"]]],false],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"label\\\",\\\"value\\\",\\\"required\\\",\\\"maxlength\\\"],[\\\"password\\\",\\\"\\\",[25,\\\"busy-loc\\\",[\\\"Confirm PIN Code\\\"],null],[20,[\\\"confirmPin\\\"]],false,\\\"4\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/reset-pin-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/signature-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Dej9XtML\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"busy-signature-pad\\\",null,[[\\\"width\\\",\\\"height\\\"],[\\\"300px\\\",\\\"300px\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/signature-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/wage-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"4j5tNWhk\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"onDelete\\\",\\\"confirmOnDelete\\\"],[[25,\\\"busy-loc\\\",[[20,[\\\"headerTitle\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"canSave\\\"]],\\\"Cancel\\\",\\\"Close\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canSave\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canDelete\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null]],null],false]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-employee-dialog-current-wage\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"wage\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage\\\"],null],\\\"clearfix\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Wage Type:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"defaultFirstOption\\\",\\\"itemLabel\\\"],[\\\"left\\\",[20,[\\\"wageTypeMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectWageRate\\\"],null],true,\\\"value\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"currentWageType\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay Rate:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\",\\\"disabled\\\"],[\\\"^([0-9]*|[0-9]+\\\\\\\\.[0-9]{0,2})$\\\",[20,[\\\"wage\\\",\\\"wage\\\"]],\\\"256\\\",[20,[\\\"isEditDisabled\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"wage\\\",\\\"wageRatePer\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row effective-date\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"wage\\\",\\\"isDefault\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Beginning\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isEditDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"wage\\\",\\\"changeDate\\\"]]],[[\\\"format\\\"],[\\\"ll\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"wageCustomDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-mode-picker\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"disabled\\\"],[\\\"left\\\",[20,[\\\"datePickerModeMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDatePickerMode\\\"],null],\\\"value\\\",[20,[\\\"isEditDisabled\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"datePickerModePayPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pay-periods-select\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"disabled\\\"],[[20,[\\\"payPeriodOptions\\\"]],\\\"label\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectPayPeriod\\\"],null],[20,[\\\"isEditDisabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cycle\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"disabled\\\",\\\"isEditDisabled\\\"],[10,\\\"class\\\",[26,[\\\"d-button cycle-prev \\\",[25,\\\"unless\\\",[[20,[\\\"hasPreviousEffectivePayPeriod\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"hasPreviousEffectivePayPeriod\\\"]],[20,[\\\"previousEffectivePayPeriod\\\",\\\"dateRange\\\"]],[25,\\\"busy-loc\\\",[\\\"Not Allowed\\\"],null]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"cycleToPreviousPayPeriod\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"keyboard_arrow_left\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"disabled\\\",\\\"isEditDisabled\\\"],[10,\\\"class\\\",[26,[\\\"d-button cycle-next \\\",[25,\\\"unless\\\",[[20,[\\\"hasNextEffectivePayPeriod\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"hasNextEffectivePayPeriod\\\"]],[20,[\\\"nextEffectivePayPeriod\\\",\\\"dateRange\\\"]],[25,\\\"busy-loc\\\",[\\\"Not Allowed\\\"],null]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"cycleToNextPayPeriod\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"keyboard_arrow_right\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"datePickerModeCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"disabled\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"format\\\",\\\"utc\\\",\\\"hideTime\\\",\\\"invalid\\\",\\\"onChange\\\"],[[20,[\\\"isEditDisabled\\\"]],[20,[\\\"wage\\\",\\\"changeDate\\\"]],[20,[\\\"oldestAllowedDate\\\"]],[20,[\\\"newestAllowedDate\\\"]],\\\"L\\\",true,true,false,[25,\\\"action\\\",[[19,0,[]],\\\"selectCustomDate\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"notification\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cannot set an effective date older than the lock date\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"wageHistoryConflict\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"You already have a wage set for this day.\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasLockDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lock Date:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"member\\\",\\\"memberLock\\\",\\\"effectiveDate\\\"]]],[[\\\"format\\\",\\\"disabled\\\"],[\\\"LL\\\",[20,[\\\"isEditDisabled\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Estimated Cost of Employee\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"wage\\\",\\\"isHourly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Expected Hours Per Week:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"maxlength\\\",\\\"disabled\\\"],[[20,[\\\"wage\\\",\\\"workWeek\\\"]],\\\"256\\\",[20,[\\\"isEditDisabled\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Hourly Rate:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"wage\\\",\\\"hourlyRate\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Burden:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"validateExpression\\\",\\\"value\\\",\\\"maxlength\\\",\\\"disabled\\\"],[\\\"^[\\\\\\\\-]?[0-9.]*$\\\",[20,[\\\"wage\\\",\\\"overburden\\\"]],\\\"8\\\",[20,[\\\"isEditDisabled\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Estimated Hourly Cost:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"wage\\\",\\\"hourlyCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"bc-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteConfirmationDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmDeleteRejected\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onDelete\\\",\\\"confirmOnDelete\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmDeleteRejected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"confirmDeleteResolved\\\"],null],false]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-wage-dialog-confirmation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete Wage History\\\",[20,[\\\"deleteText\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This action is permanent and cannot be undone.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"nowrap\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Are you sure you want to continue?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOverwriteConfirmationDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmOverwriteRejected\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onDelete\\\",\\\"deleteText\\\",\\\"confirmOnDelete\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmOverwriteRejected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"confirmOverwriteResolved\\\"],null],[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null],false]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-wage-dialog-confirmation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-wage-dialog-confirmation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overwrite Wage History\\\",[20,[\\\"deleteText\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"You already have a wage set for this day.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Continung will delete the wage previously set.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"nowrap\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Are you sure you want to continue?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/wage-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/employees/wage-history\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"x5vFkWyF\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[4,\\\"dialogs/tab-header-dialog\\\",null,[[\\\"title\\\",\\\"subTitle\\\",\\\"noDate\\\",\\\"tabOptions\\\",\\\"currentTab\\\",\\\"enableCsv\\\",\\\"onClose\\\",\\\"onSelectTab\\\",\\\"buttonOptions\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage History\\\"],null],[20,[\\\"member\\\",\\\"fullName\\\"]],true,[20,[\\\"tabOptions\\\"]],[20,[\\\"currentTab\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeWageHistory\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectTab\\\"],null],[20,[\\\"dialogButtonOptions\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-employees-wage-history\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showWage\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"wageHistory\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null]]]],[7],[1,[19,2,[\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"edit-date\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Edit Date\\\"],null]]]],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"updatedOn\\\"]],[25,\\\"date-format\\\",[[19,2,[\\\"updatedOn\\\"]]],[[\\\"format\\\"],[\\\"ll\\\"]]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"labor-burden\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Labor Burden\\\"],null]]]],[7],[1,[19,2,[\\\"overburden\\\"]],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pay\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Pay\\\"],null]]]],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"wage\\\"]]],null],false],[0,\\\" \\\"],[1,[19,2,[\\\"wageRateTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"view\\\"],[9,\\\"title\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showWageDialog\\\",[19,2,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"wageEdit\\\"]],\\\"Edit\\\",\\\"View\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[20,[\\\"overtimePeriods\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null]]]],[7],[1,[19,1,[\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"edit-date\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Edit Date\\\"],null]]]],[7],[1,[19,1,[\\\"formattedUpdatedOn\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-rules\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null]]]],[7],[1,[19,1,[\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"view\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOvertimePreviewDialog\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"overtimePreviewDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"employees/overtime-preview-dialog\\\",null,[[\\\"model\\\",\\\"effectiveDate\\\",\\\"onClose\\\"],[[20,[\\\"overtimePreviewModel\\\"]],[20,[\\\"previewEffectiveDate\\\"]],\\\"hideOvertimePreviewDialog\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showWageHistory\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeWageDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employees/wage-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\",\\\"wage\\\",\\\"wageHistory\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeWageDialog\\\"],null],[20,[\\\"member\\\"]],[20,[\\\"wageHistoryId\\\"]],[20,[\\\"wageHistory\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/wage-history.hbs\" } });\n});","define(\"busy-app/templates/components/employees/wage-info\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"PZuIC3ve\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage\\\"],null],[25,\\\"unless\\\",[[20,[\\\"isArchived\\\"]],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null]],null],\\\"openCurrentWageDialog\\\"]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Wage Type:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wageRateTitle\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay Rate:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wage\\\"]]],null],false],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wageRatePer\\\"]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective As Of:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Wage Type:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wageRateTitle\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay Rate:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wage\\\"]]],null],false],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"wageRatePer\\\"]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective As Of:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Cost\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"isHourly\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Expected Hours Per Week:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"workWeek\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Hourly Rate: \\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"hourlyRate\\\"]]],null],false],[0,\\\"/hr\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Burden:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%@%\\\",[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"overburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Estimated Hourly Cost:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"member\\\",\\\"currentWageHistory\\\",\\\"hourlyCost\\\"]]],null],false],[0,\\\"/hr\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row history\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleWageHistory\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View History\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"adhereToOrg\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Period\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePeriod\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Change Date\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOvertimePreviewDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Current Overtime Rules\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-box\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled Overtime Change\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"overtimePreference\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"adhereToOrg\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Period: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"overtimePeriod\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"effectiveDate\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"changeDate\\\"]],[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"startTime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Change Date: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"formattedDate\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"delete\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"deleteOvertimeChange\\\",[20,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewScheduledOvertimeChange\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Scheduled Rules\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],[25,\\\"unless\\\",[[20,[\\\"isArchived\\\"]],[25,\\\"busy-loc\\\",[\\\"Change\\\"],null]],null],\\\"toggleCurrentOvertimeDialog\\\"]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"adhereToOrg\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Period\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePeriod\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Change Date\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"currentOvertimeRules\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOvertimePreviewDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Current Overtime Rules\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Rules:\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"adhereToOrg\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Period\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"overtimePeriod\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row overtime\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"formattedDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content-box\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled Overtime Change\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"overtimePreference\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"adhereToOrg\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Period: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"overtimePeriod\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date: %@\\\",[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"formattedDate\\\"]]],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"delete\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"deleteOvertimeChange\\\",[20,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showWageHistory\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"employees/wage-history\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],\\\"toggleWageHistory\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCurrentWageDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCurrentWageDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/wage-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCurrentWageDialog\\\"],null],[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCurentOvertimeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"toggleCurrentOvertimeDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/overtime-dialog\\\",null,[[\\\"onClose\\\",\\\"member\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"toggleCurrentOvertimeDialog\\\"],null],[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"overtimePreviewDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"employees/overtime-preview-dialog\\\",null,[[\\\"model\\\",\\\"effectiveDate\\\",\\\"onClose\\\"],[[20,[\\\"overtimePreviewModel\\\"]],[20,[\\\"member\\\",\\\"currentOvertimeRules\\\",\\\"effectiveDate\\\"]],\\\"hideOvertimePreviewDialog\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showScheduledDetailsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeScheduledOvertimeChange\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Scheduled Overtime Change\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-preview\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"weeklyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"dailyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"dailyDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"seventhDayOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"seventhDayDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"saturdayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row last\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"sundayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Scheduled:\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"member\\\",\\\"scheduledOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/employees/wage-info.hbs\" } });\n});","define(\"busy-app/templates/components/equipment/splash-screen\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Km3s93gf\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"onClose\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-splash-screen\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/splash-screen-equipment.png\\\"],[9,\\\"width\\\",\\\"314\\\"],[9,\\\"height\\\",\\\"170\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Know how much time your equipment spent on each project.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"manageCompanySettings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button large blue \\\",[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"disabled\\\",\\\"\\\"],null]]]],[10,\\\"disabled\\\",[26,[[25,\\\"if\\\",[[20,[\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"onEnable\\\"]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Enabling...\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Enable\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button large d-button-outline blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onLearnMore\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn More\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/equipment/splash-screen.hbs\" } });\n});","define(\"busy-app/templates/components/file-drop-box\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"W1PpsdZa\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"label\\\"],[7],[1,[18,\\\"title\\\"],false],[8],[0,\\\"\\\\n\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"file\\\"],[10,\\\"multiple\\\",[18,\\\"multiple\\\"],null],[7],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/file-drop-box.hbs\" } });\n});","define(\"busy-app/templates/components/file-input\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Jm8rUPKz\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"title\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"file\\\"],[10,\\\"multiple\\\",[18,\\\"multiple\\\"],null],[10,\\\"accept\\\",[18,\\\"restrictedTypes\\\"],null],[7],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/file-input.hbs\" } });\n});","define('busy-app/templates/components/g-map/marker', ['exports', 'ember-google-maps/templates/components/g-map/marker'], function (exports, _marker) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _marker.default;\n    }\n  });\n});","define(\"busy-app/templates/components/image-placeholder\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"5jXGLCRc\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"image\\\",[25,\\\"unless\\\",[[20,[\\\"__hasImage\\\"]],[25,\\\"if\\\",[[20,[\\\"__hasInitials\\\"]],\\\" initials\\\",\\\" placeholder\\\"],null]],null]]]],[15,\\\"style\\\",[18,\\\"__backgroundStyle\\\"]],[10,\\\"title\\\",[26,[[18,\\\"altText\\\"]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSixtyFour\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"title\\\",[26,[[18,\\\"altText\\\"]]]],[9,\\\"class\\\",\\\"large-initials\\\"],[7],[1,[18,\\\"__initials\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"title\\\",[26,[[18,\\\"altText\\\"]]]],[9,\\\"class\\\",\\\"small-initials\\\"],[7],[1,[18,\\\"__initials\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/image-placeholder.hbs\" } });\n});","define(\"busy-app/templates/components/lib/bind-context\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6V9tvlpD\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[19,0,[]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/lib/bind-context.hbs\" } });\n});","define(\"busy-app/templates/components/lib/display-value\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"x0XzK+QY\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"value\\\"],true],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/lib/display-value.hbs\" } });\n});","define(\"busy-app/templates/components/lib/drag-drop-box\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eY9xYXoh\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/lib/drag-drop-box.hbs\" } });\n});","define(\"busy-app/templates/components/max-images-box\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"p9LzfOeF\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-max-images-box__image image\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,1,[\\\"member\\\",\\\"imageThumbUrl\\\"]],[19,1,[\\\"member\\\",\\\"fullName\\\"]]]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"scheduleLinks\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-max-images-box__image hidden-total\\\"],[10,\\\"total\\\",[26,[[20,[\\\"item\\\",\\\"scheduleLinks\\\",\\\"length\\\"]]]]],[7],[6,\\\"span\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-max-images-box__image hidden-total\\\"],[10,\\\"total\\\",[26,[[20,[\\\"model\\\",\\\"length\\\"]]]]],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text-fix\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/max-images-box.hbs\" } });\n});","define(\"busy-app/templates/components/menu-button\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sHuwbn1I\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"menu\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/menu-button.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/aggregate-cost\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"0Gi0EexO\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/aggregate-cost.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/aggregate-hours\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QOi/lnIT\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"regular\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"regularSeconds\\\"],null]],null]],[[\\\"padHours\\\",\\\"format\\\"],[[20,[\\\"padHours\\\"]],[20,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"overtimeSeconds\\\"],null]],null]],[[\\\"padHours\\\",\\\"format\\\"],[[20,[\\\"padHours\\\"]],[20,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"doubletime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"doubletimeSeconds\\\"],null]],null]],[[\\\"padHours\\\",\\\"format\\\"],[[20,[\\\"padHours\\\"]],[20,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"total\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[25,\\\"add\\\",[[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"regularSeconds\\\"],null]],null],[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"overtimeSeconds\\\"],null]],null],[25,\\\"add\\\",[[25,\\\"map-by\\\",[[20,[\\\"model\\\"]],\\\"doubletimeSeconds\\\"],null]],null]],null]],[[\\\"padHours\\\",\\\"format\\\"],[[20,[\\\"padHours\\\"]],[20,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/aggregate-hours.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/bound-model-range\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"9Ogm1s+1\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[20,[\\\"boundModel\\\"]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/bound-model-range.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/each-day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ZdSo/4nD\", \"block\": \"{\\\"symbols\\\":[\\\"day\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"content\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[11,2,[[19,1,[]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/each-day.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/each-type\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qoj/X74A\", \"block\": \"{\\\"symbols\\\":[\\\"model\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"content\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[11,2,[[19,1,[]],[20,[\\\"type\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/each-type.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/time-entry/end-for-day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"FlGicGS8\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/time-entry/end-for-day.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/time-entry/start-for-day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ic/P0coa\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/time-entry/start-for-day.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/time-entry/total-break-for-day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"NEku0xcY\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/time-entry/total-break-for-day.hbs\" } });\n});","define(\"busy-app/templates/components/mod-util/time-entry/total-time-for-day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"fJzNPfSb\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/mod-util/time-entry/total-time-for-day.hbs\" } });\n});","define(\"busy-app/templates/components/model-title/cost-code\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"YryhWamz\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[25,\\\"hash\\\",null,[[\\\"costCode\\\",\\\"title\\\",\\\"subTitle\\\",\\\"condensedTitle\\\",\\\"isUnassigned\\\",\\\"hasInfo\\\"],[[20,[\\\"costCode\\\"]],[20,[\\\"title\\\"]],[20,[\\\"subTitle\\\"]],[20,[\\\"condensedTitle\\\"]],[20,[\\\"isUnassigned\\\"]],[20,[\\\"hasInfo\\\"]]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/model-title/cost-code.hbs\" } });\n});","define(\"busy-app/templates/components/model-title/equipment\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7x3cXAZ/\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[25,\\\"hash\\\",null,[[\\\"equipment\\\",\\\"imageUrl\\\",\\\"title\\\",\\\"subTitle\\\",\\\"condensedTitle\\\",\\\"isUnassigned\\\",\\\"hasInfo\\\"],[[20,[\\\"equipment\\\"]],[20,[\\\"imageUrl\\\"]],[20,[\\\"title\\\"]],[20,[\\\"subTitle\\\"]],[20,[\\\"condensedTitle\\\"]],[20,[\\\"isUnassigned\\\"]],[20,[\\\"hasInfo\\\"]]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/model-title/equipment.hbs\" } });\n});","define(\"busy-app/templates/components/model-title/member\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"grADDCWy\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[25,\\\"hash\\\",null,[[\\\"member\\\",\\\"title\\\",\\\"subTitle\\\",\\\"condensedTitle\\\",\\\"hasInfo\\\"],[[20,[\\\"member\\\"]],[20,[\\\"title\\\"]],[20,[\\\"subTitle\\\"]],[20,[\\\"condensedTitle\\\"]],[20,[\\\"hasInfo\\\"]]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/model-title/member.hbs\" } });\n});","define(\"busy-app/templates/components/model-title/project\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"MLvuoRaa\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1,[[25,\\\"hash\\\",null,[[\\\"project\\\",\\\"title\\\",\\\"subTitle\\\",\\\"condensedTitle\\\",\\\"isUnassigned\\\",\\\"hasInfo\\\"],[[20,[\\\"project\\\"]],[20,[\\\"title\\\"]],[20,[\\\"subTitle\\\"]],[20,[\\\"condensedTitle\\\"]],[20,[\\\"isUnassigned\\\"]],[20,[\\\"hasInfo\\\"]]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/model-title/project.hbs\" } });\n});","define(\"busy-app/templates/components/notes/note-cards\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"987a19O1\", \"block\": \"{\\\"symbols\\\":[\\\"entry\\\",\\\"collection\\\",\\\"mediaEntry\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"features\\\",\\\"photosReact\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[10,\\\"href\\\",[18,\\\"reactAppUrl\\\"],null],[10,\\\"target\\\",[18,\\\"reactAppWindowName\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Re-Open Photos and Notes\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openAddDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"mediaCollections\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"mediaCollections\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"media-collection\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openNote\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"title\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,2,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,2,[\\\"description\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,2,[\\\"submittedTime\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"photos\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,2,[\\\"mediaEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[19,3,[\\\"fileThumbUrl\\\"]],[19,3,[\\\"fileThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"moreEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"more-photos\\\"],[7],[0,\\\"+\\\"],[1,[19,2,[\\\"moreEntries\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAddDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAddDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAddDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveAddDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"New Notecard\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"add-collection-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Subject\\\"],null],[20,[\\\"noteCard\\\",\\\"title\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Note\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"placeholder\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Add a description for this note...\\\"],null],[20,[\\\"noteCard\\\",\\\"description\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"project\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"onSelect\\\"],[\\\"addNoteProject\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-file-uploader\\\",null,[[\\\"title\\\",\\\"showProgress\\\",\\\"showPreview\\\",\\\"onChange\\\",\\\"multiple\\\",\\\"errorMessage\\\",\\\"restrictedTypes\\\"],[[25,\\\"busy-loc\\\",[\\\"Choose Photos\\\"],null],false,false,\\\"imageChangeAddDialog\\\",true,[25,\\\"busy-loc\\\",[\\\"File must be an image.\\\"],null],\\\"image/jpeg, image/png, image/gif\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"photo-preview\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"noteCard\\\",\\\"mediaEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"progress\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bar\\\"],[10,\\\"style\\\",[19,1,[\\\"file\\\",\\\"uploadProgressStyle\\\"]],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"inner\\\"],[10,\\\"style\\\",[19,1,[\\\"file\\\",\\\"innerStyle\\\"]],null],[7],[1,[19,1,[\\\"file\\\",\\\"uploadPercent\\\"]],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"percent\\\"],[7],[1,[19,1,[\\\"file\\\",\\\"uploadPercent\\\"]],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[19,1,[\\\"fileThumbUrl\\\"]],[19,1,[\\\"fileThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewUploadDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUploadDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUploadDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewCollection\\\"],null],[25,\\\"busy-loc\\\",[\\\"Upload Image to New Collection\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-file-uploader\\\",null,[[\\\"onChange\\\"],[\\\"imageChange\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCommentDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCommentDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCommentDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveComment\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Comment\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"label\\\",\\\"maxlength\\\"],[[20,[\\\"comment\\\"]],[25,\\\"busy-loc\\\",[\\\"Add Comment\\\"],null],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"mediaEntry\\\",\\\"fileUrl\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"onDelete\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"delete\\\"],null],[25,\\\"busy-loc\\\",[\\\"Photo\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-note-cards\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"mediaEntry\\\",\\\"fileUrl\\\"]]]]],[9,\\\"class\\\",\\\"lg-image\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"mediaEntry\\\",\\\"comment\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onDelete\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"delete\\\"],null],[25,\\\"busy-loc\\\",[\\\"Delete Comment\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-note-cards\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Delete this comment:\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"mediaEntry\\\",\\\"comment\\\"]],false],[0,\\\"?\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteCollectionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteCollectionDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onDelete\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteCollectionDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deleteCollection\\\"],null],[25,\\\"busy-loc\\\",[\\\"Delete Collection\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-note-cards\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Delete this Collection?\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showProjectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeProjectDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeProjectDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveProject\\\"],null],[25,\\\"busy-loc\\\",[\\\"Change Collection Project\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"classNames\\\",\\\"c-note-cards\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"selectedItem\\\",\\\"onSelect\\\"],[[20,[\\\"projectCollection\\\",\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/notes/note-cards.hbs\" } });\n});","define(\"busy-app/templates/components/projects/cost-codes-manager\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"RoM1yy03\", \"block\": \"{\\\"symbols\\\":[\\\"costCodeGroup\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"onSave\\\"],[[25,\\\"busy-loc\\\",[\\\"Manage Cost Codes\\\"],null],[20,[\\\"cancelText\\\"]],[20,[\\\"saveText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"save\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c--projects--cost-codes-manager--dialog-content\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ol\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"checkbox-row checkbox-row--header \\\",[25,\\\"if\\\",[[20,[\\\"isAllSelected\\\"]],\\\"checked\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleAll\\\"],null],null],[10,\\\"class\\\",[26,[\\\"checkbox-row--checkbox bc-checkbox \\\",[25,\\\"if\\\",[[20,[\\\"isAllSelected\\\"]],\\\"checked\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"id\\\",\\\"checkbox-group-all\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"\\\"],[10,\\\"class\\\",[26,[\\\"ember-text-field \\\",[25,\\\"if\\\",[[20,[\\\"isAllSelected\\\"]],\\\"checked\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"isPartialSelected\\\"]],\\\"checked partial\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[9,\\\"for\\\",\\\"checkbox-group-all\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--label\\\"],[7],[0,\\\"Group\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--label\\\"],[7],[0,\\\"Cost Code\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--label\\\"],[7],[0,\\\"Description\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"costCodeGroups\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"_costCodes\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-manager/group\\\",null,[[\\\"costCodeGroup\\\",\\\"createCostCodeLink\\\",\\\"deleteCostCodeLink\\\"],[[19,1,[]],[25,\\\"action\\\",[[19,0,[]],\\\"createCostCodeLink\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deleteCostCodeLink\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/cost-codes-manager.hbs\" } });\n});","define(\"busy-app/templates/components/projects/cost-codes-manager/cost-code\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lvGvrSDa\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"checkbox-row checkbox-row--costcode \\\",[25,\\\"if\\\",[[20,[\\\"costCode\\\",\\\"_selected\\\"]],\\\"selected\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleCostCodeSelection\\\",[20,[\\\"costCode\\\"]]],null],null],[10,\\\"class\\\",[26,[\\\"checkbox-row--checkbox bc-checkbox \\\",[25,\\\"if\\\",[[20,[\\\"costCode\\\",\\\"_selected\\\"]],\\\"checked\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[10,\\\"id\\\",[26,[\\\"checkbox-costcode-\\\",[20,[\\\"costCode\\\",\\\"id\\\"]]]]],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"\\\"],[10,\\\"class\\\",[26,[\\\"ember-text-field \\\",[25,\\\"if\\\",[[20,[\\\"costCode\\\",\\\"_selected\\\"]],\\\"checked\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[10,\\\"for\\\",[26,[\\\"checkbox-costcode-\\\",[20,[\\\"costCode\\\",\\\"id\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleCostCodeSelection\\\",[20,[\\\"costCode\\\"]]],null],null],[9,\\\"class\\\",\\\"checkbox-row--label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[20,[\\\"costCode\\\",\\\"costCode\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"i\\\"],[7],[1,[20,[\\\"costCode\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/cost-codes-manager/cost-code.hbs\" } });\n});","define(\"busy-app/templates/components/projects/cost-codes-manager/group\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"VjmckZDs\", \"block\": \"{\\\"symbols\\\":[\\\"costCode\\\"],\\\"statements\\\":[[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"checkbox-row checkbox-row--group \\\",[25,\\\"if\\\",[[20,[\\\"costCodeGroup\\\",\\\"_selected\\\"]],\\\"selected\\\"],null],\\\" \\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"costCodeGroup\\\",\\\"groupName\\\"]],\\\"Archived\\\"],null],\\\"hidden\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleGroupSelection\\\",[20,[\\\"costCodeGroup\\\"]]],[[\\\"bubbles\\\"],[false]]],null],[9,\\\"class\\\",\\\"checkbox-row--checkbox bc-checkbox\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[10,\\\"id\\\",[26,[\\\"checkbox-group-\\\",[20,[\\\"costCodeGroup\\\",\\\"id\\\"]]]]],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"\\\"],[10,\\\"class\\\",[26,[\\\"ember-text-field \\\",[25,\\\"if\\\",[[20,[\\\"costCodeGroup\\\",\\\"_selected\\\"]],\\\"checked\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"costCodeGroup\\\",\\\"_selectedPartial\\\"]],\\\"checked partial\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[10,\\\"for\\\",[26,[\\\"checkbox-group-\\\",[20,[\\\"costCodeGroup\\\",\\\"id\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--label\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleGroupDetails\\\",[20,[\\\"costCodeGroup\\\"]]],null],null],[7],[1,[20,[\\\"costCodeGroup\\\",\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--meta\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleGroupDetails\\\",[20,[\\\"costCodeGroup\\\"]]],null],null],[7],[1,[20,[\\\"costCodeGroup\\\",\\\"_costCodes\\\",\\\"length\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkbox-row--expander\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleGroupDetails\\\",[20,[\\\"costCodeGroup\\\"]]],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"i\\\"],[10,\\\"class\\\",[26,[\\\"material-icons \\\",[25,\\\"if\\\",[[20,[\\\"_expanded\\\"]],\\\"expanded\\\"],null]]]],[7],[0,\\\"keyboard_arrow_down\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"ol\\\"],[10,\\\"class\\\",[26,[\\\"expandee \\\",[25,\\\"if\\\",[[20,[\\\"_expanded\\\"]],\\\"expanded\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"costCodeGroup\\\",\\\"_costCodes\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-manager/cost-code\\\",null,[[\\\"costCode\\\",\\\"createCostCodeLink\\\",\\\"deleteCostCodeLink\\\"],[[19,1,[]],[20,[\\\"createCostCodeLink\\\"]],[20,[\\\"deleteCostCodeLink\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/cost-codes-manager/group.hbs\" } });\n});","define(\"busy-app/templates/components/projects/cost-codes-select\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"nVv0ndCt\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"isSubproject\\\"]],\\\"Subproject Specific Cost Codes\\\",\\\"Project Specific Cost Codes\\\"],null],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hint\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"showCostCodesAreRecommended\\\"]],[25,\\\"loc\\\",[\\\"We recommend adding cost codes\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey cost-code-select--trigger\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onOpenCostCodesManager\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"activeProjectCostCodeLinks\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" (\\\"],[1,[20,[\\\"activeProjectCostCodeLinks\\\",\\\"length\\\"]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"chevron_right\\\"],[8],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"showUnableToClockInWarning\\\"]],[25,\\\"loc\\\",[\\\"No clocking in on this %@ until cost codes are added\\\",[25,\\\"if\\\",[[20,[\\\"isSubproject\\\"]],\\\"subproject\\\",\\\"project\\\"],null]],null]],null],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCostCodesManager\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"projects/cost-codes-manager\\\",null,[[\\\"projectCostCodeLinks\\\",\\\"projectId\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"projectCostCodeLinks\\\"]],[20,[\\\"projectId\\\"]],[20,[\\\"cancelText\\\"]],[20,[\\\"saveText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onCancelCostCodeChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onCloseCostCodesManager\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveManagerChanges\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/cost-codes-select.hbs\" } });\n});","define(\"busy-app/templates/components/projects/cost-codes\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qci1AxAn\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"projectCostCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,[[\\\"isResponsive\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"action-controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"menuTitle\\\",\\\"onSelect\\\"],[\\\"select-action filter-menu\\\",[20,[\\\"costCodeGroupFilterOptions\\\"]],\\\"filter_list\\\",\\\"value\\\",true,[25,\\\"busy-loc\\\",[\\\"Filter\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectGroupFilter\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"manageCostCodes\\\"],null],null],[7],[0,\\\"Manage\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"costCodeGroupFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"active-group-filter d-button blue\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onClearGroupFilter\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"currentGroupFilter\\\",\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"close\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"noEntries\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"isLoading\\\",\\\"model\\\"],[[20,[\\\"isLoading\\\"]],[20,[\\\"costCodesSorted\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"costCode\\\"]],[19,1,[\\\"costCode\\\"]],\\\"...\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[7],[1,[19,1,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"small\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Archived cost-codes must be un-archived to manage them\\\"],null],null],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"archivedOn\\\"]],\\\"Archived\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"costCodeGroupFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"group\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Group\\\"],null],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"costCodeGroupId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"get\\\",[[25,\\\"get\\\",[[20,[\\\"costCodeGroupsHash\\\"]],[19,1,[\\\"costCodeGroupId\\\"]]],null],\\\"groupName\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"filler\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"inbox\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Press the Manage button above to get started\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCostCodesManager\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-manager\\\",null,[[\\\"projectCostCodeLinks\\\",\\\"projectId\\\",\\\"onCancel\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"costCodeManagerProjectLinks\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onRollBackManagerChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onRollBackManagerChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveManagerChanges\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/cost-codes.hbs\" } });\n});","define(\"busy-app/templates/components/projects/import-projects\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lDIKU2MY\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"dialog\\\",\\\"item\\\",\\\"sp2\\\",\\\"sp3\\\",\\\"sp4\\\",\\\"sp5\\\",\\\"sp6\\\",\\\"sp7\\\",\\\"dialog\\\",\\\"dialog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportError\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Import Error\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeErrorAction\\\"],null],[20,[\\\"buttonInfoError\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"There was an error in your csv file or the system failed to get some required information from the csv file.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"importErrorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"help\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"For further assistance please send us a\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openIntercom\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Message\\\"],null],false],[8],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"or call our customer service\\\"],null],false],[0,\\\" \\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[0,\\\"1-855-287-9287\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showFormat\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Import Format Guide\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeFormatAction\\\"],null],[20,[\\\"buttonInfo3\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog format-guide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"import-modal-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Below is an example of some projects.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"tree-view\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"full-width center-text bold\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"3 Parent Projects\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"parent-project first center-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"E Street Garage\\\"],null],false],[8],[0,\\\" \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"parent-project end-project-1 center-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Doe Residence\\\"],null],false],[8],[0,\\\" \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"parent-project center-text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"SkyView Subdivision\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"full-width\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"two-arm-tree\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"container right\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"two-arm-tree\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"full-width margin-left-30\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subproject end-project-2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Build Deck\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subproject padding-left end-project-3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Install HVAC\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"right-90-px no-padding\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subproject padding-right end-project-4\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lot 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subproject\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lot 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"full-width margin-left-30\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"container right half-arm\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"one-arm-tree\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"full-width margin-left-30\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"right no-padding margin-right-30\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subproject level-3 end-project-5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Foundation\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Create a row for each of the colored end projects.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 3\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 4\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 5\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 6\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Lvl 7\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t  \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"E Street Garage\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"end-project-2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Build Deck\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"E Street Garage\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"end-project-3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Install HVAC\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first end-project-1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Doe Residence\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"SkyView subdiv\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"end-project-4\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lot 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"first\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"SkyView subdiv\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Lot 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"end-project-5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Foundation\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"last\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your data should follow the same format.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showPreview\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Import Step 2 of 2\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closePreviewAction\\\"],null],[20,[\\\"buttonInfo2\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-preview\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"projectsArray\\\",\\\"rootProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-1\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,3,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,3,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,3,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-2\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,4,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,4,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,4,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,4,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-3\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,5,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,5,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,5,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,5,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-4\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,6,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,6,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,6,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,6,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-5\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,7,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,7,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,7,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,7,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-6\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,8,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,8,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,8,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,8,[\\\"subProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-7\\\"],[7],[6,\\\"div\\\"],[7],[8],[1,[25,\\\"if\\\",[[19,9,[\\\"projectInfo\\\",\\\"number\\\"]],[25,\\\"concat\\\",[[19,9,[\\\"projectInfo\\\",\\\"number\\\"]],\\\" - \\\"],null]],null],false],[1,[19,9,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lvl-1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"We couldn't find the projects in your CSV file. Please make sure your headers are correct or download our sample CSV from the previous screen.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"buttonInfo\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Import Step 1 of 2\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null],[20,[\\\"buttonInfo1\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog import-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Projects use a hierarchical data structure.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download this\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[9,\\\"href\\\",\\\"/docs/project-headers.csv\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sample File\\\"],null],false],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"to get started.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Then \\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openFormatAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"click here\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\" to see how to format your data.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Notes:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"*<b>Project Name</b> is required.\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upload-button\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"file-input\\\",null,[[\\\"class\\\",\\\"onChange\\\",\\\"title\\\"],[\\\"csv-upload\\\",\\\"uploadAction\\\",[25,\\\"busy-loc\\\",[\\\"Upload\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/import-projects.hbs\" } });\n});","define(\"busy-app/templates/components/projects/labor-budget\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"OSOvLC5I\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"graphs\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"charts/progress-chart\\\",null,[[\\\"maxValue\\\",\\\"actualValue\\\",\\\"graphColor\\\"],[[20,[\\\"model\\\",\\\"project\\\",\\\"budgetSeconds\\\"]],[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalSeconds\\\"]],\\\"#3fa1a7\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"charts/progress-chart\\\",null,[[\\\"maxValue\\\",\\\"actualValue\\\",\\\"graphColor\\\"],[[20,[\\\"model\\\",\\\"project\\\",\\\"budgetCost\\\"]],[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalOverburdenCost\\\"]],\\\"#28a579\\\"]]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Budget Used\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"key-row\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours-color\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"Labor Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"key-row\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-color\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"Labor Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"table-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"table\\\"],[9,\\\"class\\\",\\\"--budget-table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"thead\\\"],[9,\\\"class\\\",\\\"--budget-table_head\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"tbody\\\"],[9,\\\"class\\\",\\\"--budget-table_body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row title-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Budget\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"placeholder\\\",\\\"showLabel\\\",\\\"disabled\\\",\\\"onBlur\\\",\\\"onSubmit\\\"],[\\\"number\\\",\\\"0\\\",[20,[\\\"model\\\",\\\"project\\\",\\\"budgetCostModel\\\",\\\"cost\\\"]],\\\"0.00\\\",false,[20,[\\\"model\\\",\\\"project\\\",\\\"archivedOn\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveCost\\\",[20,[\\\"laborCost\\\"]],[20,[\\\"model\\\",\\\"project\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveCost\\\",[20,[\\\"laborCost\\\"]],[20,[\\\"model\\\",\\\"project\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The total budget for all subprojects is more than the budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetSeconds\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"placeholder\\\",\\\"showLabel\\\",\\\"disabled\\\",\\\"onBlur\\\",\\\"onSubmit\\\"],[\\\"number\\\",\\\"0\\\",[20,[\\\"laborHours\\\"]],\\\"0\\\",false,[20,[\\\"model\\\",\\\"project\\\",\\\"archivedOn\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveHours\\\",[20,[\\\"laborHours\\\"]],[20,[\\\"model\\\",\\\"project\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveHours\\\",[20,[\\\"laborHours\\\"]],[20,[\\\"model\\\",\\\"project\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The total hours for all subprojects is more than the budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col total-budget-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total budget for all subprojects\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"subprojectsTotalBudgetCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"subprojectsTotalBudgetSeconds\\\"]]],[[\\\"format\\\"],[20]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Remaining\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetSeconds\\\"]]],null],\\\" negative\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"remainingBudgetSeconds\\\"]]],[[\\\"format\\\",\\\"allowNeg\\\"],[20,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row title-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col span-all\\\"],[9,\\\"colspan\\\",\\\"3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Actual\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Used\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalOverburdenCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The actual costs have exceeded the budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The actual costs have exceeded the budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalSeconds\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalSeconds\\\"]]],[[\\\"format\\\"],[20]]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The actual hours have exceeded the budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Remaining\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalOverburdenCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[0,[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalSeconds\\\"]]],null],\\\" negative\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"remainingTotalSeconds\\\"]]],[[\\\"format\\\",\\\"allowNeg\\\"],[20,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row title-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col\\\"],[9,\\\"colspan\\\",\\\"3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subproject Budgets\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"subprojects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/budget-subproject-table\\\",[1]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col no-results\\\"],[9,\\\"colspan\\\",\\\"3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No subprojects found.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/labor-budget.hbs\" } });\n});","define(\"busy-app/templates/components/projects/project-info\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7ijOtY9c\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"manageProjects\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"button-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openEditDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Details\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"General\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Subproject Name\\\",\\\"Project Name\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[20,[\\\"project\\\",\\\"title\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Subproject Number\\\",\\\"Project Number\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"number\\\"]],[20,[\\\"projectInfo\\\",\\\"number\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Customer\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"customer\\\"]],[20,[\\\"projectInfo\\\",\\\"customer\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLinkedCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"projectCostCodeLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,0,[\\\"projectCostCodeLinks\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"phone\\\"]],[20,[\\\"projectInfo\\\",\\\"phone\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Address\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"formattedAddress\\\"]],[20,[\\\"formattedAddress\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"City\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"city\\\"]],[20,[\\\"projectInfo\\\",\\\"city\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"State/Province\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"state\\\"]],[20,[\\\"projectInfo\\\",\\\"state\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"postalCode\\\"]],[20,[\\\"projectInfo\\\",\\\"postalCode\\\"]],\\\"-\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locationBasedReminders\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Geolocation\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Geolocation Set\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"hasLocation\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reminders Enabled\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"reminder\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Require On-Site Clock In\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"requireGPS\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"requireGPS\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Apply to Subprojects\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"requireGpsSubProjects\\\"]],[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],[25,\\\"busy-loc\\\",[\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"projectInfo\\\",\\\"hasLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map\\\",null,[[\\\"locationInfo\\\",\\\"showRadius\\\",\\\"mapInit\\\"],[[20,[\\\"projectInfo\\\"]],true,[20,[\\\"mapInit\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveProjectInfo\\\"],null],[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Edit Subproject\\\",\\\"Edit Project\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-details-edit\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-info-edit-dialog\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Subproject Information\\\",\\\"Project Information\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Subproject Name\\\",\\\"Project Name\\\"],null]],null],true,[20,[\\\"project\\\",\\\"title\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]],\\\"Subproject Number\\\",\\\"Project Number\\\"],null]],null],[20,[\\\"projectInfo\\\",\\\"number\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Customer\\\"],null],[20,[\\\"projectInfo\\\",\\\"customer\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLinkedCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-select\\\",null,[[\\\"projectCostCodeLinks\\\",\\\"projectId\\\",\\\"isSubproject\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancelCostCodeChanges\\\",\\\"onSaveManagerChanges\\\"],[[20,[\\\"_projectCostCodeLinks\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],false,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onCancelCostCodeChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveManagerChanges\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Phone Number\\\"],null],[20,[\\\"projectInfo\\\",\\\"phone\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],[20,[\\\"projectInfo\\\",\\\"address1\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],[20,[\\\"projectInfo\\\",\\\"address2\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"City\\\"],null],[20,[\\\"projectInfo\\\",\\\"city\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"State\\\"],null],[20,[\\\"projectInfo\\\",\\\"state\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],[20,[\\\"projectInfo\\\",\\\"postalCode\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Geolocation\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-geolocation-settings\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Set Geolocation\\\"],null],[20,[\\\"useGeolocation\\\"]],\\\"useGeolocation\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locationBasedReminders\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Reminders to clock-in/out\\\"],null],[20,[\\\"projectInfo\\\",\\\"reminder\\\"]],\\\"reminders\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-geolocation-settings\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Require On-Site Clock In\\\"],null],[20,[\\\"requireOnSiteVerification\\\"]],\\\"requireOnSiteVerification\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"requireOnSiteVerification\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Apply to Subprojects\\\"],null],[20,[\\\"subProjectVerication\\\"]],\\\"subProjectVerication\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map\\\",null,[[\\\"canEdit\\\",\\\"error\\\",\\\"locationInfo\\\",\\\"showRadius\\\",\\\"mapInit\\\",\\\"onLocationChange\\\"],[true,[20,[\\\"mapError\\\"]],[20,[\\\"projectInfo\\\"]],true,[20,[\\\"mapInit\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onProjectLocationChange\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/project-info.hbs\" } });\n});","define(\"busy-app/templates/components/projects/report-header\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bFTUccaB\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[[20,[\\\"title\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"button-print page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"printPage\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Print\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasDateSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"option-selector print page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"defaultFirstOption\\\",\\\"itemLabel\\\"],[[20,[\\\"options\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"optionChange\\\"],null],true,\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideDateSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range-selector\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCustomDateRange\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isRangeSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-date-range\\\",null,[[\\\"startDate\\\",\\\"endDate\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"onChange\\\",\\\"showPayPeriods\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"print-title page-show\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"reportTitle\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[18,\\\"title\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCustomDateRange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"headerDateRange\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content page-margin\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[11,1],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"provided page-show page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered page-color\\\"],[7],[0,\\\"Provided by\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"creator page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created on: \\\"],[1,[18,\\\"createdDate\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created by: \\\"],[1,[18,\\\"creatorName\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/report-header.hbs\" } });\n});","define(\"busy-app/templates/components/projects/report-index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"a5kZzUcy\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"report-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"auth\\\",\\\"useGroupPermissionScoping\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"dispatchPayrollReport\\\",\\\"budget-versus-actual\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Budget vs. Actual\\\"],null],false],[0,\\\"\\\\n      \\\"],[1,[18,\\\"proBadgeHtml\\\"],true],[8],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A report for comparing this projects budget to the actual cost of the project.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"dispatchPayrollReport\\\",\\\"employee\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],false],[0,\\\" \\\"],[1,[18,\\\"proBadgeHtml\\\"],true],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A report breakdown of the hours and cost spent per employee.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"dispatchPayrollReport\\\",\\\"subproject\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subprojects\\\"],null],false],[0,\\\"\\\\n      \\\"],[1,[18,\\\"proBadgeHtml\\\"],true],[8],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A report breakdown of the hours and cost spent per subproject.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"dispatchReport\\\",\\\"time-cards\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Time Sheet\\\"],null],false],[8],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A report for employee time cards by date range.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"allowDailyReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"daily-report\\\",[20,[\\\"hash\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Report\\\"],null],false],[0,\\\" \\\"],[1,[18,\\\"proBadgeHtml\\\"],true],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View daily progress reports for this project\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[\\\"proFeatureManagerCloseModal\\\",\\\"proFeatureManagerPlanUpgraded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/report-index.hbs\" } });\n});","define(\"busy-app/templates/components/projects/sub-project\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"E+pyDUkB\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-action-bar\\\",null,[[\\\"isSub\\\",\\\"selectMenu\\\",\\\"filterMenu\\\",\\\"onAdd\\\",\\\"onSelect\\\",\\\"onFilter\\\",\\\"onSubmit\\\",\\\"onCancel\\\",\\\"onSearch\\\"],[true,[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[20,[\\\"selectMenu\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[20,[\\\"filterMenu\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"canAddProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openNewProjectDialog\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"editListAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"filterAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"submitEditAction\\\"],null]],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchProject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"large\\\",\\\"selector\\\",\\\"minimal\\\",\\\"isLoading\\\",\\\"edit\\\",\\\"selectAll\\\",\\\"onClick\\\",\\\"onSelect\\\",\\\"model\\\"],[true,true,true,[20,[\\\"isLoading\\\"]],[20,[\\\"edit\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectAll\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"subProjectClicked\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"subprojectSelected\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Name\\\"],null]]]],[7],[1,[19,1,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[9,\\\"title\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasRowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"selectors/list-select\\\",null,[[\\\"small\\\",\\\"selector\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"forMember\\\",\\\"filterItem\\\"],[true,true,[20,[\\\"rowSelectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"rowItemSelectAction\\\"],null],\\\"value\\\",[20,[\\\"auth\\\",\\\"member\\\"]],[19,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\"],[[20,[\\\"page\\\"]],[20,[\\\"pageSize\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewProjectDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"saveCloseText\\\",\\\"closeOnSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewProjectDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewProject\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save and add another\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false,[25,\\\"busy-loc\\\",[\\\"Add Subproject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-add-subproject\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Subproject Information\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Subproject Name\\\"],null],true,[20,[\\\"newProject\\\",\\\"title\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Subproject Number\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"number\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Customer\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"customer\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLinkedCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-select\\\",null,[[\\\"projectCostCodeLinks\\\",\\\"projectId\\\",\\\"isSubproject\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancelCostCodeChanges\\\",\\\"onSaveManagerChanges\\\"],[[20,[\\\"_projectCostCodeLinks\\\"]],null,true,[25,\\\"busy-loc\\\",[\\\"Clear\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onCancelCostCodeChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveManagerChanges\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Phone Number\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"phone\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"address1\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"address2\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"City\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"city\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"State\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"state\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"postalCode\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Geolocation\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-geolocation-settings\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Set Geolocation\\\"],null],[20,[\\\"useGeolocation\\\"]],\\\"useGeolocation\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locationBasedReminders\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Reminders to clock-in/out\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"reminder\\\"]],\\\"reminders\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map\\\",null,[[\\\"canEdit\\\",\\\"locationInfo\\\",\\\"showRadius\\\",\\\"error\\\"],[true,[20,[\\\"newProjectInfo\\\"]],true,[20,[\\\"mapError\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showArchiveDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"archiveProject\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeArchiveDialog\\\"],null],[20,[\\\"archiveHeader\\\"]],[20,[\\\"archiveMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Archive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUnarchiveDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmUnarchive\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelUnarchive\\\"],null],[20,[\\\"unarchiveHeader\\\"]],[20,[\\\"unarchiveMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Unarchive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/projects/sub-project.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card-approval/chart\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"pIaaTec7\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"index\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"charts-section\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"charts-graphic\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-chart\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"width\\\",\\\"height\\\",\\\"options\\\"],[\\\"doughnut\\\",[20,[\\\"chartConfig\\\"]],192,192,[20,[\\\"chartOptions\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"charts-legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"modeFilterConfigWithData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"chart-legend-signed \\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedFilter\\\"]],[19,1,[\\\"key\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"filterSelected\\\",[19,1,[\\\"key\\\"]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-swatch\\\"],[10,\\\"style\\\",[19,1,[\\\"style\\\"]],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-label\\\"],[7],[1,[19,1,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-data\\\"],[7],[1,[19,1,[\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"chart-legend-total \\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedFilter\\\"]],\\\"all\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"filterSelected\\\",\\\"all\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-swatch all-bg\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"chart-legend-data\\\"],[7],[1,[18,\\\"numMembers\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card-approval/chart.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card-approval/list-item-loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"SNgL4c/r\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[11,1],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card-approval/list-item-loading.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card-approval/lock-date\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Y9aBx/cc\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[18,\\\"report/time-card-approval/list-item-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"effectiveDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"effectiveDate\\\"]]],[[\\\"format\\\"],[\\\"ll\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card-approval/lock-date.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card-approval/signature-status\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"PvzU/8kj\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[18,\\\"report/time-card-approval/list-item-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"needsSignatureResign\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Re-sign Required\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-description\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasValidSignature\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"signature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-label signed\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Signed\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"signature\\\",\\\"createdOn\\\"]]],[[\\\"format\\\"],[\\\"L\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"hasProxySigner\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"proxyMember\\\",\\\"fullName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-proxy-signer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"signature\\\",\\\"proxyMember\\\",\\\"fullName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[18,\\\"report/time-card-approval/list-item-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Signed\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"hasNoSeconds\\\"]],[25,\\\"busy-loc\\\",[\\\"(No Time)\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card-approval/signature-status.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card/signature-display\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"w7T0edEv\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"signature-title page-color page-section\\\",[25,\\\"busy-loc\\\",[\\\"Signature\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h4\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"formattedDisclaimer\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-boxes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"hasValidSelfSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"createdOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"createdOnConverted\\\"]]],[[\\\"format\\\"],[\\\"L\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"unless\\\",[[20,[\\\"signature\\\",\\\"isTimecardSigningEnabled\\\"]],[25,\\\"busy-loc\\\",[\\\"Date\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"hasValidAuthoritativeSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"createdOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"createdOnConverted\\\"]]],[[\\\"format\\\"],[\\\"L\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"hasProxySigner\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"proxyMember\\\",\\\"fullName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-state-proxy-signer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"proxyMember\\\",\\\"fullName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Supervisor / Superintendent\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"provided-by\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered page-color\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Provided by: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark page-color\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"creator page-color\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Created by:\\\"],null],false],[8],[0,\\\" \\\"],[1,[18,\\\"createdBy\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card/signature-display.hbs\" } });\n});","define(\"busy-app/templates/components/report/time-card/signature-state\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"le/y6GAo\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"span\\\"],[10,\\\"class\\\",[18,\\\"signatureStateClass\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"signatureState\\\"]],[25,\\\"busy-loc\\\",[[20,[\\\"signatureState\\\"]]],null],\\\"\\\"],null],false],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/report/time-card/signature-state.hbs\" } });\n});","define(\"busy-app/templates/components/safety-signature\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"8E9FDXeZ\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/safety-signature.hbs\" } });\n});","define(\"busy-app/templates/components/select-menu/base\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"hl97M8+T\", \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[11,1,[[25,\\\"hash\\\",null,[[\\\"openMenu\\\",\\\"closeMenu\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMenu\\\"],null]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/select-menu/base.hbs\" } });\n});","define(\"busy-app/templates/components/select-menu/cost-code\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"U/0EF/7z\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey \\\",[25,\\\"if\\\",[[20,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[true]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"menuTitle\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[[20,[\\\"isLoading\\\"]],false]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider-menu\\\",[25,\\\"if\\\",[[20,[\\\"isMenuOpen\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[20,[\\\"slideIn\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"disablePadding\\\"],[[25,\\\"busy-loc\\\",[\\\"Select Cost Code\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"backAction\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu-body c-cost-code-select-menu-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body recent\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Recent Cost Codes\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[20,[\\\"keyword\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"recentModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,2,[\\\"costCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,2,[\\\"titleFormatted\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body scrolling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[20,[\\\"keyword\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"All Cost Codes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"costCode\\\"]]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"costCode\\\"]]],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,1,[\\\"costCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,1,[\\\"titleFormatted\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"isLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No cost codes were found\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"bc-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"allowNone\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"keyword\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectNoneAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"cost-codes-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\",\\\"openTop\\\"],[[20,[\\\"page\\\"]],[20,[\\\"pageSize\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null],true]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"allowNone\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"footer-extras\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectNoneAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Skip\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[11,3,[[25,\\\"hash\\\",null,[[\\\"menuTitle\\\",\\\"closeMenu\\\",\\\"closeMenu\\\"],[[20,[\\\"menuTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeMenu\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMenu\\\"],null]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/select-menu/cost-code.hbs\" } });\n});","define(\"busy-app/templates/components/select-menu/equipment\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sjYJ5CeM\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[true]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"menuTitle\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[[20,[\\\"isLoading\\\"]],false]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider-menu\\\",[25,\\\"if\\\",[[20,[\\\"isMenuOpen\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[20,[\\\"slideIn\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"disablePadding\\\"],[[25,\\\"busy-loc\\\",[\\\"Select Equipment\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"backAction\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu-body c-equipment-select-menu-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body recent\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Recent Equipment\\\"],null],false],[0,\\\" \\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"recentModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,2,[\\\"equipmentName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,2,[\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body scrolling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"All Equipment\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[20,[\\\"keyword\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"All Equipment\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,1,[\\\"equipmentName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,1,[\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"isLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No equipment found\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"keyword\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectNoneAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\",\\\"openTop\\\"],[[20,[\\\"page\\\"]],[20,[\\\"pageSize\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/select-menu/equipment.hbs\" } });\n});","define(\"busy-app/templates/components/select-menu/member\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Rb8kkIAq\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[true]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"menuTitle\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[[20,[\\\"isLoaded\\\"]],false]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider-menu\\\",[25,\\\"if\\\",[[20,[\\\"isMenuOpen\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[20,[\\\"slideIn\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"disablePadding\\\"],[[25,\\\"busy-loc\\\",[\\\"Select Cost Code\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"backAction\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu-body c-cost-code-select-menu-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body scrolling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Members\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[20,[\\\"keyword\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"costCode\\\"]]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"fullName\\\"]]],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[19,1,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,1,[\\\"memberNumber\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"isLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No members were found\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"bc-loading\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"keyword\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectNoneAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\",\\\"openTop\\\"],[[20,[\\\"page\\\"]],[20,[\\\"pageSize\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/select-menu/member.hbs\" } });\n});","define(\"busy-app/templates/components/select-menu/project\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"YHVVBNdT\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],[[\\\"bubbles\\\"],[true]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"menuTitle\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[[20,[\\\"isLoading\\\"]],false]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider-menu\\\",[25,\\\"if\\\",[[20,[\\\"isMenuOpen\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[20,[\\\"slideIn\\\"]],\\\" active\\\",\\\" inactive\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\",\\\"disablePadding\\\"],[[25,\\\"busy-loc\\\",[\\\"Select a Project\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"backAction\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu-body c-project-select-menu-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"liquid-bind\\\",[[20,[\\\"depth\\\"]]],[[\\\"class\\\"],[\\\"slide-greater\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"depth\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body recent\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Recent Projects\\\"],null],false],[0,\\\" \\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],\\\"searchAction\\\",[20,[\\\"keyword\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"recentModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,2,[\\\"fullTitle\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-body scrolling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"depth\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"recentModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-search-bar\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"onSubmit\\\",\\\"keyword\\\"],[\\\"search-bar\\\",[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],\\\"searchAction\\\",[20,[\\\"keyword\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"All Projects\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"selectedItem\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"select-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[19,1,[\\\"children\\\",\\\"length\\\"]],[25,\\\"busy-loc\\\",[\\\"Select a subproject\\\"],null],[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"fullTitle\\\"]]],null]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Select %@\\\",[19,1,[\\\"fullTitle\\\"]]],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"keyword\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"depth\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"extra\\\",[25,\\\"if\\\",[[19,1,[\\\"children\\\",\\\"length\\\"]],\\\" active\\\"],null]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"subprojects\\\"],null],false],[6,\\\"div\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No projects were found\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"allowNone\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"depth\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"keyword\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectNoneAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"title d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\",\\\"openTop\\\"],[[20,[\\\"page\\\"]],[20,[\\\"pageSize\\\"]],[20,[\\\"totalRows\\\"]],\\\"changePage\\\",\\\"changeSize\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[11,3,[[25,\\\"hash\\\",null,[[\\\"menuTitle\\\",\\\"openMenu\\\",\\\"closeMenu\\\"],[[20,[\\\"menuTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openMenu\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeMenu\\\"],null]]]]]]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/select-menu/project.hbs\" } });\n});","define(\"busy-app/templates/components/selectors/checkbox-select\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"UScFod8u\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hidden-template\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[11,2],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"name\\\",\\\"onClick\\\"],[\\\"view_column\\\",[25,\\\"action\\\",[[19,0,[]],\\\"toggleMenu\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"list-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"list-menu\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"stopPropagation\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"listItem\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"listItem\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"list-item\\\",[25,\\\"if\\\",[[19,1,[\\\"selected\\\"]],\\\" selected\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"disabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"changeAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"check-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"done\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[19,1,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/selectors/checkbox-select.hbs\" } });\n});","define(\"busy-app/templates/components/selectors/list-select\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7GBE1jGp\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSelectMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"small\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"highlightSlected\\\"],[[20,[\\\"small\\\"]],[20,[\\\"_model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectItem\\\"],null],[20,[\\\"itemLabel\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/selectors/list-select.hbs\" } });\n});","define(\"busy-app/templates/components/selectors/position-select\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"R3aafD/t\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[[20,[\\\"positions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"itemSelected\\\"],null],\\\"title\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/selectors/position-select.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/edit-billing-address\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"HZ7v8Qdq\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Billing Information\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveForm\\\"],null],[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-plan-info-edit-dialog c-plan-info-edit-billing-address\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"inline\\\"],[[20,[\\\"isLoading\\\"]],true]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"billingDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"fieldset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"address\\\"]],[25,\\\"busy-loc\\\",[\\\"Address\\\"],null],true,true,[20,[\\\"isAddressInvalid\\\"]],[20,[\\\"addressInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\"],[[20,[\\\"address2\\\"]],[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],false,true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"city\\\"]],[25,\\\"busy-loc\\\",[\\\"City\\\"],null],true,true,[20,[\\\"isCityInvalid\\\"]],[20,[\\\"cityInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"isCountryInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[0,\\\"Country*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectCountry\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"country\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Country\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"countryOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,3,[\\\"key\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"country\\\"]],[19,3,[\\\"key\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"label\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCountryInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"countryInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCountryUS\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isStateInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[0,\\\"State*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectState\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"state\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"State\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"stateOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,2,[\\\"key\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"state\\\"]],[19,2,[\\\"key\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"label\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isStateInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"stateInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"state\\\"]],[25,\\\"busy-loc\\\",[\\\"State\\\"],null],true,true,[20,[\\\"isStateInvalid\\\"]],[20,[\\\"stateInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"postalCode\\\"]],[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],true,true,[20,[\\\"isPostalCodeInvalid\\\"]],[20,[\\\"postalCodeInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"phone\\\"]],[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],[20,[\\\"isPhoneRequired\\\"]],true,[20,[\\\"isPhoneInvalid\\\"]],[20,[\\\"phoneInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/edit-billing-address.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/edit-payment-method\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"iBG6Xdam\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"year\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"busy-loc\\\",[\\\"Payment Method\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveForm\\\"],null],[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-plan-info-edit-dialog c-plan-info-edit-payment-method\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"inline\\\"],[[20,[\\\"isLoading\\\"]],true]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"billingDetails\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"needsBillingAddress\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"notification error\\\"],[7],[1,[19,0,[\\\"errorMsgMissingBillingAddress\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"fieldset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-row flex-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardHolderName\\\"]],[25,\\\"busy-loc\\\",[\\\"Cardholder Name\\\"],null],true,true,[20,[\\\"isCardHolderNameInvalid\\\"]],[20,[\\\"cardHolderNameInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Card Number\\\"],null],false],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardNumber\\\"]],[20,[\\\"maskedCardNumber\\\"]],true,false,[20,[\\\"isCardNumberInvalid\\\"]],[20,[\\\"cardNumberInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[0,\\\"Expires*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isCardMonthInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"cardMonth\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"cardMonth\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Month\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"monthOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,3,[\\\"value\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"cardMonth\\\"]],[19,3,[\\\"value\\\"]]],null],true,false],null],null],[7],[1,[19,3,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCardMonthInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"cardMonthInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isCardYearInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"cardYear\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"cardYear\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Year\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"yearOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"cardYear\\\"]],[19,2,[]]],null],true,false],null],null],[7],[1,[19,2,[]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCardYearInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"cardYearInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardCVC\\\"]],[25,\\\"busy-loc\\\",[\\\"CVC\\\"],null],true,true,[20,[\\\"isCardCVCInvalid\\\"]],[20,[\\\"cardCVCInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/edit-payment-method.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/edit-plan\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dzm0jyP+\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\",\\\"plan\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onUpdate\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"My Plan\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isSubmitting\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConfirmation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-plan-info-edit-dialog c-plan-info-edit-plan\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/order-confirmation\\\",null,[[\\\"onClose\\\",\\\"onUpdate\\\",\\\"subscriptionType\\\",\\\"invoiceId\\\",\\\"invoiceDueDate\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onUpdate\\\"],null],[20,[\\\"subscriptionType\\\"]],[20,[\\\"invoiceId\\\"]],[20,[\\\"invoiceDueDate\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-plan-info-edit-dialog c-plan-info-edit-plan\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEffectiveDateDisclaimer\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"notification\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Heads up!\\\"],null],false],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Changes will take effect when your current billing cycle ends on %@.\\\",[20,[\\\"effectiveDateFormatted\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"billing-cycle-options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"cost per active user, per month\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"planOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectBillingCycle\\\",[19,2,[\\\"key\\\"]]],null],null],[10,\\\"class\\\",[26,[\\\"billing-cycle-option \\\",[25,\\\"if\\\",[[19,2,[\\\"isSelected\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"check\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\"],[\\\"billingCycle\\\",[19,2,[\\\"key\\\"]],[25,\\\"is-equal\\\",[[20,[\\\"billingCycle\\\"]],[19,2,[\\\"key\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,2,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"price\\\"],[7],[0,\\\"$\\\"],[1,[19,2,[\\\"pricePerUserPerMonth\\\"]],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"plan-options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"plan-options-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Est. Active Users\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"what-is\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[9,\\\"href\\\",\\\"https://busybusy.com/fair-billing/\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"What's an active user?\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-input\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"type\\\",\\\"min\\\"],[[20,[\\\"activeUserEstimate\\\"]],true,\\\"number\\\",1]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isInvoiceRequired\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"notification disclaimer-container \\\",[25,\\\"if\\\",[[20,[\\\"isAgreeToTermsInvalid\\\"]],\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer-checkbox\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"agreeToTerms\\\"]],\\\"onAgreeToTerms\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I understand that an invoice will be sent for my annual subscription.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I agree that my card will be charged if I choose to increase the number of users on my account.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I authorize my card to be charged the monthly rate if I do not submit my invoice by \\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"invoice-date\\\"],[7],[1,[18,\\\"invoiceDueDateFormatted\\\"],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"notification disclaimer-container error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"errorMessage\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"action-bar\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"downgrade\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isFreeAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button text \\\",[25,\\\"if\\\",[[20,[\\\"isSubmitting\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[18,\\\"isSubmitting\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"downgradeToFree\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Downgrade to Free\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"buttons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue \\\",[25,\\\"if\\\",[[20,[\\\"isSubmitting\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[18,\\\"isSubmitting\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"saveForm\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey \\\",[25,\\\"if\\\",[[20,[\\\"isSubmitting\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[18,\\\"isSubmitting\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/edit-plan.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/landing-page\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"WZCYJeTs\", \"block\": \"{\\\"symbols\\\":[\\\"dialog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-landing-page\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Why You'll Love Pro!\\\"],null],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"subtitle\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Trial Expiration %@\\\",[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"trialEndedAt\\\"]]],[[\\\"format\\\"],[\\\"ll\\\"]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"pricing\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Get Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"annual-price\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"annual-price-symbol\\\"],[7],[0,\\\"$\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"annual-price-dollar\\\"],[7],[1,[18,\\\"costPerActiveUserAnnualDollar\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"annual-price-remainder\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"costPerActiveUserAnnualCents\\\"]],[20,[\\\"costPerActiveUserAnnualCents\\\"]],\\\"&nbsp;\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"per user, per month\\\"],null],false],[6,\\\"br\\\"],[7],[8],[1,[25,\\\"busy-loc\\\",[\\\"billed annually\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"$\\\"],[1,[20,[\\\"subscription\\\",\\\"costPerActiveUserMonthly\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"billed monthly\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openUpgradeDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"features\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Features Include\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Budgets\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Advanced Reporting\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Custom User Permissions\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Job Photos\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Priority Phone & Web Support\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Entry History\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Entry Conflict Resolution\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showVerifiedEmailDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeVerifiedEmailDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeVerifiedEmailDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openAccountSettings\\\"],null],[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-plan-info-verify-email-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Verify Your Email Address\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"For your security, we need to verify the account owner's email address before upgrading your account. It only takes 30 seconds. Just visit Account Settings to get started.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showUpgradeDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"subscriptions/upgrade-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/landing-page.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/order-confirmation\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Y7bRIg18\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"c-subscription-upgrade-dialog-thank\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"subscriptionType\\\"]],\\\"annualInvoice\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Invoice Sent!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"An invoice has been sent to <span>%@</span>.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tYou can also view your invoices from your company settings.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tYour payment deadline is <span class='emphasis'>%@.</span>\\\",[20,[\\\"auth\\\",\\\"owner\\\",\\\"email\\\"]],[25,\\\"date-format\\\",[[20,[\\\"invoiceDueDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]]],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openInvoice\\\",[20,[\\\"invoiceId\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Invoice\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button gray\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Subscription\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Questions? View our <a href=\\\\\\\"%@\\\\\\\" target=_blank>Fair Billing Policy</a>\\\",\\\"https://busybusy.com/fair-billing/\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"subscriptionType\\\"]],\\\"annualCredit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Thank you for your payment!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"You have been successfully upgrade to Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Account\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"subscriptionType\\\"]],\\\"monthlyCredit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Thank you for subscribing!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"You may now enjoy all of the busybusy pro features\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Subscription\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/order-confirmation.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/subscription-index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"EHuQYcSK\", \"block\": \"{\\\"symbols\\\":[\\\"tabItem\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-settings-subscription\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLandingPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/landing-page\\\",null,[[\\\"refreshSubscriptionTabState\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"refreshSubscriptionState\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSubscriptionUI\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"vertical-tabs-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"vertical-tabs-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"tabOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedTab\\\"]],[19,1,[\\\"key\\\"]]],null],\\\" active\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectTab\\\",[19,1,[\\\"key\\\"]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"label\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"vertical-tabs-content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedTab\\\"]],\\\"currentPlan\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/subscription-plan-info\\\",null,[[\\\"refreshSubscriptionTabState\\\",\\\"selectTab\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"refreshSubscriptionState\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectTab\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedTab\\\"]],\\\"invoiceHistory\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"subscriptions/subscription-invoice-history\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/subscription-index.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/subscription-invoice-history\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"rVxIlrZ/\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"invoice-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Active Users\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isLoadingStatements\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/line-chart\\\",null,[[\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"colors\\\",\\\"showLegend\\\"],[[20,[\\\"activeUsers\\\"]],\\\"usage\\\",\\\"chartLabel\\\",\\\"#fcbf12\\\",false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Usage to Report\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Statement History\\\"],null],[25,\\\"busy-loc\\\",[\\\"View Billing Policy\\\"],null],\\\"openBillingPolicy\\\"]],{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"isLoading\\\",\\\"model\\\"],[[20,[\\\"isLoadingStatements\\\"]],[20,[\\\"statements\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"clickable\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Statement Period\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"periodStartDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"periodEndDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openStatementPdf\\\",[19,1,[]]]],[7],[1,[25,\\\"date-format\\\",[[19,1,[\\\"periodStartDate\\\"]]],[[\\\"local\\\",\\\"format\\\"],[true,\\\"MMM D\\\"]]],false],[0,\\\" - \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"periodEndDate\\\"]]],[[\\\"local\\\",\\\"format\\\"],[true,\\\"ll\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openStatementPdf\\\",[19,1,[]]]],[7],[1,[25,\\\"date-format\\\",[[19,1,[\\\"periodStartDate\\\"]]],[[\\\"local\\\",\\\"format\\\"],[true,\\\"MMM D\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Statement Date\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"createdOnDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"createdOnDate\\\"]]],[[\\\"local\\\",\\\"format\\\"],[true,\\\"ll\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Amount\\\"],null]]]],[7],[1,[19,1,[\\\"amountString\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoadingPdf\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/subscription-invoice-history.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/subscription-manager\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"tLVYKQ3x\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-sliding-panel\\\",null,[[\\\"showPanel\\\",\\\"title\\\",\\\"onClose\\\"],[[20,[\\\"slideMenuState\\\"]],[25,\\\"if\\\",[[20,[\\\"isTrial\\\"]],[25,\\\"busy-loc\\\",[\\\"Subscription\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Subscription\\\"],null]],null],\\\"closeAction\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscriptions-subscription-manager\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[\\\"info-container\\\",[25,\\\"if\\\",[[20,[\\\"isFreePlan\\\"]],\\\" free-plan\\\"],null],[25,\\\"if\\\",[[20,[\\\"hasCard\\\"]],\\\"\\\",\\\" trial\\\"],null],[25,\\\"if\\\",[[20,[\\\"slidePaymentActive\\\"]],\\\" payment-active\\\"],null],[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\" error\\\"],null],[25,\\\"if\\\",[[20,[\\\"successMessage\\\"]],\\\" success\\\"],null],[25,\\\"if\\\",[[20,[\\\"noChangeMessage\\\"]],\\\" no-change\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subsrction-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Plan Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"changePlan\\\"],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[9,\\\"selected\\\",\\\"\\\"],[9,\\\"value\\\",\\\"\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"planTypeFormatted\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[20,[\\\"planChoices\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,3,[\\\"key\\\"]],null],[10,\\\"selected\\\",[19,3,[\\\"_selected\\\"]],null],[7],[1,[19,3,[\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isFreePlan\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"form-item coupon\\\",[25,\\\"if\\\",[[20,[\\\"couponValid\\\"]],\\\" valid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"onBlur\\\",\\\"showLabel\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Coupon Code\\\"],null],[20,[\\\"couponCode\\\"]],\\\"checkCoupon\\\",false,\\\"200\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[18,\\\"couponName\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hasCard\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Summary\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-items\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Per Active User\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"$\\\"],[1,[18,\\\"costPerUser\\\"],false],[1,[25,\\\"busy-loc\\\",[\\\"/mo\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Billing Period Begins\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"billingPeriodStarts\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"First Payment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"firstPayment\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Only pay for what you use. We charge you once a month based on your number of active users\\\"],null],false],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"learnMore\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Learn more\\\"],null],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"payment-toggle d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleUpdatePayment\\\",true],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Update Payment Info\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isFreePlan\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"update-payment\\\",[25,\\\"if\\\",[[20,[\\\"hasCard\\\"]],\\\" slide-in\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payment Info\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasCard\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"close d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleUpdatePayment\\\",false],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"X\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear-float\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[2,\\\" begin credit card fields \\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"placeholder\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"firstName\\\"]],true,[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],false,[20,[\\\"isFNameInvalid\\\"]],[20,[\\\"fNameInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half end\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"placeholder\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"lastName\\\"]],true,[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],false,[20,[\\\"isLNameInvalid\\\"]],[20,[\\\"lNameInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"showLabel\\\",\\\"required\\\",\\\"value\\\",\\\"placeholder\\\",\\\"validateExpression\\\",\\\"maxlength\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[false,true,[20,[\\\"cardNumber\\\"]],[25,\\\"if\\\",[[20,[\\\"cardNumberPlaceholder\\\"]],[20,[\\\"cardNumberPlaceholder\\\"]],[25,\\\"busy-loc\\\",[\\\"Card #\\\"],null]],null],\\\"^(([3]\\\\\\\\d{14})|([456]\\\\\\\\d{15}))$\\\",\\\"16\\\",[20,[\\\"isCardInvalid\\\"]],[20,[\\\"cardNumberInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"expMonth\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[9,\\\"selected\\\",\\\"\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Month\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"monthMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,2,[\\\"value\\\"]],null],[7],[1,[19,2,[\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"error\\\",[25,\\\"if\\\",[[20,[\\\"isExpMonthInvalid\\\"]],\\\" active\\\"],null]]]],[7],[1,[18,\\\"expMonthInvalid\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half end\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"expYear\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[9,\\\"selected\\\",\\\"\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Year\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"yearMenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,1,[\\\"value\\\"]],null],[7],[1,[19,1,[\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"error\\\",[25,\\\"if\\\",[[20,[\\\"isExpYearInvalid\\\"]],\\\" active\\\"],null]]]],[7],[1,[18,\\\"expYearInvalid\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"showLabel\\\",\\\"placeholder\\\",\\\"required\\\",\\\"maxlength\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cvvCode\\\"]],false,[25,\\\"busy-loc\\\",[\\\"Security Code\\\"],null],true,\\\"4\\\",[20,[\\\"isCvvInvalid\\\"]],[20,[\\\"cvvInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"hasCard\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item half end\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"payment-cancel d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleUpdatePayment\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear-float\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"success\\\"],[7],[1,[18,\\\"successMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-change\\\"],[7],[1,[18,\\\"noChangeMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"updateSubscription\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAnnualPlanDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAnnualPlanDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAnnualPlanDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openIntercom\\\"],null],[25,\\\"busy-loc\\\",[\\\"Chat\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-ssm-annual-plan-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Annual Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Please contact us to subscribe.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Call us at 1-855-287-9287 or press the chat button below\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/subscription-manager.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/subscription-plan-info\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6TTAwcp+\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-plan-info\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"isCustomPlan\\\"]],\\\"Custom Plan\\\",\\\"My Plan\\\"],null]],null],[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isCustomPlan\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-plan-info--message \\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Statements detailing your current custom plan configuration are available to view and download within the\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nowrap\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"selectTab\\\",\\\"invoiceHistory\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"History Tab\\\"],null],false],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"planTypeFormatted\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Billing Plan\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"effectiveDateText\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"callout-effective-date\\\"],[7],[1,[18,\\\"effectiveDateText\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isMonthlyPlan\\\"]],[25,\\\"busy-loc\\\",[\\\"Monthly\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]],[25,\\\"busy-loc\\\",[\\\"Annual\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isInvoice\\\"]],[25,\\\"busy-loc\\\",[\\\"Invoice\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isLockout\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warn-red\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Locked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isPastDue\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warn-red\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Past Due\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Est. Active Users\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"effectiveDateText\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"callout-effective-date\\\"],[7],[1,[18,\\\"effectiveDateText\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionCount\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cost Per Active User*\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"effectiveDateText\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"callout-effective-date\\\"],[7],[1,[18,\\\"effectiveDateText\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"costPerActiveUserText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trial Expiration\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"trialEndedAt\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"LL LTS\\\",true]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"trialEndedAt\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"ll\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"First Payment Due\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"LL LTS\\\",true]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"ll\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"nextPaymentDueDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isAnnualPlan\\\"]],\\\"Estimated Next Payment\\\",\\\"Next Payment\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"nextPaymentDueDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"LL LTS\\\",true]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"nextPaymentDueDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"ll\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"First Payment Due\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"LL LTS\\\",true]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"firstPaymentDate\\\"]]],[[\\\"format\\\",\\\"local\\\"],[\\\"ll\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAccountBalance\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"isBalanceDue\\\"]],\\\"Amount Due\\\",\\\"Available Credit\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"accountBalanceFormatted\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionPendingInvoiceId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Invoice\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openInvoice\\\",[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionPendingInvoiceId\\\"]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"annualSubscriptionPendingInvoiceId\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Payment Method\\\"],null],[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openModal\\\",\\\"EditPaymentMethod\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"billingDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cardholder Name\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"cardHolderName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Credit Card\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"cardType\\\"]],false],[0,\\\" \\\"],[1,[20,[\\\"billingDetails\\\",\\\"maskedCardNumber\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Expires\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"cardMonth\\\"]],false],[0,\\\"/\\\"],[1,[20,[\\\"billingDetails\\\",\\\"cardYear\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Billing Address\\\"],null],[25,\\\"busy-loc\\\",[\\\"Update\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openModal\\\",\\\"EditBillingAddress\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"billingDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Address\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"address\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"billingDetails\\\",\\\"address2\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"address2\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"City\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"city\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"State\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"state\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"postalCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Country\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"country\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"billingDetails\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lr-spaced-row-flex\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Phone\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"billingDetails\\\",\\\"phone\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"small billing-disclaimer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"* Questions? View our <a href=\\\\\\\"%@\\\\\\\" target=_blank>Fair Billing Policy</a>\\\",\\\"https://busybusy.com/fair-billing/\\\"],null],true],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUpgradeDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/upgrade-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditBillingAddress\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/edit-billing-address\\\",null,[[\\\"billingDetails\\\",\\\"onClose\\\",\\\"onUpdate\\\"],[[20,[\\\"billingDetails\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"EditBillingAddress\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeModalAndRefresh\\\",\\\"EditBillingAddress\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditPaymentMethod\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/edit-payment-method\\\",null,[[\\\"billingDetails\\\",\\\"onClose\\\",\\\"onUpdate\\\"],[[20,[\\\"billingDetails\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"EditPaymentMethod\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeModalAndRefresh\\\",\\\"EditPaymentMethod\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAnnualInvoiceWarning\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-plan-info--annual-invoice\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"An Invoice is Open\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To avoid double billing and cross payments, plans cannot be modified while an invoice is pending.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you have any questions, or would like to request changes to your subscription plan, please call us at\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nowrap\\\"],[9,\\\"href\\\",\\\"tel:1-855-287-9287\\\"],[7],[0,\\\"1-855-287-9287\\\"],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAnnualInvoiceWarning\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-plan-info--annual-invoice\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeModal\\\",\\\"AnnualInvoiceWarning\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"An Invoice is Open\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To avoid double billing and cross payments, plans cannot be modified while an invoice is pending.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you have any questions, or would like to request changes to your subscription plan, please call us at\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"nowrap\\\"],[9,\\\"href\\\",\\\"tel:1-855-287-9287\\\"],[7],[0,\\\"1-855-287-9287\\\"],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/subscription-plan-info.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/subscription-plans\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"viPz096a\", \"block\": \"{\\\"symbols\\\":[\\\"gridItem\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plans-pricing\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan subscription-plan-free\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"FREE\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-symbol\\\"],[7],[0,\\\"$\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-dollar\\\"],[7],[0,\\\"0\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-remainder\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Give us a try\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-button\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Current Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isEnterpriseAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue d-button-outline\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openHelpDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trial in Progress\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue d-button-outline\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"downgradeAccount\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Downgrade to Free\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan subscription-plan-pro\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"PRO\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-symbol\\\"],[7],[0,\\\"$\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-dollar\\\"],[7],[1,[18,\\\"userPriceAnnualPerMonthDollar\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-remainder\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"userPriceAnnualPerMonthCents\\\"]],[20,[\\\"userPriceAnnualPerMonthCents\\\"]],\\\"&nbsp;\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"per user, per month\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"billed annually\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"$%@ billed monthly\\\",[20,[\\\"userPricePerMonth\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-footer\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isAccountExpired\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description disabled\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Free Trial Expired\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPaymentMethodPrompt\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Enter Credit Card\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-button\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isTrialAvailable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"startTrial\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Try Free for 30 Days\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isEnterpriseAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue d-button-outline\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openHelpDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trial in Progress\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isProAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Current Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Upgrade Today\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan subscription-plan-enterprise\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"ENTERPRISE\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-symbol\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-dollar\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"plan-price-remainder\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Custom\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"plan-description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"For larger companies\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plan-button\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isEnterpriseAccount\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trial in Progress\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button gray d-button-outline disabled\\\"],[9,\\\"disabed\\\",\\\"disabled\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSubscriptionManager\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Current Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue d-button-outline\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openHelpDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subscription-plans-grid\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"thead\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"plans-grid-col-label\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"plans-grid-col-free\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Free\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"plans-grid-col-pro\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pro\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"plans-grid-col-enterprise\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Enterprise\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Price Per User (billed monthly)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Free\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"$\\\"],[1,[18,\\\"userPricePerMonth\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Price Per User (billed anually)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Free\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"$\\\"],[1,[18,\\\"userPriceAnnualPerYear\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"label\\\"],[9,\\\"colspan\\\",\\\"4\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Users\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"User Limit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"displayUserLimitFree\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[20,[\\\"subscription\\\",\\\"displayUserLimitPro\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Over %@\\\",[20,[\\\"subscription\\\",\\\"displayUserLimitPro\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[9,\\\"class\\\",\\\"label\\\"],[9,\\\"colspan\\\",\\\"4\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Features\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"featureGrid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[19,1,[\\\"featureLabel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[4,\\\"if\\\",[[19,1,[\\\"free\\\"]]],null,{\\\"statements\\\":[[6,\\\"img\\\"],[9,\\\"class\\\",\\\"icon-checkmark-green\\\"],[9,\\\"src\\\",\\\"/images/icons/checkmark-green.svg\\\"],[7],[8]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[4,\\\"if\\\",[[19,1,[\\\"pro\\\"]]],null,{\\\"statements\\\":[[6,\\\"img\\\"],[9,\\\"class\\\",\\\"icon-checkmark-green\\\"],[9,\\\"src\\\",\\\"/images/icons/checkmark-green.svg\\\"],[7],[8]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[4,\\\"if\\\",[[19,1,[\\\"enterprise\\\"]]],null,{\\\"statements\\\":[[6,\\\"img\\\"],[9,\\\"class\\\",\\\"icon-checkmark-green\\\"],[9,\\\"src\\\",\\\"/images/icons/checkmark-green.svg\\\"],[7],[8]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showHelpDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/help-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"subscriptions/subscription-manager\\\",null,[[\\\"slideMenuState\\\",\\\"onClose\\\"],[[20,[\\\"showSubscriptionManager\\\"]],\\\"closeSubscriptionManager\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/subscription-plans.hbs\" } });\n});","define(\"busy-app/templates/components/subscriptions/upgrade-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"MdKrCaMB\", \"block\": \"{\\\"symbols\\\":[\\\"yearOption\\\",\\\"monthOption\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/fs-modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-subscription-upgrade-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"tool-bar\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCloseButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"close\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showBackButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"onBack\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action-icon\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"arrow_back\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"action-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Back\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"modal-content\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"liquid-if\\\",[[20,[\\\"isPaymentAccepted\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"subscriptions/order-confirmation\\\",null,[[\\\"onClose\\\",\\\"subscriptionType\\\",\\\"invoiceDueDate\\\",\\\"invoiceId\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"onClose\\\"],null],[20,[\\\"subscriptionType\\\"]],[20,[\\\"firstPaymentDate\\\"]],[20,[\\\"invoiceId\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"liquid-if\\\",[[20,[\\\"needsPaymentCycle\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"c-subscription-upgrade-dialog-calculate\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Calculate Your Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"How many active users will you have?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"active-users-input\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-input\\\",null,[[\\\"value\\\",\\\"required\\\",\\\"type\\\",\\\"size\\\",\\\"min\\\"],[[20,[\\\"activeUserEstimate\\\"]],true,\\\"number\\\",\\\"5\\\",1]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"activeUserEstimate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card payment-cycle-card payment-cycle-annual\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Annual\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"$%@/yr\\\",[25,\\\"format-number\\\",[[20,[\\\"estimatedCostPerActiveUserAnnual\\\"]],2],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"save\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save $%@/yr\\\",[25,\\\"format-number\\\",[[20,[\\\"estimatedCostPerActiveUserAnnualSavings\\\"]],2],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[10,\\\"disabled\\\",[18,\\\"isFormProcessing\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"selectPaymentCycle\\\",\\\"annual\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Annual\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"card payment-cycle-card payment-cycle-monthly\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Monthly\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"$%@/mo\\\",[25,\\\"format-number\\\",[[20,[\\\"estimatedCostPerActiveUserMonthly\\\"]],2],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"$%@/yr\\\",[25,\\\"format-number\\\",[[20,[\\\"estimatedCostPerActiveUserMonthlyYear\\\"]],2],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button d-button-outline blue\\\"],[10,\\\"disabled\\\",[18,\\\"isFormProcessing\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"selectPaymentCycle\\\",\\\"monthly\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Monthly\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"fair-billing\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"As part of <a href=\\\\\\\"%@\\\\\\\" target=_blank>Our Fair Billing Policy</a> - you are only charged for what you use.\\\",\\\"https://busybusy.com/fair-billing/\\\"],null],true],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"reactMainApp\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"isProAccount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"downgrade-to-free-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button d-button-outline blue\\\"],[10,\\\"disabled\\\",[18,\\\"isFormProcessing\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"downgradeToFree\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Downgrade\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"c-subscription-upgrade-dialog-form\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payment Information\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"form\\\"],[9,\\\"class\\\",\\\"card billing-information\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"fieldset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Billing Information\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"address\\\"]],[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],true,false,[20,[\\\"isAddressInvalid\\\"]],[20,[\\\"addressInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\"],[[20,[\\\"address2\\\"]],[25,\\\"busy-loc\\\",[\\\"Address 2 (optional)\\\"],null],false,false]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"city\\\"]],[25,\\\"busy-loc\\\",[\\\"City\\\"],null],true,false,[20,[\\\"isCityInvalid\\\"]],[20,[\\\"cityInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isCountryInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectCountry\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"country\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Country\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"countryOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,4,[\\\"key\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"country\\\"]],[19,4,[\\\"key\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,4,[\\\"label\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCountryInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"countryInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"country\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCountryUS\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isStateInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSelectState\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"isValidUSState\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"State\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"stateOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,3,[\\\"key\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"state\\\"]],[19,3,[\\\"key\\\"]]],null],true,false],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"label\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isStateInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"stateInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"state\\\"]],[25,\\\"busy-loc\\\",[\\\"State\\\"],null],true,false,[20,[\\\"isStateInvalid\\\"]],[20,[\\\"stateInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"postalCode\\\"]],[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],true,false,[20,[\\\"isPostalCodeInvalid\\\"]],[20,[\\\"postalCodeInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"fieldset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payment Method\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardHolderName\\\"]],[25,\\\"busy-loc\\\",[\\\"Card Holder Name\\\"],null],true,false,[20,[\\\"isCardHolderNameInvalid\\\"]],[20,[\\\"cardHolderNameInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardNumber\\\"]],[25,\\\"if\\\",[[20,[\\\"maskedCardNumber\\\"]],[20,[\\\"maskedCardNumber\\\"]],[25,\\\"busy-loc\\\",[\\\"Card Number\\\"],null]],null],true,false,[20,[\\\"isCardNumberInvalid\\\"]],[20,[\\\"cardNumberInvalid\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row input-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isCardMonthInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"cardMonth\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"cardMonth\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Month\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"cardMonthOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"value\\\",[19,2,[\\\"value\\\"]],null],[10,\\\"selected\\\",[25,\\\"if\\\",[[19,2,[\\\"_isSelected\\\"]],true,false],null],null],[7],[1,[19,2,[\\\"label\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCardMonthInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"cardMonthInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"flex-cell \\\",[25,\\\"if\\\",[[20,[\\\"isCardYearInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"select\\\"],[10,\\\"onchange\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectExp\\\",\\\"cardYear\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"disabled\\\",\\\"\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[20,[\\\"cardYear\\\"]],false,true],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Year\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"cardYearOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[19,1,[\\\"_isSelected\\\"]],true,false],null],null],[7],[1,[19,1,[\\\"value\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCardYearInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"cardYearInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell\\\"],[7],[1,[25,\\\"bc-validate\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"required\\\",\\\"showLabel\\\",\\\"isInvalid\\\",\\\"invalidError\\\"],[[20,[\\\"cardCVC\\\"]],[25,\\\"busy-loc\\\",[\\\"CVC\\\"],null],true,false,[20,[\\\"isCardCVCInvalid\\\"]],[20,[\\\"cardCVCInvalid\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"isCardDateInvalid\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"cardDateInvalid\\\"],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"billing-summary\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Summary\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"table\\\"],[9,\\\"class\\\",\\\"billing-summary-details\\\"],[9,\\\"cellpadding\\\",\\\"0\\\"],[9,\\\"cellspacing\\\",\\\"0\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Billing Plan\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"capitalize\\\"],[7],[1,[18,\\\"paymentCycle\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]],\\\"Billing Period Begins\\\",\\\"First payment\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"firstPaymentDate\\\"]],[25,\\\"date-format\\\",[[20,[\\\"firstPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"L LTS\\\"]]],\\\"-\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"firstPaymentDate\\\"]],[25,\\\"date-format\\\",[[20,[\\\"firstPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]],\\\"Estimated Next Payment\\\",\\\"Next Payment\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"nextPaymentDate\\\"]],[25,\\\"date-format\\\",[[20,[\\\"nextPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"L LTS\\\"]]],\\\"-\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"nextPaymentDate\\\"]],[25,\\\"date-format\\\",[[20,[\\\"nextPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Per User\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"subscription\\\",\\\"costPerActiveUserAnnualPerYearText\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"subscription\\\",\\\"costPerActiveUserMonthlyText\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Number of Users\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[18,\\\"activeUserEstimate\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showAccountBalance\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Credits\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[18,\\\"accountBalanceFormatted\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subtotal\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"subscriptionPreview\\\",\\\"subtotal\\\"]],[20,[\\\"subscriptionPreview\\\",\\\"subtotal\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Tax\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"subscriptionPreview\\\",\\\"tax\\\"]],[20,[\\\"subscriptionPreview\\\",\\\"tax\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tfoot\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"isFreeTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"billing-summary-detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"2\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"billing-summary-detail-notice\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"strong\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Heads up!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No usage will accrue until after your trial ends on\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"nowrap\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"trialEndedAt\\\"]]],[[\\\"format\\\"],[\\\"L LTS\\\"]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"subscription\\\",\\\"subscriptionStatus\\\",\\\"trialEndedAt\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"subscriptionPreview\\\",\\\"total\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"billing-summary-detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"2\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"billing-summary-detail-notice billing-summary-detail-notice-warning\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSubscriptionPreviewLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon refresh-icon icon-spin icon-spin-counter\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"To obtain pricing and tax totals, please provide the required billing information.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"billing-summary-detail billing-summary-divider\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"2\\\"],[7],[6,\\\"hr\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"billing-summary-detail billing-summary-total\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"subscriptionPreview\\\",\\\"total\\\"]],[20,[\\\"subscriptionPreview\\\",\\\"total\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaymentMethodInvoice\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"disclaimer-container \\\",[25,\\\"if\\\",[[20,[\\\"isAgreeToTermsInvalid\\\"]],\\\"invalid\\\"],null]]]],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-row disclaimer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell disclaimer-checkbox\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"action\\\"],[[20,[\\\"agreeToTerms\\\"]],\\\"onAgreeToTerms\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"flex-cell disclaimer-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I understand that an invoice will be sent for my annual subscription.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I agree that my card will be charged if I choose to increase the number of users on my account.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I authorize my card to be charged the monthly rate if I do not submit my invoice by\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"date-format\\\",[[20,[\\\"firstPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"L LTS\\\"]]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"firstPaymentDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isAgreeToTermsInvalid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error-container\\\"],[7],[1,[18,\\\"agreeToTermsInvalid\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"form-error \\\",[25,\\\"if\\\",[[20,[\\\"isFormInvalid\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"formInvalid\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"submit-button\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue large \\\",[25,\\\"if\\\",[[20,[\\\"isLoading\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[18,\\\"isLoading\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"onSubmitPaymentInformation\\\"]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaymentMethodInvoice\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"isLoading\\\"]],[25,\\\"busy-loc\\\",[\\\"Sending Invoice\\\"],null],[25,\\\"busy-loc\\\",[\\\"Send Invoice\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isPaymentCycleAnnual\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"isLoading\\\"]],[25,\\\"busy-loc\\\",[\\\"Submitting Payment\\\"],null],[25,\\\"busy-loc\\\",[\\\"Submit Payment\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"isLoading\\\"]],[25,\\\"busy-loc\\\",[\\\"Subscribing\\\"],null],[25,\\\"busy-loc\\\",[\\\"Subscribe\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/subscriptions/upgrade-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/sync-status\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"0roKXp3n\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/sync-status.hbs\" } });\n});","define(\"busy-app/templates/components/text-box\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"PJUboW3c\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"__value\\\"],true]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/text-box.hbs\" } });\n});","define(\"busy-app/templates/components/text-field\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sYRRQqc0\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/text-field.hbs\" } });\n});","define(\"busy-app/templates/components/time/break-entry/add-edit-input\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LuuxOCn9\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clickAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"breakTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showList\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeListAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/break-entry/list\\\",null,[[\\\"model\\\",\\\"onClose\\\",\\\"onCreate\\\",\\\"onEdit\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeListAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"createNewAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"editBreakAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/break-entry/edit\\\",null,[[\\\"model\\\",\\\"onClose\\\",\\\"onSave\\\",\\\"onDelete\\\"],[[20,[\\\"editModel\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"editSavedAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"editDeleteAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/break-entry/add-edit-input.hbs\" } });\n});","define(\"busy-app/templates/components/time/break-entry/edit\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Ykxc7u/B\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"onDelete\\\",\\\"deleteText\\\",\\\"headerTitle\\\",\\\"showCancelButton\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"_isEdit\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null]],null],[20,[\\\"deleteText\\\"]],[20,[\\\"headerTitle\\\"]],false]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"minDate\\\",\\\"maxDate\\\",\\\"unix\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],[20,[\\\"startBreakTime\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Stop Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"minDate\\\",\\\"maxDate\\\",\\\"unix\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],[20,[\\\"endBreakTime\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-time-picker\\\",null,[[\\\"seconds\\\"],[[20,[\\\"totalBreakTime\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackPaidBreak\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"paidBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Paid Break\\\"],null],\\\"paidBreak\\\",[20,[\\\"currentBreakPaidBreak\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/break-entry/edit.hbs\" } });\n});","define(\"busy-app/templates/components/time/break-entry/list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"EcK+b0D5\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\",\\\"cancelText\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewAction\\\"],null],[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Break\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"timeEntryBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"list-item\\\",[25,\\\"if\\\",[[19,1,[\\\"endTime\\\"]],\\\"\\\",\\\" open\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"editAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"start\\\",[25,\\\"if\\\",[[19,1,[\\\"startInvalid\\\"]],\\\" invalid\\\"],null]]]],[10,\\\"title\\\",[25,\\\"if\\\",[[19,1,[\\\"startInvalid\\\"]],[25,\\\"busy-loc\\\",[\\\"Break start is outside the entry start time\\\"],null]],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"endTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"end\\\",[25,\\\"if\\\",[[19,1,[\\\"endInvalid\\\"]],\\\" invalid\\\"],null]]]],[10,\\\"title\\\",[25,\\\"if\\\",[[19,1,[\\\"endInvalid\\\"]],[25,\\\"busy-loc\\\",[\\\"Break stop is outside the entry stop time\\\"],null]],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"NOW\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"deleted\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Deleted\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"overlappingBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"This break overlaps another break\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"arrow\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/break-entry/list.hbs\" } });\n});","define(\"busy-app/templates/components/time/full-report/signature-notification-bar\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lrinkBCN\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"notificationText\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-notification-bar active\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"message\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"#sign\\\"],[7],[1,[18,\\\"notificationText\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"needsEitherSignatureResign\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"tip\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"c-icon grey-info-icon\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openResignInfo\\\"]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showResignInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeResignInfo\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeResignInfo\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-signature-info-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Re-sign Required\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"One or more edits have been made to this time card since your previous signature.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Please review the time card to verify that all information is correct before re-signing\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/full-report/signature-notification-bar.hbs\" } });\n});","define(\"busy-app/templates/components/time/full-report/signatures\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"RUhmELYS\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"id\\\",\\\"sign\\\"],[7],[8],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Signature\\\"],null],\\\"page-color page-section\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"disclaimer\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"formattedDisclaimer\\\"]],true],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-boxes\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEmployeeSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"createdOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"selfSignature\\\",\\\"createdOnConverted\\\"]]],[[\\\"format\\\"],[\\\"L\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"requestEmployeeSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"print page-hide\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSignaturePad\\\",[20,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"needsSelfSignatureResign\\\"]],[25,\\\"busy-loc\\\",[\\\"Click here to re-sign\\\"],null],[25,\\\"busy-loc\\\",[\\\"Click here to sign\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"isTimecardSupervisorSigningEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"requestSupervisorSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-status\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"print page-hide\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openSupervisorSignaturePad\\\",[20,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"needsAuthoritativeSignatureResign\\\"]],[25,\\\"busy-loc\\\",[\\\"Click here to re-sign\\\"],null],[25,\\\"busy-loc\\\",[\\\"Click here to sign\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Supervisor\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"createdOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"createdOnConverted\\\"]]],[[\\\"format\\\"],[\\\"L\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Supervisor\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"model\\\",\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Supervisor\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"provided-by\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered page-color\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Provided by: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark page-color\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"creator page-color\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Created by:\\\"],null],false],[8],[0,\\\" \\\"],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOpenTimeEntriesWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\",\\\"cancelText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cannot Sign.\\\"],null],\\\"Close\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-signature-info-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cannot Sign.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"The pay period cannot be signed while there are open time entries.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showSignaturePad\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"class\\\"],[[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"acceptSignature\\\"],null],[25,\\\"busy-loc\\\",[\\\"Accept\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null],\\\"c-fullreport-signaturepad-dialog\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-fullreport-signaturepad\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-pad-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"fullreport-signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-signature-pad\\\",null,[[\\\"color\\\",\\\"backgroundColor\\\",\\\"lineColor\\\",\\\"lineWidth\\\",\\\"onSignatureData\\\",\\\"command\\\"],[\\\"#2d3e50\\\",\\\"#fff\\\",\\\"#fff\\\",\\\"2\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSignatureData\\\"],null],[20,[\\\"signaturePadCommand\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"Employee Signature\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clearSignaturePad\\\"]],[7],[0,\\\"Clear Signature\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showSupervisorSignaturePad\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"onCancel\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Supervisor Approval\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"acceptSupervisorSignature\\\"],null],[25,\\\"busy-loc\\\",[\\\"Accept\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSignaturePad\\\"],null],\\\"c-fullreport-signaturepad-dialog\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-fullreport-signaturepad\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-pad-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"fullreport-signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-signature-pad\\\",null,[[\\\"color\\\",\\\"backgroundColor\\\",\\\"lineColor\\\",\\\"lineWidth\\\",\\\"onSignatureData\\\",\\\"command\\\"],[\\\"#2d3e50\\\",\\\"#fff\\\",\\\"#fff\\\",\\\"2\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onSignatureData\\\"],null],[20,[\\\"signaturePadCommand\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"Supervisor Signature\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clearSignaturePad\\\"]],[7],[0,\\\"Clear Signature\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/full-report/signatures.hbs\" } });\n});","define(\"busy-app/templates/components/time/pay-period/list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"VJsR/TJu\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"highlightSlected\\\"],[\\\"select-action\\\",[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"isLoading\\\",\\\"onClick\\\",\\\"model\\\"],[false,[25,\\\"action\\\",[[19,0,[]],\\\"openCardAction\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pay-period\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Pay Period\\\"],null]]]],[7],[1,[19,1,[\\\"dateString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"isTimecardSigningEnabled\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"isSignable\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isLoadingSignatureState\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sign\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon refresh-icon icon-spin-counter\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/pay-period/signature-breadcrumb\\\",null,[[\\\"class\\\",\\\"member\\\",\\\"payPeriodSeconds\\\",\\\"memberTimeDocument\\\"],[\\\"sign\\\",[20,[\\\"member\\\"]],[19,1,[]],[19,1,[\\\"memberTimeDocument\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sign\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"reg-time\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Reg Time\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"doubletime\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Doubletime\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Total\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"autoLoad\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"startAutoLoadAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Show More\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"memberId\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"member\\\",\\\"id\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntryDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"member\\\",\\\"banner\\\",\\\"onDone\\\"],[[20,[\\\"member\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"reloadModel\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/pay-period/list.hbs\" } });\n});","define(\"busy-app/templates/components/time/pay-period/signature-breadcrumb\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"5IPxg2OX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"signatureState\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[[18,\\\"signatureStateClass\\\"]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openFullReport\\\",[20,[\\\"payPeriodSeconds\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"signatureState\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/pay-period/signature-breadcrumb.hbs\" } });\n});","define(\"busy-app/templates/components/time/pay-period/time-off-list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"hJF3rz3+\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"isArchived\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openNewTimeOffDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add Time Off\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"onClick\\\",\\\"model\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"openCardAction\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Date\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[19,1,[\\\"dateString\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isFuture\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"in-future\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"(Upcoming)\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"reg-time\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Paid/Unpaid\\\"],null]]]],[7],[1,[19,1,[\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"over-time\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Type\\\"],null]]]],[7],[1,[19,1,[\\\"getType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"double-time\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Daily Total\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"autoLoad\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"startAutoLoadAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Show More\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"getTimeOffAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/pay-period/time-off-list.hbs\" } });\n});","define(\"busy-app/templates/components/time/signature-invalidation-warning\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"mCA5VyYR\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"basic\\\",\\\"small\\\",\\\"onClose\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"dismissDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-signature-invalidation-warning\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Signed Time Card\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"warningType\\\"]],\\\"wage\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This wage applies to a time card that has already been signed. Editing this wage will notify the employee to re-sign.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This entry belongs to a time card that has already been signed. Editing this entry will notify the employee to re-sign.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"dismissDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"OK\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/signature-invalidation-warning.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-conflict/conflict-list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"8zpTJT3+\", \"block\": \"{\\\"symbols\\\":[\\\"day\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMemberListDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberListDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"currentConflict\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-conflicts\\\",null,[[\\\"model\\\",\\\"member\\\",\\\"isDisabled\\\",\\\"onBack\\\"],[[20,[\\\"currentConflict\\\",\\\"conflicts\\\"]],[20,[\\\"currentConflict\\\",\\\"member\\\"]],[20,[\\\"isDisabled\\\"]],\\\"closeConflicts\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-conflict-list-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-list-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Card Conflicts\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"list-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[6,\\\"div\\\"],[7],[1,[19,1,[\\\"dayString\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"model\\\",\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openConflicts\\\",[19,1,[]],[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,2,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[1,[19,2,[\\\"totalConflicts\\\"]],false],[0,\\\" \\\"],[1,[19,2,[\\\"conflictText\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-conflicts\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"All conflicts have been resolved\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"closeMemberListDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-conflict/conflict-list.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-conflict/merge-entries\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ncboeyEW\", \"block\": \"{\\\"symbols\\\":[\\\"desc\\\",\\\"equipment\\\",\\\"costCode\\\",\\\"project\\\",\\\"timeEntryBreak\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"merge-entries-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"onBack\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Merge Entries\\\"],null],\\\"backAction\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Merge Entries\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select a start time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\",\\\"checked\\\"],[\\\"startTime\\\",[20,[\\\"entry1\\\",\\\"startTime\\\"]],\\\"selectStartTime\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"entry1\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[8],[0,\\\" \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"entry1\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do YYYY\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"startTime\\\",[20,[\\\"entry2\\\",\\\"startTime\\\"]],\\\"selectStartTime\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"entry2\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[8],[0,\\\" \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"entry2\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do YYYY\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select an end time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\",\\\"checked\\\"],[\\\"endTime\\\",[20,[\\\"entry1\\\",\\\"endTime\\\"]],\\\"selectEndTime\\\",true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"entry1\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[8],[0,\\\" \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"entry1\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do YYYY\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"endTime\\\",[20,[\\\"entry2\\\",\\\"endTime\\\"]],\\\"selectEndTime\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"entry2\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A\\\"]]],false],[8],[0,\\\" \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"entry2\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do YYYY\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"breakArray\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box no-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"breakArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[19,5,[\\\"dateString\\\"]],[19,5,[\\\"includeInMerge\\\"]],\\\"breaks\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMore\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"projectArray\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select project\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"projectArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\"],[\\\"project\\\",[19,4,[\\\"id\\\"]],[19,4,[\\\"_selected\\\"]],\\\"selectProject\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,4,[\\\"title\\\"]],[19,4,[\\\"fullTitle\\\"]],\\\"No Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,4,[\\\"entryTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"costCodeArray\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"costCodeArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\"],[\\\"costCode\\\",[19,3,[\\\"id\\\"]],[19,3,[\\\"_selected\\\"]],\\\"selectCostCode\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"costCodeLabel\\\"]],[19,3,[\\\"costCodeLabel\\\"]],\\\"No cost code\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"entryTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"equipmentArray\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"equipmentArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\"],[\\\"equipment\\\",[19,2,[\\\"id\\\"]],[19,2,[\\\"_selected\\\"]],\\\"selectEquipment\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"equipmentName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No equipment\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"entryTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"descriptionArray\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select description\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"descriptionArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"checked\\\",\\\"onSelect\\\"],[\\\"description\\\",[19,1,[\\\"description\\\"]],[19,1,[\\\"_selected\\\"]],\\\"selectDescription\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"description\\\"]],[19,1,[\\\"description\\\"]],\\\"No description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"entryTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canShowMore\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleDetails\\\"]],[7],[1,[25,\\\"if\\\",[[20,[\\\"showMore\\\"]],[25,\\\"busy-loc\\\",[\\\"Show less\\\"],null],[25,\\\"busy-loc\\\",[\\\"Show more\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"targetParent\\\"],[[19,0,[]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button blue\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"saveMerge\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-conflict/merge-entries.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-conflict/resolve-conflicts\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"uD+nmAaJ\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDetails\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog resolve-conflicts\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Entry Details\\\"],null],\\\"hideDetails\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-details\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"detailItem\\\",\\\"startString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"detailItem\\\",\\\"endString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"detailItem\\\",\\\"timeEntryBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"totalTimeString\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"projectId\\\"]],[20,[\\\"detailItem\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"None\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"costCodeId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"detailItem\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"costCodeId\\\"]],[20,[\\\"detailItem\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],\\\"None\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"detailItem\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"description\\\"]],[20,[\\\"detailItem\\\",\\\"description\\\"]],\\\"None\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Location\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"detailItem\\\",\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map-leaflet-time-entry-locations\\\",null,[[\\\"timeEntry\\\"],[[20,[\\\"detailItem\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[9,\\\"class\\\",\\\"no-locations\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No locations available\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideDetails\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showEdit\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\",\\\"hasBackButton\\\"],[[20,[\\\"editItem\\\"]],\\\"closeEdit\\\",\\\"itemDeleted\\\",\\\"editSavedAction\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showMerge\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/merge-entries\\\",null,[[\\\"entry1\\\",\\\"entry2\\\",\\\"isDisabled\\\",\\\"onResolved\\\",\\\"onBack\\\",\\\"onCancel\\\"],[[20,[\\\"currentConflict\\\",\\\"model\\\"]],[20,[\\\"currentConflict\\\",\\\"conflictModel\\\"]],[20,[\\\"isDisabled\\\"]],\\\"conflictResolvedAction\\\",\\\"closeMerge\\\",\\\"closeMerge\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"conflictResolved\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog resolve-conflicts\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Card Conflicts\\\"],null],\\\"closeSuccess\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"centered resolved-success\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"checkmark\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Resolved\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[2,\\\"<a class=\\\\\\\"d-button grey\\\\\\\" {{!action 'closeSuccess' bubbles=false}}>{{!busy-loc \\\\\\\"Back\\\\\\\"}}</a>\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"standard-dialog resolve-conflicts\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[20,[\\\"dayString\\\"]],[25,\\\"if\\\",[[20,[\\\"onBack\\\"]],\\\"backAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-message\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelf\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"A time card entry was submitted for you that overlaps an existing entry.\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"A time card entry was submitted for %@ that overlaps an existing entry.\\\",[20,[\\\"member\\\",\\\"fullName\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-message-locked\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This time period has been locked to prevent editing.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"liquid-bind\\\",[[20,[\\\"currentConflict\\\"]]],[[\\\"class\\\"],[\\\"slide-greater\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 1\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start time: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"model\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A [(]MMM DD[)]\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[19,1,[\\\"model\\\",\\\"startMember\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End time: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"model\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A [(]MMM DD[)]\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[19,1,[\\\"model\\\",\\\"endMember\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks: \\\"],null],false],[8],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"model\\\",\\\"breakTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Details: \\\"],null],false],[8],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showDetails\\\",[19,1,[\\\"model\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey pull-right edit \\\",[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeEntry\\\",[19,1,[\\\"model\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button red pull-right delete \\\",[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\",[19,1,[\\\"model\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-item-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-item-box-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time entry 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start time: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"conflictModel\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A [(]MMM DD[)]\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[19,1,[\\\"conflictModel\\\",\\\"startMember\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End time: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"conflictModel\\\",\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"h:mm A [(]MMM DD[)]\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[19,1,[\\\"conflictModel\\\",\\\"endMember\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks: \\\"],null],false],[8],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"conflictModel\\\",\\\"breakTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[6,\\\"b\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Details: \\\"],null],false],[8],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showDetails\\\",[19,1,[\\\"conflictModel\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"options\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey pull-right edit \\\",[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeEntry\\\",[19,1,[\\\"conflictModel\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button red pull-right delete \\\",[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\",[19,1,[\\\"conflictModel\\\"]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Delete\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text merge-entries\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openMerge\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Merge entries\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteOverlay\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/delete-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"deleteMessage\\\"],[\\\"confirmDelete\\\",\\\"cancelDelete\\\",[25,\\\"busy-loc\\\",[\\\"Are you sure you want to delete this entry?\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"targetParent\\\"],[[19,0,[]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"next-btn\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[25,\\\"if\\\",[[20,[\\\"hasNextConflict\\\"]],\\\"\\\",\\\"disabled\\\"],null],\\\" grey\\\"]]],[3,\\\"action\\\",[[19,0,[]],\\\"nextCurrentConflict\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"next\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict-text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Conflict %@/%@\\\",[20,[\\\"conflictNumber\\\"]],[20,[\\\"model\\\",\\\"length\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"prev-btn\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[25,\\\"if\\\",[[20,[\\\"hasPrevConflict\\\"]],\\\"\\\",\\\"disabled\\\"],null],\\\" grey\\\"]]],[3,\\\"action\\\",[[19,0,[]],\\\"prevCurrentConflict\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"previous\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-conflict/resolve-conflicts.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-conflict/resolve-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"r8RFp1P3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConflictDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"dataLoaded\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeConflictDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"conflict-list-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-conflicts\\\",null,[[\\\"model\\\",\\\"member\\\",\\\"isDisabled\\\",\\\"onClose\\\"],[[20,[\\\"conflicts\\\"]],[20,[\\\"member\\\"]],[20,[\\\"isDisabled\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeConflictDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-conflict/resolve-dialog.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/clock-in-at\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"4I/rGtvF\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"clockinSave\\\"],null],[25,\\\"busy-loc\\\",[\\\"Clock In At\\\"],null]]],{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"class\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[25,\\\"if\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]],\\\"invalid\\\"],null],[20,[\\\"startDateTime\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active\\\"],[7],[1,[18,\\\"lockDateErrorMessage\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"onSelect\\\",\\\"onMenuClose\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"disableCostCodeSelection\\\"]],[25,\\\"busy-loc\\\",[\\\"Must select project first\\\"],null]],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"hasMultipleMembers\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"onSelect\\\"],[\\\"equipmentSelected\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"memberEntries\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"membersCombined\\\"]],[20,[\\\"startDateTime\\\"]],[20,[\\\"startDateTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/clock-in-at.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/clock-in\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"+rycyiUg\", \"block\": \"{\\\"symbols\\\":[\\\"q\\\",\\\"choice\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasTimeLocationRequired\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"dialogs/error/gps-location-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"saveDisabled\\\",\\\"disablePadding\\\",\\\"onSaveConfirmError\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[20,[\\\"covidRestricted\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"clockinSave\\\"],null],[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"covidRestricted\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"covid-restriction\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Clock in restricted for the day.\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"c-icon grey-info-icon\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openCovidRestrictionDialog\\\"]],[7],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clock-in-dialog-content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item form-item-project\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n          \\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"onSelect\\\",\\\"onMenuClose\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"disableCostCodeSelection\\\"]],[25,\\\"busy-loc\\\",[\\\"Must select project first\\\"],null]],null]]]],[7],[0,\\\"\\\\n              \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n              \\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"hasMultipleMembers\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n                \\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"onSelect\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"equipmentSelected\\\"],null]]]],false],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"hideCovidCheckForm\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"busySignIn\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"busySignInQuestion\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"editCovidQuestionsDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],false],[8],[0,\\\"\\\\n                \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey secondary\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openCovidQuestionDialog\\\"]],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"covidQuestionsSubmittedText\\\"],false],[8],[0,\\\"\\\\n                  \\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n                  \\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],false],[8],[0,\\\"\\\\n                \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-select-menu\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button grey secondary covid-question-button\\\"],[10,\\\"disabled\\\",[18,\\\"editCovidQuestionsDisabled\\\"],null],[3,\\\"action\\\",[[19,0,[]],\\\"openCovidQuestionDialog\\\"]],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"covidQuestionsSubmittedText\\\"],false],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"div\\\"],[7],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n          \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showCovidQuestionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCovidDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"hideSaveAndClose\\\",\\\"closeOnSave\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCovidDialog\\\"],null],true,false,[25,\\\"action\\\",[[19,0,[]],\\\"setCovidQuestionAnswers\\\"],null],[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"covid-question-dialog\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"covidQuestions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"question\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"question-header\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[19,1,[\\\"questionTitle\\\"]],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"question-body\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[19,1,[\\\"questionDescription\\\"]],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"choicesArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[[19,1,[\\\"questionTitle\\\"]],[19,2,[\\\"value\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setClockInQuestionAnswer\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n                  \\\"],[1,[19,2,[\\\"choice\\\"]],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showPrompt\\\"]]],null,{\\\"statements\\\":[[0,\\\"              \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[6,\\\"b\\\"],[7],[1,[19,1,[\\\"questionPrompt\\\"]],false],[8],[8],[0,\\\"\\\\n                \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"placeholder\\\",\\\"value\\\"],[\\\"\\\",[19,1,[\\\"promptAnswer\\\"]]]]],false],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCovidError\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"covid-error\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[18,\\\"covidError\\\"],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showCovidRestrictionDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"confirmHeader\\\",\\\"cancelText\\\",\\\"hideConfirmButton\\\",\\\"onCancel\\\",\\\"confirmMessage\\\"],[[20,[\\\"covidRestrictionHeader\\\"]],[25,\\\"loc\\\",[\\\"Close\\\"],null],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeCovidRestrictionDialog\\\"],null],[20,[\\\"covidRestrictionMessage\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/clock-in.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/clock-out-at\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"W0asQh6R\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"clockoutSave\\\"],null],[25,\\\"busy-loc\\\",[\\\"Clock Out At\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clock-out-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock Out\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"endDateTime\\\"]],[20,[\\\"mindate\\\"]],[20,[\\\"maxdate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetyDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety\\\",null,[[\\\"member\\\",\\\"memberEntries\\\",\\\"timeEntry\\\",\\\"afterSave\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[20,[\\\"memberEntries\\\"]],[20,[\\\"member\\\",\\\"openEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"safetyClockOut\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSignOffRequiredDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyRequiredDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyRequiredDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/clock-out-at.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/clock\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ksbonAEp\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isClockRunning\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"onBreak\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"preBreakTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"rounding-explanation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"roundingExplanation\\\"],false],[0,\\\" \\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[20,[\\\"roundingReason\\\"]],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon brown-info-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"00:00:00\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"elapsedTime\\\"]]],[[\\\"padHours\\\",\\\"showSeconds\\\",\\\"format\\\"],[true,true,10]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"elapsedTime\\\"]]],[[\\\"padHours\\\",\\\"showSeconds\\\",\\\"format\\\"],[true,true,10]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"rounding-explanation\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"roundingExplanation\\\"],false],[0,\\\" \\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[20,[\\\"roundingReason\\\"]],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon brown-info-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"00:00:00\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"00:00:00\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"onBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"end-break d-button yellow\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"endBreakAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Break\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"clock-out d-button red\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"clockOutAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock Out\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"start-break d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"goOnBreakAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Go on Break\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"switch d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"switchProjectAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Switch\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"clock-in d-button blue\\\"],[9,\\\"id\\\",\\\"time-card-clock--clock-in\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clockInAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"clockInDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/time-entry/clock-in\\\",null,[[\\\"member\\\",\\\"timeEntry\\\",\\\"organization\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[20,[\\\"openEntry\\\"]],[20,[\\\"organization\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockIn\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"switchProjectDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSwitchProject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/switch\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSwitchProject\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetyDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety\\\",null,[[\\\"member\\\",\\\"timeEntry\\\",\\\"afterSave\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[20,[\\\"member\\\",\\\"openEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialogAndClockOut\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSignOffRequiredDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showInjuryProtocolDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeProtocolDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/injury-protocol\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeProtocolDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showGpsLocationRequiredDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/error/gps-location-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"GpsLocationRequiredDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[2,\\\"\\\\t\\\\t<div class=\\\\\\\"v-time-card-clock-break-type-dialog\\\\\\\">\\\\n\\\\t\\\\t\\\\t<h2>{{!busy-loc \\\\\\\"What type of break?\\\\\\\"}}</h2>\\\\n\\\\t\\\\t\\\\t<a {{!action 'paidBreakAction'}} class=\\\\\\\"d-button grey\\\\\\\">{{!busy-loc \\\\\\\"Paid\\\\\\\"}}</a> <a {{!action 'unpaidBreakAction'}} class=\\\\\\\"d-button grey\\\\\\\">{{!busy-loc \\\\\\\"Not Paid\\\\\\\"}}</a>\\\\n\\\\t\\\\t</div> \\\"],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/clock.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/create-new\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"XqiNZd5V\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSaveConfirmError\\\",\\\"closeOnSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"timecardSave\\\"],null],[20,[\\\"closeOnSave\\\"]],[25,\\\"busy-loc\\\",[\\\"New Time Entry\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-new-time-entry\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]],\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n        \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"timeRoundingInterval\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"class\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[25,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]],\\\"invalid\\\"],null],[20,[\\\"startDateTime\\\"]],[20,[\\\"member\\\",\\\"lockDate\\\"]],[20,[\\\"maxdate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Date must be later than the lock date\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"member\\\",\\\"memberLock\\\",\\\"effectiveDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock Out\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"timeRoundingInterval\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"endDateTime\\\"]],[20,[\\\"member\\\",\\\"lockDate\\\"]],[20,[\\\"maxdate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/break-entry/add-edit-input\\\",null,[[\\\"model\\\"],[[20,[\\\"timeEntry\\\"]]]]],false],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-time-picker\\\",null,[[\\\"seconds\\\"],[[20,[\\\"totalTime\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"timeEntry\\\",\\\"project\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"shouldShowEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"onSelect\\\"],[\\\"equipmentSelected\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n        \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"timeEntry\\\",\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"member\\\",\\\"memberEntries\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"member\\\"]],[20,[\\\"memberEntries\\\"]],[20,[\\\"startDateTime\\\"]],[20,[\\\"endDateTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetyDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety\\\",null,[[\\\"member\\\",\\\"memberEntries\\\",\\\"timeEntry\\\",\\\"afterSave\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[20,[\\\"memberEntries\\\"]],[20,[\\\"timeEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"safetyDialogSaveEntry\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSignOffRequiredDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyRequiredDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/safety-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyRequiredDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/create-new.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/edit-open\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"SyofXtYd\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveTimeEntry\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Current Entry\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"startDateTime\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[1,[25,\\\"time/break-entry/add-edit-input\\\",null,[[\\\"model\\\"],[[20,[\\\"member\\\",\\\"openEntry\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"selectedItem\\\",\\\"onSelect\\\",\\\"onMenuClose\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[20,[\\\"selectedProject\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[10,\\\"title\\\",[26,[[25,\\\"if\\\",[[20,[\\\"disableCostCodeSelection\\\"]],[25,\\\"busy-loc\\\",[\\\"Must select project first\\\"],null]],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"selectedItem\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"selectedProject\\\",\\\"id\\\"]],[20,[\\\"selectedCostCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n          \\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"selectedItem\\\",\\\"onSelect\\\"],[[20,[\\\"selectedEquipment\\\"]],\\\"equipmentSelected\\\"]]],false],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"memberEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"memberEntries\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"memberEntries\\\"]],[20,[\\\"startDateTime\\\"]],[20,[\\\"startDateTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"member\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"member\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"member\\\"]],[20,[\\\"startDateTime\\\"]],[20,[\\\"startDateTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/edit-open.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/edit\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lkABNvB9\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"onCancel\\\",\\\"onBack\\\",\\\"onSave\\\",\\\"onDelete\\\"],[[25,\\\"busy-loc\\\",[\\\"Edit Time Entry\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"if\\\",[[20,[\\\"hasBackButton\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null]],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null],[25,\\\"if\\\",[[20,[\\\"isSavingEnabled\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-time-entry\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSavedStartTimeLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"locked-entry-error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cannot Edit.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This time period has been locked to prevent editing.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isTooOldToEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-lock\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This time entry is too old to edit.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Entries older than 90 days can not be changed again.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"form-item\\\",[25,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]],\\\" error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Clock In\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"class\\\",\\\"round\\\"],[[20,[\\\"startDateTime\\\"]],[20,[\\\"model\\\",\\\"member\\\",\\\"lockDate\\\"]],[20,[\\\"maxDate\\\"]],true,[25,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]],\\\"invalid\\\"],null],[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedStartTimeLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Date must be later than the lock date\\\"],null],false],[0,\\\":\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"member\\\",\\\"memberLock\\\",\\\"effectiveDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Clock Out\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-time-picker\\\",null,[[\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"round\\\"],[[20,[\\\"endDateTime\\\"]],[20,[\\\"model\\\",\\\"member\\\",\\\"lockDate\\\"]],[20,[\\\"maxDate\\\"]],true,[20,[\\\"timeRoundingInterval\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/break-entry/add-edit-input\\\",null,[[\\\"model\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-time-picker\\\",null,[[\\\"seconds\\\"],[[20,[\\\"totalTime\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"selectedItem\\\",\\\"onSelect\\\",\\\"onMenuClose\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[20,[\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"selectedItem\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[20,[\\\"costCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"selectedItem\\\",\\\"onSelect\\\"],[[20,[\\\"equipment\\\"]],\\\"equipmentSelected\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"model\\\",\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSavingEnabled\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"allowSignatureInvalidationWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"member\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"model\\\",\\\"startTime\\\"]],[20,[\\\"model\\\",\\\"endTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"confirmSaveOverlay\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmMessage\\\"],[\\\"confirmSave\\\",\\\"cancelConfirmSave\\\",[20,[\\\"confirmReasonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDeleteOverlay\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/delete-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"deleteMessage\\\"],[\\\"confirmDelete\\\",\\\"cancelDelete\\\",[25,\\\"busy-loc\\\",[\\\"Are you sure you want to delete this time entry?\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/edit.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/employee-list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"P6jY32Rb\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"entry\\\",\\\"item\\\",\\\"result\\\",\\\"entry\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-time-time-entry-employee-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-body\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"editEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onSaved\\\",\\\"onDelete\\\",\\\"onCancel\\\",\\\"hasBackButton\\\"],[[20,[\\\"editEntry\\\"]],\\\"savedAction\\\",\\\"savedAction\\\",\\\"cancelEdit\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"editTimeOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onSaved\\\",\\\"onDelete\\\",\\\"onCancel\\\",\\\"hasBackButton\\\"],[[20,[\\\"editTimeOff\\\"]],\\\"savedAction\\\",\\\"savedAction\\\",\\\"cancelEdit\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-main\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hideMenu\\\"],[[20,[\\\"headerTitle\\\"]],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCustomDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"dateRangeString\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"project\\\",\\\"parentProjectId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"project\\\",\\\"parentProject\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCustomDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[18,\\\"dateRangeString\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"equipmentHeader\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"equipment-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"equipment\\\",\\\"equipment\\\",\\\"equipmentThumb\\\"]]]]],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"equipment-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"equipment\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"equipment\\\",\\\"equipment\\\",\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"equipment\\\",\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entries-content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"groupByMember\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-day\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"day-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"day\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"total\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,3,[\\\"groupedResult\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,4,[\\\"contents\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"bg-image\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,4,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,4,[\\\"member\\\",\\\"fullName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[19,4,[\\\"contents\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,5,[\\\"dateStamp\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"entry\\\",[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,4,[\\\"member\\\"]]],null],\\\"\\\",\\\" no-access\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeOffEntry\\\",[19,5,[\\\"model\\\"]],[19,4,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,5,[\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,5,[\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[19,5,[\\\"model\\\",\\\"totalString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Is Paid: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,5,[\\\"model\\\",\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"model\\\",\\\"description\\\"]],[19,5,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"entry\\\",[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,4,[\\\"member\\\"]]],null],\\\"\\\",\\\" no-access\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntry\\\",[19,5,[\\\"model\\\"]],[19,4,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,5,[\\\"startDateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,5,[\\\"endDateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,5,[\\\"breaktimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break\\\"],[7],[0,\\\"(\\\"],[1,[19,5,[\\\"breakTimeString\\\"]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"conflict l-info-box left no-wrap\\\",[25,\\\"if\\\",[[19,5,[\\\"hasConflict\\\"]],\\\" show\\\"],null]]]],[9,\\\"alt\\\",\\\"Overlapping Time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[19,5,[\\\"totalTimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"model\\\",\\\"projectTitle\\\"]],[19,5,[\\\"model\\\",\\\"fullProjectTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],[19,5,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],\\\"-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items equipmentModel\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment: \\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,5,[\\\"model\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,5,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,5,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,5,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"model\\\",\\\"description\\\"]],[19,5,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"onlyHasOpenTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-day\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"day-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"day\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"total\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,2,[\\\"isOpenEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"dateStamp\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"entry\\\",[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null],\\\"\\\",\\\" no-access\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeOffEntry\\\",[19,2,[\\\"model\\\"]],[20,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[19,2,[\\\"model\\\",\\\"totalString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Is Paid: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,2,[\\\"model\\\",\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"description\\\"]],[19,2,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[10,\\\"class\\\",[26,[\\\"entry\\\",[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null],\\\"\\\",\\\" no-access\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntry\\\",[19,2,[\\\"model\\\"]],[20,[\\\"member\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"startDateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"endDateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"breaktimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break\\\"],[7],[0,\\\"(\\\"],[1,[19,2,[\\\"breakTimeString\\\"]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"conflict l-info-box left no-wrap\\\",[25,\\\"if\\\",[[19,2,[\\\"hasConflict\\\"]],\\\" show\\\"],null]]]],[9,\\\"alt\\\",\\\"Overlapping Time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[19,2,[\\\"totalTimeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"projectTitle\\\"]],[19,2,[\\\"model\\\",\\\"fullProjectTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"costCodeTitle\\\"]],[19,2,[\\\"model\\\",\\\"costCodeTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items equipmentModel\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"description\\\"]],[19,2,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No time entries found\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/employee-list.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/injury-protocol\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"frVgNUkB\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],\\\"Done\\\",[25,\\\"busy-loc\\\",[\\\"Injury Protocol\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you are injured, please follow your company's protocol.\\\\r\\\\n\\\\t\\\\t\\\\tIf you are seriously injured, please seek immediate medical attention.\\\\r\\\\n\\\\t\\\\t\\\\tReporting your injury on busybusy does not alert emergency services\\\"],null],false],[0,\\\".\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/injury-protocol.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/log\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"SW/nHop8\", \"block\": \"{\\\"symbols\\\":[\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-entry-log\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-time-time-entry-log\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"liquid-if\\\",[[20,[\\\"mapItem\\\",\\\"showMap\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"log-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Location\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeGPSDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-log-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map-time-entry-locations\\\",null,[[\\\"timeEntry\\\"],[[20,[\\\"mapItem\\\"]]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"liquid-if\\\",[[20,[\\\"showMergedHistory\\\"]]],[[\\\"class\\\"],[\\\"slide-in\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"log-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Conflicting History\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelMergedHistory\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-log-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[20,[\\\"mergedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/time/time-entry/log\\\",[1]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"log-main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-header\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Entry History\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-log-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/time/time-entry/log\\\",[]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/log.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/safety-required\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QOVU+PbA\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"disablePadding\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],\\\"Close\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sign-off-required\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off Required\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee will need to complete the daily sign-off\\\\r\\\\n\\\\t\\\\tprocess from the daily report on a mobile device. To see which\\\\r\\\\n\\\\t\\\\temployees still need to sign, view the Daily Sign-Off Report\\\"],null],false],[0,\\\".\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/safety-required.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/safety\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"3vS2OsKq\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onClose\\\",\\\"saveText\\\",\\\"headerTitle\\\",\\\"onSave\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveInjured\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-safety-dialog\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sign-off-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Were you injured?\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignatureMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignatureMessage\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"If you were injured, please contact your supervisor. If your injury is serious, contact emergency services immediately.\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"radio-buttons\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"injury\\\",true,[25,\\\"action\\\",[[19,0,[]],\\\"setInjured\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"injury\\\",false,[25,\\\"action\\\",[[19,0,[]],\\\"setInjured\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"safetyObject\\\",\\\"injured\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Please describe your injury.\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"injuredReason\\\"]],500]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sign-off-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]],[25,\\\"busy-loc\\\",[\\\"Did you follow California break policy?\\\"],null],[25,\\\"busy-loc\\\",[\\\"Did you follow company break policy?\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"breakPolicyCalifornia\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"You certify that you took the required breaks or they were waived by mutual consent as outlined in the\\\"],null],false],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openCaliforniaBreakDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"California break laws\\\"],null],false],[8],[0,\\\".\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicyMessage\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"radio-buttons\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"break\\\",true,[25,\\\"action\\\",[[19,0,[]],\\\"setBreakFollowed\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"break\\\",false,[25,\\\"action\\\",[[19,0,[]],\\\"setBreakFollowed\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"breakFollowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Why didn’t you take your breaks?\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"breakFollowedReason\\\"]],500]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"caBreakMismatch\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"breakFollowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Why didn’t you have the expected break time?\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"breakFollowedReason\\\"]],500]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"sign-off-container \\\",[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"safetySignature\\\"]],\\\"bottom\\\"],null]]]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Is your time Correct?\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracyMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracyMessage\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"If your time is not correct, please notify your supervisor as soon as possible to resolve the issue.\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"radio-buttons\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"accuracy\\\",true,[25,\\\"action\\\",[[19,0,[]],\\\"setTimeAccuracy\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"bc-radio-button\\\",null,[[\\\"name\\\",\\\"value\\\",\\\"onSelect\\\"],[\\\"accuracy\\\",false,[25,\\\"action\\\",[[19,0,[]],\\\"setTimeAccuracy\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"timeInaccurate\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Why was your time incorrect?\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"maxlength\\\"],[[20,[\\\"timeAccurateReason\\\"]],500]]],false],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showCaliforniaBreakDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,null,{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onClose\\\",\\\"onCancel\\\",\\\"cancelText\\\",\\\"headerTitle\\\"],[\\\"closeCaliforniaBreakDialog\\\",[25,\\\"action\\\",[[19,0,[]],\\\"closeCaliforniaBreakDialog\\\"],null],[25,\\\"loc\\\",[\\\"Close\\\"],null],[25,\\\"busy-loc\\\",[\\\"California Break Laws\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"california-break-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member-info\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member-name\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[20,[\\\"member\\\",\\\"firstName\\\"]],false],[0,\\\" \\\"],[1,[20,[\\\"member\\\",\\\"lastName\\\"]],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member-id\\\"],[7],[0,\\\"ID: \\\"],[1,[20,[\\\"member\\\",\\\"memberNumber\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hrs-number\\\"],[7],[0,\\\"\\\\n        \\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"elapsedTime\\\"]]],[[\\\"padHours\\\",\\\"showSeconds\\\",\\\"format\\\"],[false,false,10]]],false],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hrs-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Hrs\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"break-info\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"breaks\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Meal Breaks (Unpaid)\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details-table\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-cell\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Hours on the Clock\\\"],null],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-cell\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"# Meal Breaks\\\"],null],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-body\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"0 - 5 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"0\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"5:01 - 10 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"1\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"10:01 - 15 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"2\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"15:01 - 20 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"3\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"20:01+ Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"4\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"breaks\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Rest Breaks (Paid)\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"busybusy doesn't track rest (paid) breaks.\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"showRestBreakRequirements\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"break-link\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openRestBreakRequirements\\\"]],[7],[0,\\\"\\\\n          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Show California Rest Break Requirements\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showRestBreakRequirements\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details-table\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-cell\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Hours on the Clock\\\"],null],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-cell\\\"],[7],[0,\\\"\\\\n            \\\"],[1,[25,\\\"busy-loc\\\",[\\\"# Rest Breaks\\\"],null],false],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-body\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"0 - 3:29 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"0\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"3:30 - 6 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"1\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"6:01 - 10 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"2\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"10:01 - 14 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"3\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"14:01 - 18 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"4\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"18:01 - 22 Hrs\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n            \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cell\\\"],[7],[0,\\\"\\\\n              \\\"],[1,[25,\\\"busy-loc\\\",[\\\"5\\\"],null],false],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"additional-info\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Additional Information\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"For additional information on California break laws, see the following links:\\\"],null],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[9,\\\"href\\\",\\\"https://www.dir.ca.gov/dlse/faq_mealperiods.htm\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Meal Periods\\\"],null],false],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[9,\\\"href\\\",\\\"https://www.dir.ca.gov/dlse/FAQ_RestPeriods.htm\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Rest Periods\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/safety.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/status\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"2pBCEDyW\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"highlightSlected\\\"],[\\\"select-action\\\",[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/time-entry/clock\\\",null,[[\\\"isDisabled\\\",\\\"isSuspended\\\",\\\"canClockIn\\\",\\\"member\\\",\\\"organization\\\",\\\"onClockChange\\\"],[[20,[\\\"isDisabled\\\"]],[20,[\\\"isSuspended\\\"]],[20,[\\\"canClockIn\\\"]],[20,[\\\"member\\\"]],[20,[\\\"organization\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"clockChangeAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"onTitleClick\\\",\\\"buttonName\\\"],[[25,\\\"busy-loc\\\",[\\\"Current Activity\\\"],null],[25,\\\"if\\\",[[20,[\\\"member\\\",\\\"clockedIn\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openEditDialog\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"member\\\",\\\"clockedIn\\\"]],[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"time-card-table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-project-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"project\\\"]],[20,[\\\"member\\\",\\\"openEntry\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-costcode-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"costCode\\\"]],[20,[\\\"member\\\",\\\"openEntry\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],\\\"-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-equipment-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"member\\\",\\\"openEntry\\\",\\\"equipment\\\",\\\"fullName\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-notes-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[10,\\\"title\\\",[26,[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"description\\\"]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\",\\\"defaultValue\\\"],[[20,[\\\"member\\\",\\\"openEntry\\\",\\\"description\\\"]],\\\"-\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-location-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Location\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"item \\\",[25,\\\"if\\\",[[20,[\\\"hasLocations\\\"]],\\\"d-button text\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openLocationDialog\\\"]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"View\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"time-card-table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-today-total-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Today's Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,0,[\\\"totalTime\\\"]]],[[\\\"padHours\\\",\\\"format\\\"],[true,10]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"ts-today-breaks-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Today's Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,0,[\\\"breakTime\\\"]]],[[\\\"padHours\\\",\\\"format\\\"],[true,10]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"memberId\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"member\\\",\\\"id\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryAdd\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryAdd\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeOffAdd\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeOffAdd\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClockInAtDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeClockInAt\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/clock-in-at\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockInAt\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClockOutAtDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeClockOutAt\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/clock-out-at\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockOutAt\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit-open\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLocationDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/open-entry-location\\\",null,[[\\\"openEntry\\\",\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\",\\\"openEntry\\\"]],[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeLocationDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/status.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/switch\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"jXl1ir0u\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveSwitchProject\\\"],null],[25,\\\"busy-loc\\\",[\\\"Switch Projects\\\"],null]]],{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"autoOpen\\\",\\\"selectedItem\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"projectsAutoOpen\\\"]],[20,[\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"projectMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/cost-code\\\",null,[[\\\"autoOpen\\\",\\\"disabled\\\",\\\"projectId\\\",\\\"selectedItem\\\",\\\"onMenuClose\\\",\\\"onSelect\\\"],[[20,[\\\"costCodesAutoOpen\\\"]],[20,[\\\"disableCostCodeSelection\\\"]],[20,[\\\"project\\\",\\\"id\\\"]],[20,[\\\"costCode\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeMenuClosed\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-greater\\\",[[20,[\\\"memberEntries\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/equipment\\\",null,[[\\\"selectedItem\\\",\\\"onSelect\\\"],[[20,[\\\"equipment\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"equipmentSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/switch.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-entry/view\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"nO/NbsEu\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\"],[[20,[\\\"headerTitle\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry--loading-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"inline\\\",\\\"fixed\\\"],[true,true,false]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"time-entry--header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"time-entry--header--details\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"ddd, MMM DD\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"time-entry--header--actions\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditOption\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isTooOldToEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button white disabled\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Locked\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button white\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeEntry\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEntryHistoryOption\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"entryHistory\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewEntryHistory\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Entry History\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showHoursSection\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null],\\\"time-entry--hours\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time\\\"],null],false],[8],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"segmentRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"segmentOvertimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],false],[8],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"segmentOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"segmentDoubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Double Time\\\"],null],false],[8],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"segmentDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Time\\\"],null],false],[8],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"breakTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showJobDetailsSection\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null],\\\"time-entry--job-details\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"job-details--project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"projectNameDisplay\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"job-details--cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"costCodeDisplay\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isEquipmentEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"job-details--equipment\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"equipmentDisplay\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"job-details--description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\",\\\"defaultValue\\\"],[[20,[\\\"model\\\",\\\"description\\\"]],\\\"&nbsp;-\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"job-details--breaks\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"breaks--list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"timeEntryBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"breaks--list--break\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"break--hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTime\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"break--time\\\"],[7],[1,[19,1,[\\\"dateString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"break--warnings\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"overlappingBreak\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"This break overlaps another break\\\"],null],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons icon-warning\\\"],[7],[0,\\\"warning\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"invalidEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"This break is outside the time entry\\\"],null],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons icon-warning\\\"],[7],[0,\\\"warning\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"invalidStartTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"This break starts before the time entry\\\"],null],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons icon-warning\\\"],[7],[0,\\\"warning\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"invalidEndTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"This break ends after the time entry\\\"],null],\\\"above\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons icon-warning\\\"],[7],[0,\\\"warning\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLocationSection\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"useLocationFullView\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"time-entry--location\\\",[25,\\\"busy-loc\\\",[\\\"Location\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-map-time-entry-locations\\\",null,[[\\\"timeEntry\\\"],[[20,[\\\"model\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-location\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No locations available\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry--location\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-map-time-entry-locations\\\",null,[[\\\"timeEntry\\\"],[[20,[\\\"model\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-location\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Locations Recorded\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaved\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"entryHistoryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEntryHistory\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/log\\\",null,[[\\\"timeEntry\\\",\\\"onClose\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEntryHistory\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-entry/view.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-off/create-time-off\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"gP3FgUhU\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"timeOffSave\\\"],null],[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-new-time-off\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"form-item \\\",[25,\\\"if\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]],\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"format\\\",\\\"unix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"hideTime\\\",\\\"utc\\\",\\\"class\\\"],[[20,[\\\"format\\\"]],[20,[\\\"dateStamp\\\"]],[20,[\\\"lockDate\\\"]],[20,[\\\"maxdate\\\"]],true,true,[25,\\\"if\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]],\\\"invalid\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active\\\"],[7],[1,[18,\\\"lockDateErrorMessage\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[[20,[\\\"typesList\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"typeTimeOffSelected\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Select\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Paid</b>\\\"],null],\\\"isPaid\\\",[20,[\\\"isPaid\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-time-picker\\\",null,[[\\\"seconds\\\"],[[20,[\\\"totalTime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"membersWithLocksBeforeStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"memberEntries\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"membersCombined\\\"]],[20,[\\\"dateStamp\\\"]],[20,[\\\"dateStamp\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-off/create-time-off.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-off/edit\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"CXWVkcIV\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"isDisabled\\\",\\\"confirmReasonText\\\",\\\"onCancel\\\",\\\"onBack\\\",\\\"onSave\\\",\\\"onDelete\\\"],[[25,\\\"busy-loc\\\",[\\\"Edit Time Off Entry\\\"],null],[25,\\\"if\\\",[[20,[\\\"isSavedDateLocked\\\"]],true,false],null],[20,[\\\"confirmReasonText\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],[25,\\\"if\\\",[[20,[\\\"hasBackButton\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelEdit\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"isSavingEnabled\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"isSavingEnabled\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"deleteAction\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-time-off-entry\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSavedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"locked-entry-error\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cannot Edit.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This time period has been locked to prevent editing.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"form-item \\\",[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"paper-datetime-picker\\\",null,[[\\\"unix\\\",\\\"format\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"hideTime\\\",\\\"class\\\"],[[20,[\\\"dateStamp\\\"]],[20,[\\\"format\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],true,true,[25,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]],\\\"invalid\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"error active\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Date must be later than the lock date\\\"],null],false],[0,\\\":\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"member\\\",\\\"memberLock\\\",\\\"effectiveDate\\\"]],[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"member\\\",\\\"memberLock\\\",\\\"effectiveDate\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"class\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"defaultLabel\\\"],[[20,[\\\"typesList\\\"]],\\\"full\\\",[25,\\\"action\\\",[[19,0,[]],\\\"typeTimeOffSelected\\\"],null],\\\"value\\\",[20,[\\\"model\\\",\\\"getType\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"<b>Paid</b>\\\"],null],\\\"isPaid\\\",[20,[\\\"isPaid\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isPaid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-time-picker\\\",null,[[\\\"seconds\\\"],[[20,[\\\"seconds\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"value\\\",\\\"placeholder\\\",\\\"maxlength\\\"],[[20,[\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"Enter notes here.\\\"],null],49999]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isSelectedDateLocked\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/signature-invalidation-warning\\\",null,[[\\\"member\\\",\\\"startTime\\\",\\\"endTime\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"dateStamp\\\"]],[20,[\\\"dateStamp\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-off/edit.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-off/view\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"AV8u4m+5\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off Details\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"model\\\",\\\"isFulfilled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry--loading-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"inline\\\",\\\"fixed\\\"],[true,true,false]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"time-entry--header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"time-entry--header--details\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[20,[\\\"model\\\",\\\"getType\\\"]],false],[0,\\\" - \\\"],[1,[20,[\\\"model\\\",\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"time-entry--header--actions\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button white\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeOffEntry\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off Details\\\"],null],\\\"time-entry--job-details\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Amount\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"paid\\\"]],[20,[\\\"model\\\",\\\"totalString\\\"]],\\\"&nbsp;-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"getType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Paid\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"paid\\\"]],\\\"Yes\\\",\\\"No\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"description\\\"]],[20,[\\\"model\\\",\\\"description\\\"]],\\\"&nbsp;-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submitted by\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"submittedBy\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submitted on\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[20,[\\\"model\\\",\\\"submittedOnString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"model\\\",\\\"content\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaved\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-off/view.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/dates-list-item\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"vMKpZV/c\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-date\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"time\\\"],[10,\\\"datetime\\\",[25,\\\"date-format\\\",[[20,[\\\"item\\\",\\\"date\\\"]]],[[\\\"format\\\"],[\\\"\\\"]]],null],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"item\\\",\\\"date\\\"]]],[[\\\"format\\\"],[\\\"MM/DD\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-day\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openDayActivity\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-sheet-day--container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"time\\\"],[10,\\\"datetime\\\",[25,\\\"date-format\\\",[[20,[\\\"item\\\",\\\"date\\\"]]],[[\\\"format\\\"],[\\\"\\\"]]],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"item\\\",\\\"date\\\"]]],[[\\\"format\\\"],[\\\"dddd\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-sheet-day--notices\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasResolvableConflicts\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"direction\\\",\\\"content\\\",\\\"onClick\\\"],[\\\"above\\\",[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openConflictResolver\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[10,\\\"title\\\",[26,[[18,\\\"totalConflicts\\\"],\\\" \\\",[25,\\\"busy-loc\\\",[\\\"conflicts\\\"],null]]]],[9,\\\"class\\\",\\\"material-icons material-icons-warning\\\"],[7],[0,\\\"warning\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showConflictResolver\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"member\\\",\\\"day\\\",\\\"banner\\\",\\\"showConflictDialog\\\",\\\"onDone\\\"],[[20,[\\\"member\\\"]],[20,[\\\"item\\\",\\\"date\\\"]],false,true,\\\"closeConflictResolver\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasOpenTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\",\\\"multiline\\\"],[[25,\\\"busy-loc\\\",[\\\"Contains open time that is not included in totals. The time entry was opened on %@ at %@\\\",[25,\\\"date-format\\\",[[20,[\\\"openEntry\\\"]]],[[\\\"format\\\"],[\\\"LL\\\"]]],[25,\\\"date-format\\\",[[20,[\\\"openEntry\\\"]]],[[\\\"format\\\"],[\\\"LTS\\\"]]]],null],\\\"above\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons material-icons-info\\\"],[7],[0,\\\"info\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isItemLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showTimeColumn\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"time\\\"],[10,\\\"datetime\\\",[26,[[20,[\\\"item\\\",\\\"seconds\\\"]],\\\"s\\\"]]],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/dates-list-item.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/dates-list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"raVQmeKp\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[6,\\\"table\\\"],[9,\\\"class\\\",\\\"time-sheet-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"thead\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"th\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"reportData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/dates-list-item\\\",null,[[\\\"conflicts\\\",\\\"item\\\",\\\"isLoading\\\",\\\"member\\\",\\\"openEntry\\\",\\\"openDayActivity\\\",\\\"reloadSync\\\"],[[20,[\\\"conflicts\\\"]],[19,1,[]],[20,[\\\"isLoading\\\"]],[20,[\\\"member\\\"]],[20,[\\\"openEntry\\\"]],[20,[\\\"openDayActivity\\\"]],[20,[\\\"reloadSync\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/dates-list.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/header\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Bds5QIqo\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,[[\\\"isResponsive\\\"],[false]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"date-controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date-controls--controls\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"highlightSlected\\\"],[\\\"select-mode\\\",[20,[\\\"modesSelectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectMode\\\"],null],\\\"value\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button-group\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button white d-button-icon pagination pagination-prev \\\",[25,\\\"unless\\\",[[20,[\\\"hasPrevBounds\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[25,\\\"unless\\\",[[20,[\\\"hasPrevBounds\\\"]],\\\"disabled\\\",null],null],null],[10,\\\"title\\\",[18,\\\"prevRangeText\\\"],null],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onPrev\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons material-icons-chevron\\\"],[7],[0,\\\"chevron_left\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"button\\\"],[10,\\\"class\\\",[26,[\\\"d-button white d-button-icon pagination pagination-next \\\",[25,\\\"unless\\\",[[20,[\\\"hasNextBounds\\\"]],\\\"disabled\\\"],null]]]],[10,\\\"disabled\\\",[25,\\\"unless\\\",[[20,[\\\"hasNextBounds\\\"]],\\\"disabled\\\",null],null],null],[10,\\\"title\\\",[18,\\\"nextRangeText\\\"],null],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"onNext\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons material-icons-chevron\\\"],[7],[0,\\\"chevron_right\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date-controls--label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"start\\\"]],[25,\\\"date-format\\\",[[20,[\\\"start\\\"]]],[[\\\"format\\\"],[\\\"MMM D\\\"]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t-\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"end\\\"]],[25,\\\"date-format\\\",[[20,[\\\"end\\\"]]],[[\\\"format\\\"],[\\\"MMM D\\\"]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[20,[\\\"isPreviousYear\\\"]],[25,\\\"date-format\\\",[[20,[\\\"end\\\"]]],[[\\\"format\\\"],[\\\"YYYY\\\"]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"action-controls\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"button\\\"],[9,\\\"class\\\",\\\"d-button text view-entries\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"View Entries\\\"],null],null],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openRangeActivity\\\",[20,[\\\"start\\\"]],[20,[\\\"end\\\"]]],null],null],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Entries\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"d-button-split\\\",null,[[\\\"classModifiers\\\",\\\"primaryAction\\\",\\\"selectOptions\\\",\\\"selectAction\\\"],[\\\"blue\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openDialog\\\",\\\"NewTimeEntryDialog\\\"],null],[19,0,[\\\"actionsSelectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add Entry\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/header.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"TIhMNT/C\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"isRenderable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/time-sheet/header\\\",null,[[\\\"end\\\",\\\"isLoading\\\",\\\"member\\\",\\\"mode\\\",\\\"payPeriods\\\",\\\"start\\\",\\\"openDialog\\\",\\\"openRangeActivity\\\",\\\"setDateBounds\\\",\\\"setMode\\\"],[[19,0,[\\\"end\\\"]],[19,0,[\\\"isLoading\\\"]],[19,0,[\\\"member\\\"]],[19,0,[\\\"mode\\\"]],[19,0,[\\\"payPeriods\\\"]],[19,0,[\\\"start\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openRangeActivity\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"setDateBounds\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"setMode\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[19,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/signature-notification\\\",null,[[\\\"member\\\",\\\"currentPayPeriod\\\",\\\"visiblePayPeriod\\\",\\\"dirtyFlag\\\"],[[19,0,[\\\"member\\\"]],[19,0,[\\\"livePayPeriod\\\"]],[19,0,[\\\"currentPayPeriod\\\"]],[19,0,[\\\"dirtyFlag\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-sheet-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/dates-list\\\",null,[[\\\"conflicts\\\",\\\"end\\\",\\\"isLoading\\\",\\\"member\\\",\\\"memberDaySeconds\\\",\\\"timeOffAggregates\\\",\\\"openEntry\\\",\\\"start\\\",\\\"openDayActivity\\\",\\\"reloadSync\\\"],[[19,0,[\\\"conflicts\\\"]],[19,0,[\\\"end\\\"]],[19,0,[\\\"isLoading\\\"]],[19,0,[\\\"member\\\"]],[19,0,[\\\"memberDaySeconds\\\"]],[19,0,[\\\"timeOffAggregates\\\"]],[19,0,[\\\"openEntry\\\"]],[19,0,[\\\"start\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openDayActivity\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/summary\\\",null,[[\\\"isLoading\\\",\\\"member\\\",\\\"memberDaySeconds\\\",\\\"memberDayCost\\\"],[[19,0,[\\\"isLoading\\\"]],[19,0,[\\\"member\\\"]],[19,0,[\\\"memberDaySeconds\\\"]],[19,0,[\\\"memberDayCost\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"isModePayPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/signature-status\\\",null,[[\\\"currentPayPeriod\\\",\\\"end\\\",\\\"member\\\",\\\"start\\\"],[[19,0,[\\\"currentPayPeriod\\\"]],[19,0,[\\\"end\\\"]],[19,0,[\\\"member\\\"]],[19,0,[\\\"start\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[19,0,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"memberId\\\",\\\"syncing\\\",\\\"onSync\\\"],[[19,0,[\\\"member\\\",\\\"id\\\"]],[19,0,[\\\"dirtyFlag\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"NewTimeEntryDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\"],[[19,0,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"NewTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"NewTimeOffDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\"],[[19,0,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"NewTimeOffDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,0,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"refreshTimestamp\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"banner\\\",\\\"member\\\",\\\"startTime\\\",\\\"endTime\\\",\\\"onDone\\\"],[true,[19,0,[\\\"member\\\"]],[19,0,[\\\"entryConflictCutoff\\\"]],[19,0,[\\\"refreshTimestamp\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"reloadModel\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showSummaryDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/summary-report\\\",null,[[\\\"createTimeEntryConfig\\\",\\\"currentOption\\\",\\\"currentTab\\\",\\\"includeUnpaidTimeoff\\\",\\\"includeZeroTimeEntries\\\",\\\"end\\\",\\\"model\\\",\\\"settings\\\",\\\"start\\\",\\\"type\\\",\\\"onClose\\\"],[[19,0,[\\\"createTimeEntryConfig\\\"]],\\\"day\\\",\\\"details\\\",true,true,[19,0,[\\\"activityReportEnd\\\"]],[19,0,[\\\"activityReportModel\\\"]],[19,0,[\\\"activityReportSettings\\\"]],[19,0,[\\\"activityReportStart\\\"]],\\\"member\\\",[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"SummaryDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/index.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/signature-notification\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"NKehon0Z\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showNotification\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"notification-bar\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openFullReport\\\"],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Click here\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\" to review and sign the time card for the previous pay period\\\"],null],false],[0,\\\".\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/signature-notification.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/signature-status\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LdkorsW+\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showSignatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoadingSelfSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-loading-indicator\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasSelfSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"selfSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-status\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openFullReport\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Review and Sign\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee Signature\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"isTimecardSupervisorSigningEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-box\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoadingAuthoritativeSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-loading-indicator\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"hasAuthoritativeSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"authoritativeSignature\\\",\\\"signatureUrl\\\"]]]]],[7],[8],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"requestSupervisorSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-status\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openFullReport\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Review and Sign\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"signature-footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Supervisor Signature\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/signature-status.hbs\" } });\n});","define(\"busy-app/templates/components/time/time-sheet/summary\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6N7mZp3T\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"table\\\"],[9,\\\"class\\\",\\\"time-sheet-totals\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-row\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Regular Hours\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"reportTotals\\\",\\\"regular\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-row\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Overtime Hours\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"reportTotals\\\",\\\"overtime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"reportTotals\\\",\\\"doubletime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-row\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Double Time Hours\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"DT Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"reportTotals\\\",\\\"doubletime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-row\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"reportTotals\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageEmployees\\\",[19,0,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"table\\\"],[9,\\\"class\\\",\\\"time-sheet-totals\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-row\\\"],[10,\\\"title\\\",[25,\\\"busy-loc\\\",[\\\"Pay\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"time-sheet-totals-hours\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons loading-indicator\\\"],[7],[0,\\\"autorenew\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"reportTotals\\\",\\\"totalCost\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/time/time-sheet/summary.hbs\" } });\n});","define(\"busy-app/templates/components/version-refresher\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"f1vCP233\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"version\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"A new version is available. Refresh your browser to take advantage of new updates.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"buttons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"refresh\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Refresh Now\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancel\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"No I'll do it later\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/version-refresher.hbs\" } });\n});","define(\"busy-app/templates/components/window-resize\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6JPDyTbN\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/components/window-resize.hbs\" } });\n});","define(\"busy-app/templates/cost-code\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"wIVtjjwG\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/cost-code.hbs\" } });\n});","define(\"busy-app/templates/cost-code/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"vWnKgczN\", \"block\": \"{\\\"symbols\\\":[\\\"group\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-cost-code-index\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],true,true]],{\\\"statements\\\":[[4,\\\"busy-action-bar\\\",null,[[\\\"defaultTitle\\\",\\\"search\\\",\\\"isFlipped\\\",\\\"groupMenu\\\",\\\"selectedGroup\\\",\\\"groupEditPermission\\\",\\\"selectMenu\\\",\\\"onAdd\\\",\\\"onSelect\\\",\\\"onCancel\\\",\\\"onSubmit\\\",\\\"onSearch\\\",\\\"onSelectGroup\\\",\\\"addGroup\\\",\\\"onDeleteGroup\\\",\\\"interopTarget\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],[20,[\\\"search\\\"]],[20,[\\\"edit\\\"]],[20,[\\\"groups\\\"]],[20,[\\\"group\\\"]],[20,[\\\"canManageCostCodeGroups\\\"]],[25,\\\"if\\\",[[20,[\\\"canManageCostCodes\\\"]],[20,[\\\"selectMenu\\\"]]],null],[25,\\\"if\\\",[[20,[\\\"canAddCostCodes\\\"]],\\\"openNewCostCodeDialog\\\"],null],[25,\\\"if\\\",[[20,[\\\"canManageCostCodes\\\"]],\\\"editListAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"submitEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"filterGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDeleteGroup\\\"],null],[25,\\\"if\\\",[[19,0,[\\\"canViewManagementTools\\\"]],\\\"/manage/cost-codes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"large\\\",\\\"selector\\\",\\\"isLoading\\\",\\\"minimal\\\",\\\"edit\\\",\\\"onClick\\\",\\\"selectAll\\\",\\\"onSelect\\\",\\\"model\\\"],[true,true,[20,[\\\"isLoading\\\"]],true,[20,[\\\"edit\\\"]],[25,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"group\\\"]],\\\"archived\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openEditCostCodeDialog\\\"],null],\\\"\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectAll\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"costCodeSelected\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null]]]],[7],[1,[19,3,[\\\"costCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Description\\\"],null]]]],[7],[1,[19,3,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"group\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Group\\\"],null]]]],[7],[1,[19,3,[\\\"costCodeGroup\\\",\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"options\\\"],[9,\\\"title\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasRowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"selectors/list-select\\\",null,[[\\\"small\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"forMember\\\",\\\"filterItem\\\"],[true,[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"rowItemSelectAction\\\"],null],\\\"value\\\",[20,[\\\"auth\\\",\\\"member\\\"]],[19,3,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\"],[[20,[\\\"page\\\"]],[20,[\\\"page_size\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewCostCodeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewCostCodeDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewCostCode\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Cost Code\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openImportAction\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Import Cost Codes\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Information\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],true,[20,[\\\"newCostCode\\\",\\\"costCode\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],[20,[\\\"newCostCode\\\",\\\"title\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Units of Measure\\\"],null],[20,[\\\"newCostCode\\\",\\\"unitTitle\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"insuranceClasses\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Insurance Classes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Workers' Compensation\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[20,[\\\"workersCompList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectWorkersComp\\\"],null],\\\"title\\\",\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"General Liability\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[20,[\\\"generalLiabilityList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectGeneralLiability\\\"],null],\\\"title\\\",\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"text-link\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openInsuranceClassDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Insurance Classes\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditCostCodeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"disablePadding\\\",\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[true,[25,\\\"action\\\",[[19,0,[]],\\\"closeEditCostCodeDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveCostCode\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Cost Code\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isProcoreIntegrationEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-notification-bar\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"text\\\",\\\"isDismissable\\\",\\\"clickText\\\",\\\"onClick\\\"],[\\\"error\\\",\\\"procoreCostCodesWarning\\\",[20,[\\\"procoreCostCodesWarningText\\\"]],false,[20,[\\\"_clickText\\\"]],[20,[\\\"_onClick\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-cost-code-edit-dialog\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code Information\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],true,[20,[\\\"costCode\\\",\\\"costCode\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],[20,[\\\"costCode\\\",\\\"title\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Units of Measure\\\"],null],[20,[\\\"costCode\\\",\\\"unitTitle\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"insuranceClasses\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Insurance Classes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Workers' Compensation\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[20,[\\\"workersCompList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectWorkersComp\\\"],null],\\\"title\\\",\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"General Liability\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[20,[\\\"generalLiabilityList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectGeneralLiability\\\"],null],\\\"title\\\",\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"text-link\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openInsuranceClassDialog\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Manage Insurance Classes\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showInsuranceClassDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeInsuranceClassDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeInsuranceClassDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openAddInsuranceClassDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Insurance Classes\\\"],null]]],{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"onClick\\\",\\\"model\\\"],[\\\"openEditInsuranceClassDialog\\\",[20,[\\\"mergedClassList\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"insurance-class\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Insurance Class\\\"],null]]]],[7],[1,[19,2,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"insurance-type\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Type\\\"],null]]]],[7],[1,[19,2,[\\\"type\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAddInsuranceClassDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAddInsuranceClassDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"saveText\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAddInsuranceClassDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewClass\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Insurance Class\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type*\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"class\\\"],[[20,[\\\"insuranceClassMenu\\\"]],\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectNewClass\\\"],null],\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"required\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Title\\\"],null],[20,[\\\"classTitle\\\"]],true,\\\"100\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditInsuranceClassDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditInsuranceClassDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"saveText\\\",\\\"onDelete\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditInsuranceClassDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deleteInsuranceClass\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveInsuranceClass\\\"],null],[25,\\\"busy-loc\\\",[\\\"Edit Insurance Class\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"required\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Title\\\"],null],[20,[\\\"insuranceClassItem\\\",\\\"title\\\"]],true,\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"defaultLabel\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"class\\\"],[[20,[\\\"insuranceClassMenu\\\"]],[20,[\\\"insuranceClassItem\\\",\\\"type\\\"]],\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectNewClass\\\"],null],\\\"left full\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showArchiveDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"archiveCostCode\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeArchiveDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Confirm Archive\\\"],null],[20,[\\\"archiveDialogMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Archive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMoveGroupDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Move to Group\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-cost-code-index-group-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select a group\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showAddGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],[25,\\\"busy-loc\\\",[\\\"Close add group\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add new group\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"add-new-group \\\",[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Group Name\\\"],null],false,[20,[\\\"newGroupName\\\"]],\\\"100\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"createGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"groups\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addCostCodeToGroupAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addCostCodeToGroupAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Ungroup\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"cost-codes/import-cost-codes\\\",null,[[\\\"onComplete\\\",\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"importCompleteAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelImportAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/cost-code/index.hbs\" } });\n});","define(\"busy-app/templates/employees\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"mLlbwdrW\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees.hbs\" } });\n});","define(\"busy-app/templates/employees/employee-locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"umwFQjME\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-employee-location\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\",\\\"onSelect\\\",\\\"showGroups\\\",\\\"selectMenu\\\",\\\"selectMenuLabel\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Locations\\\"],null],true,\\\"filterGroup\\\",true,[20,[\\\"groups\\\"]],\\\"value\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"noLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-locations\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map-leaflet-time-entry-locations\\\",null,[[\\\"timeEntry\\\",\\\"filter\\\"],[[20,[\\\"model\\\"]],[20,[\\\"locationFilter\\\"]]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-locations\\\"],[7],[0,\\\"No locations available\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees/employee-locations.hbs\" } });\n});","define(\"busy-app/templates/employees/employee\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eDAbXP5X\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-employee\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],true,\\\"index-scrolling-list\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"employees-employee-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"model\\\",\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"positionName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-tabs\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\",\\\"isViewable\\\"],[[25,\\\"busy-loc\\\",[\\\"Status\\\"],null],1,[25,\\\"if\\\",[[20,[\\\"canShowStatus\\\"]],[25,\\\"unless\\\",[[20,[\\\"isArchived\\\"]],true,false],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/status\\\",null,[[\\\"member\\\",\\\"openLoacation\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],\\\"openLoacationAction\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\",\\\"showBadge\\\",\\\"badgeContent\\\",\\\"badgeColor\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Cards\\\"],null],[20,[\\\"canShowEntries\\\"]],2,[20,[\\\"model\\\",\\\"showTimecardBadge\\\"]],[20,[\\\"timecardBadgeContent\\\"]],[20,[\\\"timecardBadgeColor\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"simpleTimecard\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/index\\\",null,[[\\\"member\\\",\\\"start\\\",\\\"end\\\",\\\"mode\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"timesheet_start\\\"]],[20,[\\\"timesheet_end\\\"]],[20,[\\\"timesheet_mode\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/pay-period/list\\\",null,[[\\\"member\\\",\\\"isArchived\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"isArchived\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null],[20,[\\\"canShowEntries\\\"]],3]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/pay-period/time-off-list\\\",null,[[\\\"member\\\",\\\"isArchived\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"isArchived\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Details\\\"],null],[20,[\\\"canShowDetails\\\"]],4]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employees/employee-info\\\",null,[[\\\"member\\\",\\\"isArchived\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"isArchived\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage\\\"],null],[20,[\\\"canShowWages\\\"]],5]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employees/wage-info\\\",null,[[\\\"member\\\",\\\"isArchived\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"isArchived\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees/employee.hbs\" } });\n});","define(\"busy-app/templates/employees/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ti2QNP2n\", \"block\": \"{\\\"symbols\\\":[\\\"group\\\",\\\"item\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"v-employees-index\\\",[25,\\\"if\\\",[[20,[\\\"edit\\\"]],\\\" edit-mode\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"editAction\\\"]],[20,[\\\"editAction\\\"]]],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-action-bar\\\",null,[[\\\"placeholder\\\",\\\"defaultTitle\\\",\\\"selectMenu\\\",\\\"search\\\",\\\"isFlipped\\\",\\\"selectedGroup\\\",\\\"groupMenu\\\",\\\"groupEditPermission\\\",\\\"onSubmit\\\",\\\"onCancel\\\",\\\"onSearch\\\",\\\"onSelectGroup\\\",\\\"addGroup\\\",\\\"onAdd\\\",\\\"onSelect\\\",\\\"onDeleteGroup\\\",\\\"interopTarget\\\"],[[25,\\\"busy-loc\\\",[\\\"Search\\\"],null],[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],[25,\\\"if\\\",[[20,[\\\"canManageEmployees\\\"]],[20,[\\\"allowedSelectMenu\\\"]]],null],[20,[\\\"search\\\"]],[20,[\\\"edit\\\"]],[20,[\\\"group\\\"]],[25,\\\"if\\\",[[20,[\\\"canManageEmployeeGroups\\\"]],[20,[\\\"groups\\\"]]],null],[20,[\\\"canManageEmployeeGroups\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"submitEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"filterGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewGroup\\\"],null],[25,\\\"if\\\",[[20,[\\\"canAddEmployees\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openMemberDialog\\\"],null],\\\"\\\"],null],[25,\\\"if\\\",[[20,[\\\"canManageEmployees\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"editListAction\\\"],null],\\\"\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDeleteGroup\\\"],null],[25,\\\"if\\\",[[19,0,[\\\"canViewManagementTools\\\"]],\\\"/manage/employees\\\"],null]]],{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"time/time-conflict/conflict-list\\\",null,[[\\\"start\\\",\\\"groupId\\\"],[[19,0,[\\\"entryConflictCutoff\\\"]],[19,0,[\\\"group\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"large\\\",\\\"selector\\\",\\\"isLoading\\\",\\\"minimal\\\",\\\"hasImage\\\",\\\"edit\\\",\\\"onClick\\\",\\\"selectAll\\\",\\\"onSelect\\\",\\\"model\\\"],[true,true,[20,[\\\"isLoading\\\"]],true,true,[20,[\\\"edit\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"teamMemberClicked\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"selectAll\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"teamMemberSelected\\\"],null],[20,[\\\"modelFilteredByPermission\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"employee-details \\\",[25,\\\"if\\\",[[19,2,[\\\"clockedIn\\\"]],[25,\\\"busy-loc\\\",[\\\"clocked-in\\\"],null]],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null]]]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[1,[19,2,[\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[19,2,[\\\"usernameUnique\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"offset\\\",\\\"multiline\\\",\\\"active\\\",\\\"direction\\\",\\\"onClick\\\"],[[25,\\\"concat\\\",[[25,\\\"busy-loc\\\",[\\\"The username for this employee is not unique, which will prevent the employee from being able to log in.\\\"],null],\\\" \\\",[25,\\\"busy-loc\\\",[\\\"The username can be updated in the details tab of the employee’s profile.\\\"],null]],null],true,true,[19,2,[\\\"showUsernameConflictTooltip\\\"]],[25,\\\"if\\\",[[19,2,[\\\"index\\\"]],\\\"above\\\",\\\"below\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"toggleUsernameConflictTooltip\\\",[19,2,[]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[6,\\\"ul\\\"],[10,\\\"class\\\",[26,[\\\"status-details \\\",[25,\\\"unless\\\",[[19,2,[\\\"clockedIn\\\"]],\\\"historical\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"timeEvents\\\",[19,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"project-item latest-entry\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"latestTimeEntry\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canViewCostCodes\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"costcode-item latest-entry\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"latestTimeEntry\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"canViewEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"equipment-item latest-entry\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item \\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"latestTimeEntry\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"description-item latest-entry\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"latestTimeEntry\\\",\\\"description\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"description\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n      \\\"]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locks\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"memberLock\\\",[19,2,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"editAction\\\"]],\\\"edit-lock-date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"lockdate-item\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lock-date-icon c-icon scale-10px lock-icon\\\"],[7],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"lockdate-date\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"memberLock\\\",\\\"effectiveDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"date-format\\\",[[19,2,[\\\"memberLock\\\",\\\"effectiveDate\\\"]]],[[\\\"format\\\"],[\\\"MM/DD/YYYY\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Not Locked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"status-current\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Latest Activity\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"timeEvents\\\",[19,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"status-indicator \\\",[25,\\\"if\\\",[[19,2,[\\\"clockedIn\\\"]],[25,\\\"if\\\",[[19,2,[\\\"onBreak\\\"]],\\\"break\\\",\\\"clocked-in\\\"],null]],null]]]],[7],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"openEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"openEntry\\\",\\\"elapsedTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"latestTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[19,2,[\\\"latestTimeEntry\\\",\\\"totalTimeString\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      00:00\\\\n      \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"status-today\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Today\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"timeEvents\\\",[19,2,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"combinedRegularTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"combinedRegularTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    00:00\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"timeOffEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[10,\\\"title\\\",[26,[[19,2,[\\\"timeOffEntriesTypesFull\\\"]]]]],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"paidTimeOffEntriesTotalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\" \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"muted\\\"],[7],[0,\\\"(\\\"],[1,[19,2,[\\\"timeOffEntriesTypesCollapsed\\\"]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[9,\\\"title\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasRowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[25,\\\"selectors/list-select\\\",null,[[\\\"small\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"forMember\\\",\\\"filterItem\\\"],[true,[20,[\\\"selectMenu\\\"]],\\\"rowItemSelectAction\\\",\\\"value\\\",[19,2,[]],[19,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n  \\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\"],[[20,[\\\"page\\\"]],[20,[\\\"page_size\\\"]],[20,[\\\"totalRows\\\"]],\\\"changePage\\\",\\\"changeSize\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\",\\\"class\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewMember\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add Employee\\\"],null],\\\"v-employees-index-add-member-dialog\\\"]],{\\\"statements\\\":[[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openImportAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Import Employees\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee Information\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"maxlength\\\",\\\"required\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],\\\"64\\\",true,[20,[\\\"newMember\\\",\\\"firstName\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],true,[20,[\\\"newMember\\\",\\\"lastName\\\"]],\\\"64\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],true,[20,[\\\"newMember\\\",\\\"username\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"type\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],\\\"email\\\",[20,[\\\"newMember\\\",\\\"pendingEmail\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"type\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Phone Number\\\"],null],\\\"tel\\\",[20,[\\\"newMember\\\",\\\"phone\\\"]],\\\"20\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"placeholder\\\",\\\"type\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Hourly Wage\\\"],null],[25,\\\"busy-loc\\\",[\\\"0.00\\\"],null],\\\"number\\\",[20,[\\\"newMemberWage\\\",\\\"wage\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bc-validate select-menu-container\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Position\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"class\\\"],[[20,[\\\"positionsMenu\\\"]],\\\"selectNewMemberPosition\\\",\\\"title\\\",[20,[\\\"newMember\\\",\\\"position\\\",\\\"title\\\"]],\\\"full drop-down\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"memberGpsSettingDevelopment\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bc-validate select-menu-container\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"GPS Location\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"memberGpsSetting\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"PRO\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"onSelect\\\",\\\"class\\\"],[[20,[\\\"gpsLocationMenu\\\"]],\\\"title\\\",[25,\\\"action\\\",[[19,0,[]],\\\"selectGpsLocation\\\"],null],\\\"full drop-down\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee ID\\\"],null],[20,[\\\"newMember\\\",\\\"memberNumber\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\",\\\"type\\\",\\\"autocomplete\\\"],[[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],true,[20,[\\\"newMember\\\",\\\"password\\\"]],\\\"256\\\",\\\"password\\\",\\\"new-password\\\"]]],false],[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"required-text\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[18,\\\"passwordRequirement\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"placeholder\\\",\\\"type\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\",\\\"autocomplete\\\"],[[25,\\\"busy-loc\\\",[\\\"Confirm Password\\\"],null],[25,\\\"busy-loc\\\",[\\\"Confirm Password\\\"],null],\\\"password\\\",true,[20,[\\\"newMember\\\",\\\"passwordConfirm\\\"]],\\\"256\\\",\\\"new-password\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"Subscription\\\",\\\"isProAccount\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"type\\\",\\\"autocomplete\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"PIN Code\\\"],null],\\\"password\\\",\\\"new-password\\\",[20,[\\\"newMember\\\",\\\"pinCode\\\"]],\\\"4\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUpgradeDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openHelpDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Contact Us\\\"],null]]],{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"limit-reached\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Limit Reached\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Your current plan has reached its user limit. Contact us today to upgrade and add more.\\\"],null],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSubscriptionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\",\\\"basic\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSubscriptionDialog\\\"],null],true]],{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subscription-required\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subscription Required\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Sorry, this is a premium feature. If you would like to add additional employees, please go to your\\\"],null],false],[0,\\\" \\\\n  \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"goToCompanySettings\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Settings\\\"],null],false],[8],[0,\\\" \\\\n  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"to upgrade your account. If you have any questions, please feel free to contact our customer service at 855-287-9287.\\\"],null],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClockInDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"time/time-entry/clock-in\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockIn\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntry\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],\\\"closeNewTimeEntry\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeOff\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeOff\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSwitchDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSwitchProject\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/switch\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSwitchProject\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClockInAtDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeClockInAt\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/clock-in-at\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockInAt\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showClockOutAtDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeClockOutAt\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/clock-out-at\\\",null,[[\\\"memberEntries\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeClockOutAt\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMoveGroupDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Move to Group\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-index-group-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select a group\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showAddGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],[25,\\\"busy-loc\\\",[\\\"Close add group\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add new group\\\"],null]],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"add-new-group \\\",[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"value\\\",\\\"maxlength\\\",\\\"onSubmit\\\"],[[25,\\\"busy-loc\\\",[\\\"Group Name\\\"],null],false,[20,[\\\"newGroupName\\\"]],\\\"256\\\",[25,\\\"action\\\",[[19,0,[]],\\\"createGroup\\\"],[[\\\"bubbles\\\"],[false]]]]]],false],[0,\\\"\\\\n      \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"createGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"groups\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addMemberToGroupAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addMemberToGroupAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Ungroup\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"savingMessageText\\\",\\\"targetParent\\\"],[[20,[\\\"savingMessage\\\"]],[19,0,[]]]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showArchiveDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"archiveMember\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeArchiveDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Confirm Archive\\\"],null],[20,[\\\"archiveDialogMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Archive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/import-employees\\\",null,[[\\\"onComplete\\\",\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"importCompleteAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelImportAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locks\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showLockDateDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeLockDateDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"employees/edit-lock-date\\\",null,[[\\\"memberEntries\\\",\\\"totalRows\\\",\\\"onClose\\\"],[[20,[\\\"openTaskItems\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeLockDateDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showHelpDialog\\\"]]],null,{\\\"statements\\\":[[12,\\\"partials/help-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSignOffRequiredDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/safety-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSafetySignOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/safety\\\",null,[[\\\"member\\\",\\\"timeEntry\\\",\\\"afterSave\\\",\\\"onClose\\\"],[[20,[\\\"auth\\\",\\\"member\\\"]],[20,[\\\"openEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialogAndClockOut\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showGpsLocationRequiredDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"dialogs/error/gps-location-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\",\\\"GpsLocationRequiredDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees/index.hbs\" } });\n});","define(\"busy-app/templates/employees/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QGjlG83o\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-index\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],true]],{\\\"statements\\\":[[4,\\\"busy-action-bar\\\",null,[[\\\"defaultTitle\\\",\\\"hideSearch\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[true,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees/loading.hbs\" } });\n});","define(\"busy-app/templates/employees/locations\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"p+7Qnvvu\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-employees-locations\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\",\\\"hasBackButton\\\",\\\"onBack\\\"],[[25,\\\"busy-loc\\\",[\\\"Locations\\\"],null],true,true,\\\"backAction\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"locations\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map-locations\\\",null,[[\\\"model\\\",\\\"locationPath\\\"],[[20,[\\\"model\\\"]],\\\"timeEntry.timeEntryLocations\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/employees/locations.hbs\" } });\n});","define(\"busy-app/templates/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"tILKETX6\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-index\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"class\\\"],[\\\"index-scrolling-list\\\"]],{\\\"statements\\\":[[4,\\\"bc-tabs\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Status\\\"],null],1]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/status\\\",null,[[\\\"hasHeader\\\",\\\"member\\\",\\\"openLoacation\\\",\\\"organization\\\"],[true,[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openLoacationAction\\\"],null],[20,[\\\"organization\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\",\\\"showBadge\\\",\\\"badgeContent\\\",\\\"badgeColor\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Cards\\\"],null],2,[20,[\\\"model\\\",\\\"showTimecardBadge\\\"]],[20,[\\\"timecardBadgeContent\\\"]],[20,[\\\"timecardBadgeColor\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"simpleTimecard\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-sheet/index\\\",null,[[\\\"member\\\",\\\"start\\\",\\\"end\\\",\\\"mode\\\"],[[20,[\\\"member\\\"]],[20,[\\\"timesheet_start\\\"]],[20,[\\\"timesheet_end\\\"]],[20,[\\\"timesheet_mode\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/pay-period/list\\\",null,[[\\\"member\\\"],[[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null],3]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/pay-period/time-off-list\\\",null,[[\\\"member\\\"],[[20,[\\\"member\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showCallToActionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"basic\\\",\\\"onClose\\\"],[true,[25,\\\"action\\\",[[19,0,[]],\\\"closeCallToActionDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"marketing/login-upgrade-overlay\\\",null,[[\\\"onClose\\\",\\\"onCallToAction\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeCallToActionDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"performCallToAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/index.hbs\" } });\n});","define(\"busy-app/templates/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bbj3kyW3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-index\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/loading.hbs\" } });\n});","define(\"busy-app/templates/login\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"J2ZkjAxV\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-login\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"busybusylogo\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sign in\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"cancelKey\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"add-account\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Sign in to another account or \\\"],null],false],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"cancelAdvancedSignin\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"go back\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"errorbanner\\\",[25,\\\"if\\\",[[20,[\\\"isLoginError\\\"]],\\\" active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"loginErrorMessage\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"value\\\",\\\"autofocus\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],false,1,\\\"submitAction\\\",[20,[\\\"loginEmail\\\"]],true,\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"type\\\",\\\"onSubmit\\\",\\\"showLabel\\\",\\\"tabindex\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],\\\"password\\\",\\\"submitAction\\\",false,2,[20,[\\\"loginPass\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"class\\\",\\\"onSubmit\\\",\\\"tabindex\\\"],[\\\"blue\\\",\\\"submitAction\\\",3]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Sign In\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Forgot your username or password? \\\"],null],false],[4,\\\"link-to\\\",[\\\"reset\\\"],null,{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Click here\\\"],null],false]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"aside\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Getting Started\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"new-business\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Are you a business looking to get started with busybusy?\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"link-to\\\",[\\\"signup\\\"],null,{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Click here to set up your company.\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"new-employee\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Are you an employee needing to sign in? All you need is your username and password from your employer and you are ready to go.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"need-help\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Still need help? A busybusy customer support agent can assist you every step of the way. Just give us a call at 1-855-287-9287\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/login.hbs\" } });\n});","define(\"busy-app/templates/logout\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"j9rfxfwm\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[18,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/logout.hbs\" } });\n});","define(\"busy-app/templates/map\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"xF3yU8JA\", \"block\": \"{\\\"symbols\\\":[\\\"member\\\",\\\"map\\\",\\\"item\\\",\\\"marker\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busy-map-report\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Map\\\"],null],true,true]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null],\\\"members\\\",[20,[\\\"showMembers\\\"]],\\\"employee\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null],\\\"projects\\\",[20,[\\\"showProjects\\\"]],\\\"projects\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],\\\"equipment\\\",[20,[\\\"showEquipment\\\"]],\\\"equipment\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"location-type-select\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"right\\\",\\\"large\\\",\\\"model\\\",\\\"menuTitle\\\",\\\"highlightSlected\\\",\\\"itemLabel\\\",\\\"onSelect\\\"],[true,true,[20,[\\\"mapViewOptions\\\"]],[20,[\\\"selectedViewTitle\\\"]],false,\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"mapViewAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[4,\\\"g-map\\\",null,[[\\\"lat\\\",\\\"lng\\\",\\\"zoom\\\",\\\"onLoad\\\",\\\"onClick\\\",\\\"onBoundChanged\\\"],[[20,[\\\"lat\\\"]],[20,[\\\"lng\\\"]],[20,[\\\"zoom\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"loadMap\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeInfoWindows\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"loadMap\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"markers\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"component\\\",[[19,2,[\\\"circle\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"radius\\\",\\\"onClick\\\",\\\"fillColor\\\",\\\"fillOpacity\\\",\\\"strokeColor\\\",\\\"strokeOpacity\\\",\\\"strokeWeight\\\"],[[19,3,[\\\"lat\\\"]],[19,3,[\\\"lng\\\"]],[19,3,[\\\"locationRadius\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeInfoWindows\\\"],null],\\\"#30aeef\\\",0,\\\"#30aeef\\\",1,1]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[19,2,[\\\"marker\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"label\\\",\\\"onClick\\\",\\\"icon\\\"],[[19,3,[\\\"lat\\\"]],[19,3,[\\\"lng\\\"]],[19,3,[\\\"markerLabel\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openInfoWindow\\\",[19,3,[]]],null],[19,3,[\\\"markerImage\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[19,4,[\\\"infoWindow\\\"]]],[[\\\"lat\\\",\\\"lng\\\",\\\"isOpen\\\"],[[19,3,[\\\"lat\\\"]],[19,3,[\\\"lng\\\"]],[19,3,[\\\"showInfoWindow\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map-marker-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"marker-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"project\\\",\\\"imageThumbUrl\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[19,3,[\\\"project\\\",\\\"imageThumbUrl\\\"]],null],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/sprite-80-old.png\\\"],[9,\\\"class\\\",\\\"folder\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"isMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\",\\\"isSixtyFour\\\"],[[19,3,[\\\"member\\\",\\\"imageThumbUrl\\\"]],[19,3,[\\\"member\\\",\\\"fullName\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[19,3,[\\\"isEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[19,3,[\\\"imageThumbUrl\\\"]],null],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"start-time\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"locationType\\\"]],false],[0,\\\" \\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"startTime\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"isMember\\\"]],[19,3,[\\\"memberName\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"isEquipment\\\"]],[19,3,[\\\"equipmentName\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"isProject\\\"]],[19,3,[\\\"projectTitle\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subhead\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\tID: \\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"member\\\",\\\"memberNumber\\\"]],[19,3,[\\\"member\\\",\\\"memberNumber\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"isEquipment\\\"]],[19,3,[\\\"equipment\\\",\\\"makeModel\\\"]]],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"number\\\"]],[19,3,[\\\"number\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,3,[\\\"project\\\",\\\"projectInfo\\\"]],[19,3,[\\\"project\\\",\\\"projectInfo\\\",\\\"number\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"marker-content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,3,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"loadEmployee\\\",[19,3,[\\\"member\\\"]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"arrow-box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"arrow\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clock\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"images/icons/clock.png\\\"],[7],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"totalTime\\\"]]],[[\\\"padHours\\\",\\\"showSeconds\\\",\\\"format\\\"],[true,false,10]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,3,[\\\"memberName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[19,3,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,3,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Project\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[19,3,[\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,3,[\\\"costCode\\\",\\\"costCode\\\"]],false],[0,\\\" \\\"],[6,\\\"em\\\"],[7],[1,[19,3,[\\\"costCode\\\",\\\"title\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isMember\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,3,[\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\" \\\"],[1,[19,3,[\\\"equipment\\\",\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employees-select-box\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showProjectDialog\\\",[19,3,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"selected-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"max-images-box\\\",null,[[\\\"model\\\",\\\"imagePath\\\",\\\"altTextPath\\\"],[[19,3,[\\\"members\\\"]],\\\"imageThumbUrl\\\",\\\"fullName\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"arrow-box project\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showDialog\\\",[19,3,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"arrow\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"g-map\\\",null,[[\\\"options\\\",\\\"lat\\\",\\\"lng\\\",\\\"zoom\\\"],[[20,[\\\"options\\\"]],[20,[\\\"lat\\\"]],[20,[\\\"lng\\\"]],[20,[\\\"zoom\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[20,[\\\"currentProject\\\",\\\"projectTitle\\\"]]]],{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"currentProject\\\",\\\"members\\\"]]],null,{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member-card\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"loadEmployee\\\",[19,1,[\\\"member\\\"]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"start-time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"startTime\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"img-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\",\\\"isSixtyFour\\\"],[[19,1,[\\\"member\\\",\\\"imageThumbUrl\\\"]],[19,1,[\\\"member\\\",\\\"fullName\\\"]],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"subhead\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\tID: \\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"member\\\",\\\"memberNumber\\\"]],[19,1,[\\\"member\\\",\\\"memberNumber\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clock\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/icons/clock.png\\\"],[7],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTime\\\"]]],[[\\\"padHours\\\",\\\"showSeconds\\\",\\\"format\\\"],[true,false,10]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"costCode\\\",\\\"costCode\\\"]],false],[0,\\\" \\\"],[6,\\\"em\\\"],[7],[1,[19,1,[\\\"costCode\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No Cost Code\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\" \\\"],[1,[19,1,[\\\"equipment\\\",\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showMemberDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/tab-header-dialog\\\",null,[[\\\"title\\\",\\\"noDate\\\",\\\"onClose\\\"],[[20,[\\\"currentMember\\\",\\\"fullName\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"status-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"time/time-entry/status\\\",null,[[\\\"member\\\"],[[20,[\\\"currentMember\\\"]]]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/map.hbs\" } });\n});","define(\"busy-app/templates/not-found\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eXw2AneP\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-not-found\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"link-to\\\",[\\\"index\\\"],null,{\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"busybusylogo\\\"],[7],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"This page does not exist\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/not-found.hbs\" } });\n});","define(\"busy-app/templates/note/detail\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"mA4xGNG6\", \"block\": \"{\\\"symbols\\\":[\\\"entry\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-note-detail\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Notecard\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"note-detail-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"title\\\"]],true],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageMediaCollection\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editNoteCard\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"note-card\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Note\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"description\\\"]],[20,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"project\\\"]],[20,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Created By\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"note-card\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Photos\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"mediaEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"fileThumbUrl\\\"]],[19,2,[\\\"fileThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"viewImage\\\",[19,2,[]]],[[\\\"bubbles\\\"],[false]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"no-photos\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No photos have been added yet.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[2,\\\"\\\\t<section>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t<header>Documents</header>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t<div></div>\\\\n\\\\t\\\\t\\\\t\\\\t</section>\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showLargeImage\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeLargeImage\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"disablePadding\\\",\\\"headerTitle\\\"],[true,[25,\\\"busy-loc\\\",[\\\"Photos %@\\\",[20,[\\\"openPhotoIndex\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-note-detail-large-image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main-photo-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"photo-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"large-image-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[20,[\\\"largeImage\\\",\\\"fileUrl\\\"]]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isPrevDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"prevPhoto\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Previous\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"largeImage\\\",\\\"captureDateString\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button grey\\\",[25,\\\"if\\\",[[20,[\\\"isNextDisabled\\\"]],\\\" disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"nextPhoto\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Next\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"onDelete\\\",\\\"confirmOnDelete\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"deleteNotecard\\\"],null],true,[25,\\\"busy-loc\\\",[\\\"Edit Notecard\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit-collection-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Subject\\\"],null],[20,[\\\"model\\\",\\\"title\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Note\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"textarea\\\",null,[[\\\"placeholder\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Add a description for this note...\\\"],null],[20,[\\\"model\\\",\\\"description\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"select-menu/project\\\",null,[[\\\"onSelect\\\",\\\"selectedItem\\\"],[\\\"changeProject\\\",[20,[\\\"model\\\",\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-file-uploader\\\",null,[[\\\"title\\\",\\\"showProgress\\\",\\\"showPreview\\\",\\\"onChange\\\",\\\"multiple\\\"],[[25,\\\"busy-loc\\\",[\\\"Choose Photos\\\"],null],false,false,\\\"imageChange\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"photo-preview\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"mediaEntries\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"progress\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bar\\\"],[10,\\\"style\\\",[19,1,[\\\"file\\\",\\\"uploadProgressStyle\\\"]],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"inner\\\"],[10,\\\"style\\\",[19,1,[\\\"file\\\",\\\"innerStyle\\\"]],null],[7],[1,[19,1,[\\\"file\\\",\\\"uploadPercent\\\"]],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"percent\\\"],[7],[1,[19,1,[\\\"file\\\",\\\"uploadPercent\\\"]],false],[0,\\\"%\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[19,1,[\\\"fileThumbUrl\\\"]],[19,1,[\\\"fileThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/note/detail.hbs\" } });\n});","define(\"busy-app/templates/partials/activity-project-table\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"ZyjQmZpv\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"info toggle depth-\\\",[19,1,[\\\"project\\\",\\\"depth\\\"]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"children\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"hover\\\",\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[false,true,\\\"remove_circle_outline\\\",[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"hover\\\",\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[false,true,\\\"add_circle_outline\\\",[25,\\\"busy-loc\\\",[\\\"Open\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"disabled\\\",\\\"name\\\",\\\"title\\\"],[true,true,\\\"remove\\\",[25,\\\"busy-loc\\\",[\\\"Close\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"projectNumber\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOverburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\" -   \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-project-table\\\",[1,2]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"info toggle depth-\\\",[25,\\\"add\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"depth\\\"]],1],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"disabled\\\",\\\"name\\\"],[true,true,\\\"remove\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[20,[\\\"model\\\"]],true]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"regularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"overtimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"doubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"overburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/activity-project-table.hbs\" } });\n});","define(\"busy-app/templates/partials/activity-report-columns\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"KFml4PpL\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"regularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"overtimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"doubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"overburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/activity-report-columns.hbs\" } });\n});","define(\"busy-app/templates/partials/activity-report-graph\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"iFZ2J40Q\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"graph-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"data-type\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-select-menu\\\",null,[[\\\"right\\\",\\\"large\\\",\\\"onSelect\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"changeGraphDataType\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"total-seconds\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"total-seconds\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"regular-seconds\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"regular-seconds\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"overtime-seconds\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"overtime-seconds\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"doubletime-seconds\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"doubletime-seconds\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"DT Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewProjectExpenses\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"total-overburden-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"total-overburden-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"total-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"total-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"regular-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"regular-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"overtime-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"overtime-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"doubletime-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"doubletime-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"DT Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"overburden-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"graphDataType\\\"]],\\\"overburden-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Burden\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"graphIsHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"totalGraphHours\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"totalGraphHours\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"chartLabel\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"noGraph\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"barChartArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/bar-chart\\\",null,[[\\\"id\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"showLegend\\\",\\\"dataType\\\",\\\"gridLines\\\",\\\"showYAxis\\\",\\\"xAxesTicks\\\",\\\"pageSize\\\"],[\\\"report-chart\\\",[20,[\\\"barChartArray\\\"]],\\\"totalHours\\\",\\\"label\\\",false,[20,[\\\"dataType\\\"]],false,false,false,[20,[\\\"barChartArray\\\",\\\"length\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"no-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No Data\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"no-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Chart not available for this date range.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/activity-report-graph.hbs\" } });\n});","define(\"busy-app/templates/partials/budget-subproject-table\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"yO8HwCjF\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"tr\\\"],[9,\\\"class\\\",\\\"--budget-table_row subproject-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"td\\\"],[9,\\\"class\\\",\\\"--budget-table_col image page-padding project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"loadProject\\\",[20,[\\\"item\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[20,[\\\"item\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-greater\\\",[[25,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]],[20,[\\\"item\\\",\\\"totalTotalOverburdenCost\\\"]],[20,[\\\"item\\\",\\\"totalTotalCost\\\"]]],null],[20,[\\\"item\\\",\\\"budgetCost\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The actual costs have exceeded the budgeted amount.\\\"],null],\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-greater\\\",[[20,[\\\"item\\\",\\\"totalTotalSeconds\\\"]],[20,[\\\"item\\\",\\\"budgetSeconds\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The actual hours have exceeded the budgeted amount.\\\"],null],\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[[20,[\\\"item\\\",\\\"subprojectsTotalBudgetCost\\\"]],[20,[\\\"item\\\",\\\"budgetCost\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"placeholder\\\",\\\"label\\\",\\\"disabled\\\",\\\"onBlur\\\",\\\"onSubmit\\\"],[\\\"number\\\",\\\"0\\\",[20,[\\\"item\\\",\\\"budgetCostModelCostValue\\\"]],\\\"0.00\\\",\\\" \\\",[20,[\\\"item\\\",\\\"archivedOn\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveCost\\\",[20,[\\\"item\\\",\\\"budgetCostModelCostValue\\\"]],[20,[\\\"item\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveCost\\\",[20,[\\\"item\\\",\\\"budgetCostModelCostValue\\\"]],[20,[\\\"item\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The subproject budgets have exceeded the overall budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"td\\\"],[10,\\\"class\\\",[26,[\\\"--budget-table_col detail-col\\\",[25,\\\"if\\\",[[25,\\\"is-greater\\\",[[20,[\\\"item\\\",\\\"subprojectsTotalBudgetSeconds\\\"]],[20,[\\\"item\\\",\\\"budgetSeconds\\\"]]],null],\\\" negative\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"placeholder\\\",\\\"label\\\",\\\"disabled\\\",\\\"onBlur\\\",\\\"onSubmit\\\"],[\\\"number\\\",\\\"0\\\",[20,[\\\"item\\\",\\\"budgetHoursModelHoursValue\\\"]],\\\"0\\\",\\\" \\\",[20,[\\\"item\\\",\\\"archivedOn\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"saveHours\\\",[20,[\\\"item\\\",\\\"budgetHoursModelHoursValue\\\"]],[20,[\\\"item\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveHours\\\",[20,[\\\"item\\\",\\\"budgetHoursModelHoursValue\\\"]],[20,[\\\"item\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\"],[[25,\\\"busy-loc\\\",[\\\"The subproject budgets have exceeded the overall budgeted amount.\\\"],null],\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon error-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/budget-subproject-table.hbs\" } });\n});","define(\"busy-app/templates/partials/equipment-project-children-table\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Tc2Wvt53\", \"block\": \"{\\\"symbols\\\":[\\\"child\\\",\\\"child\\\",\\\"child\\\",\\\"child\\\",\\\"child\\\",\\\"child\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[20,[\\\"item\\\",\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"folder \\\",[25,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]],\\\"open\\\",\\\"closed\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,1,[]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-2\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[19,1,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-2\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"folder \\\",[25,\\\"if\\\",[[19,2,[\\\"showChildren\\\"]],\\\"open\\\",\\\"closed\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,2,[]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,2,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,2,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[19,2,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-3\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"folder \\\",[25,\\\"if\\\",[[19,3,[\\\"showChildren\\\"]],\\\"open\\\",\\\"closed\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,3,[]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,3,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,3,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-4\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[19,3,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-4\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,4,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"folder \\\",[25,\\\"if\\\",[[19,4,[\\\"showChildren\\\"]],\\\"open\\\",\\\"closed\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,4,[]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,4,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,4,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,4,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,4,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,4,[\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-5\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,4,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[19,4,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-5\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,5,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"folder \\\",[25,\\\"if\\\",[[19,5,[\\\"showChildren\\\"]],\\\"open\\\",\\\"closed\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,5,[]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,5,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,5,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,5,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,5,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,5,[\\\"totalSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-6\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Unassigned\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,5,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[19,5,[\\\"children\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row child-row-6\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"folder grey\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"detail\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openProject\\\",[19,6,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,6,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,6,[\\\"totalAllSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/equipment-project-children-table.hbs\" } });\n});","define(\"busy-app/templates/partials/help-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"goEzhP5x\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeHelpDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeHelpDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Support\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"help-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"How can we help?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Whether you would like help with setup, have a question or just want to leave feedback, we would love to hear from you!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Call us at 1-855-287-9287\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showIntercom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openIntercom\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Chat\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openFaq\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Search FAQ\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showReceptive\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[7],[6,\\\"a\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[9,\\\"onclick\\\",\\\"window.receptivePublicLib.loginAndRedirect({anchor: this})\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Suggest Features\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/help-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks-dialogs\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"h2roi3nn\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConnectorDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/integrations/quickbooks/connector-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showQuickBooksDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/integrations/quickbooks/connected-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMappingDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/integrations/quickbooks/payroll-mapping-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSyncLogDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/integrations/quickbooks/sync-log-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDisconnectDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[12,\\\"partials/integrations/quickbooks/disconnect-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSyncOptionsDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"company/integrations/vendors/quickbooks/sync-options\\\",null,[[\\\"closeDialog\\\",\\\"quickbooksConnected\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncOptionsDialog\\\"],null],[20,[\\\"quickbooksConnected\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks-dialogs.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/connected-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"O2TzzxH5\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openStepTwoDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Continue\\\"],null],[25,\\\"busy-loc\\\",[\\\"QuickBooks\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 1:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"We will try to match employee data between busybusy and QuickBooks.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBefore syncing make sure first and last names are spelled the same in both programs.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 2:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download and install\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"http://developer-static.intuit.com/idn/downloads/QBSM/Webconnector/QBWebConnectorInstaller_2_1_0_30.exe\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"QuickBooks Web Connector\\\"],null],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 3:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"downloadQwcFile\\\",[20,[\\\"dialog\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"busybusy.qwc\\\"],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"file for QuickBooks Web Connector.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 4:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Open QuickBooks Web Connector and click “Upload Application File”\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 5:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Choose busybusy.qwc downloaded in Step 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 6:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Click save and wait for busybusy Integration Status to say “Connected”.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title status\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description quickbooks-connected\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Connected\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warning\\\"],null],false],[8],[0,\\\": \\\"],[1,[25,\\\"busy-loc\\\",[\\\"On your first sync, active employees, customers, projects,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tand cost codes will be replaced with data imported from QuickBooks.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tIf you have any questions, please feel free to contact customer service at (855) 287-9287\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/connected-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/connector-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"pqgrekRv\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"QuickBooks\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 1:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"We will try to match employee data between busybusy and QuickBooks.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBefore syncing make sure first and last names are spelled the same in both programs.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 2:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download and install\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://intuit.box.com/shared/static/veoi2d8otmz7i7zm1yogt3wepfhbfuc0.zip\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"QuickBooks Web Connector\\\"],null],false],[8],[0,\\\".\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 3:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Download\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"downloadQwcFile\\\",[20,[\\\"dialog\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"busybusy.qwc\\\"],[8],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"file for QuickBooks Web Connector.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 4:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Open QuickBooks Web Connector and click “Upload Application File”\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 5:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Choose busybusy.qwc downloaded in Step 2\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 6:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Click save and wait for busybusy Integration Status to say “Connected”.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title status\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Status:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description quickbooks-not-connected\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Not Connected\\\"],null],false],[8],[0,\\\": \\\"],[1,[25,\\\"busy-loc\\\",[\\\"This Process may take up to eight hours.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tYou will receive an email when further setup is required.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Warning\\\"],null],false],[8],[0,\\\": \\\"],[1,[25,\\\"busy-loc\\\",[\\\"On your first sync, active employees, customers, projects,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tand cost codes will be replaced with data imported from QuickBooks.\\\\r\\\\n\\\\t\\\\t\\\\t\\\\t\\\\tIf you have any questions, please feel free to contact customer service at (855) 287-9287\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/connector-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/disconnect-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bBDh5gk6\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDisconnectDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"saveText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDisconnectDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"disconnectQuickBooks\\\"],null],[25,\\\"busy-loc\\\",[\\\"Disconnect\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-upgrade-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Disconnecting\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Are you sure you want to stop syncing with the QuickBooks Web Connector? You can reconnect at any time.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/disconnect-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/payroll-mapping-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Sg/oS1ml\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"saveText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeQuickBooksDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveQuickBooks\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save & Close\\\"],null],[25,\\\"busy-loc\\\",[\\\"Match Payroll Categories\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"company-settings-integrations-quickbooks-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Review your employees and ensure that each individual has the correct payroll types. Edit an employee by clicking the plus button to the left of their name.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isMappingOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"collapseAll\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Collapse All\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"expandAll\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Expand All\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"mapping-members\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"memberConnectors\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"mapping-member\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"show-mapping-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"toggleMapping\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasPayrollItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,1,[\\\"showMapping\\\"]],\\\"collapse\\\",\\\"expand\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasHourlyItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"payroll-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"employee-name\\\"],[7],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"REG = %@\\\",[25,\\\"if\\\",[[19,1,[\\\"regularWageType\\\"]],[19,1,[\\\"regularWageType\\\",\\\"wageName\\\"]],[25,\\\"busy-loc\\\",[\\\"Not Set\\\"],null]],null]],null],false],[0,\\\",\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"OT1 = %@\\\",[25,\\\"if\\\",[[19,1,[\\\"overtimeWageType\\\"]],[19,1,[\\\"overtimeWageType\\\",\\\"wageName\\\"]],[25,\\\"busy-loc\\\",[\\\"Not Set\\\"],null]],null]],null],false],[0,\\\",\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"OT2 = %@\\\",[25,\\\"if\\\",[[19,1,[\\\"doubletimeWageType\\\"]],[19,1,[\\\"doubletimeWageType\\\",\\\"wageName\\\"]],[25,\\\"busy-loc\\\",[\\\"Not Set\\\"],null]],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[19,1,[\\\"showMapping\\\"]],\\\" open\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"doneTransition\\\"]],\\\" after\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"mapping-menus\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time (REG)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[19,1,[\\\"regularList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"regularSelected\\\"],null],\\\"wageName\\\",\\\"mapping-menu\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime x1.5 (OT1)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"class\\\"],[[19,1,[\\\"overtimeList\\\"]],\\\"wageName\\\",\\\"mapping-menu\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime X2.0 (OT2)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"class\\\"],[[19,1,[\\\"doubletimeList\\\"]],\\\"wageName\\\",\\\"mapping-menu\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"hasSalaryItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"payroll-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"employee-name\\\"],[7],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"SAL = %@\\\",[25,\\\"if\\\",[[19,1,[\\\"salaryWageType\\\"]],[19,1,[\\\"salaryWageType\\\",\\\"wageName\\\"]],[25,\\\"busy-loc\\\",[\\\"not set\\\"],null]],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"slider\\\",[25,\\\"if\\\",[[19,1,[\\\"showMapping\\\"]],\\\" salary\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"doneTransition\\\"]],\\\" after\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"mapping-menus\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Salary (SAL)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[19,1,[\\\"regularList\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"salarySelected\\\"],null],\\\"wageName\\\",\\\"mapping-menu\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"payroll-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"employee-name\\\"],[7],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No payroll items found. Add payroll items to this employee from QuickBooks. Return here after the next sync to match payroll items.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"no mapping found\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/payroll-mapping-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/sync-log-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"dKxeSjri\", \"block\": \"{\\\"symbols\\\":[\\\"update\\\",\\\"newImport\\\",\\\"update\\\",\\\"newImport\\\",\\\"update\\\",\\\"newImport\\\",\\\"updatedImport\\\",\\\"newImport\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSyncLogDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Sync Log\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"company-settings-integrations-sync-log-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-selector\\\"],[7],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"class\\\"],[[20,[\\\"syncLog\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"setCurrentLog\\\"],null],\\\"displayDate\\\",\\\"full left\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"currentLog\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"imported-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employees Imported\\\"],null],false],[8],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"employeeData\\\",\\\"new_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,8,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,8,[\\\"status\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"updated-employees\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employees Updated\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"currentLog\\\",\\\"employeeData\\\",\\\"updated_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"%@ employees updated\\\",[20,[\\\"currentLog\\\",\\\"employeeData\\\",\\\"updated_import\\\",\\\"count\\\"]]],null],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"employeeData\\\",\\\"updated_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,7,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,7,[\\\"status\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"imported-projects\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Projects Imported\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"projectData\\\",\\\"new_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,6,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,6,[\\\"status\\\"]],[19,6,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"updated-projects\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Projects Updated\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"projectData\\\",\\\"updated_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,5,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"status\\\"]],[19,5,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"imported-cost-codes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes Imported\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"costCodeData\\\",\\\"new_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,4,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,4,[\\\"status\\\"]],[19,4,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"updated-cost-codes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Codes Updated\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"costCodeData\\\",\\\"updated_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"status\\\"]],[19,3,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Payroll Items\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"imported-payroll-items\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payroll Items Imported\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"payrollItemData\\\",\\\"new_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,2,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"status\\\"]],[19,2,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"updated-payroll-items\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payroll Items Updated\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"currentLog\\\",\\\"payrollItemData\\\",\\\"updated_import\\\",\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"name\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"status\\\"]],[19,1,[\\\"status\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"none\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"select a sync log from the drop down\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/sync-log-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/integrations/quickbooks/upgrade-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/uC00jHi\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-company-settings-integrations-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Subscription Required\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"p\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"This is a premium feature. To integrate with QuickBooks, go to the subsciption tab and select a\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tpackage with the appropriate number of employees. Your first 30 days are free. If you have any questions,\\\\r\\\\n\\\\t\\\\t\\\\t\\\\tplease feel free to contact customer service at 856-287-9287.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/integrations/quickbooks/upgrade-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/overtime-history-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/75Z0RwA\", \"block\": \"{\\\"symbols\\\":[\\\"ot\\\"],\\\"statements\\\":[[4,\\\"dialogs/fs-modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeOvertimeHistoryDialog\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-close\\\"],[7],[0,\\\"\\\\n    \\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"close\\\",[25,\\\"busy-loc\\\",[\\\"Close (Tip: esc to close)\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeOvertimeHistoryDialog\\\"],null]]]],false],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime History\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-table\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-table-header\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-header-cell\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective Date\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-header-cell\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Date\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-header-cell\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Rules\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-header-cell\\\"],[7],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"overtimeHistory\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"overtime-history-row\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-cell\\\"],[7],[1,[19,1,[\\\"effectiveDateShort\\\"]],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-cell\\\"],[7],[1,[19,1,[\\\"editDate\\\"]],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-cell\\\"],[7],[1,[19,1,[\\\"overtimePreference\\\"]],false],[8],[0,\\\"\\\\n      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-history-cell\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showOtDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View\\\"],null],false],[8],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOtDetailsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeOtDetails\\\"]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Overtime Rules\\\"],null]]],{\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"c-company-time-keeping-overtime-preview\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Weekly Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"weeklyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"dailyOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Daily Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"dailyDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 1.5)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"seventhDayOvertimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"7th Day Overtime (wage x 2.0)\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"seventhDayDoubletimeString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Saturday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"saturdayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime-row last\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sunday Pay Rate\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"sundayMultiplierString\\\"]],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"effective-date\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Effective:\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"selectedOvertimePeriod\\\",\\\"effectiveDate\\\"]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/overtime-history-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/report-upgrade-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"qqofU9Qm\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"hideUpgradeDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"report-upgrade-dialog\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/report-upgrade-icons/report_marketing_logo.png\\\"],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"loc\\\",[\\\"Pro Reporting\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"loc\\\",[\\\"Want even more out of your reports? Our pro reporting features give you unlimited access to all your data.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bottom-border\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"column-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/report-upgrade-icons/history_icon.png\\\"],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"loc\\\",[\\\"Historical Data\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"loc\\\",[\\\"Review your company's past performance across days, months, or even years.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/report-upgrade-icons/export_icon.png\\\"],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"loc\\\",[\\\"Export\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"loc\\\",[\\\"Export your data instantly to third-party apps or share it with others to keep them in the loop.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/report-upgrade-icons/time_segment_icon.png\\\"],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"loc\\\",[\\\"Custom Time Segments\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"loc\\\",[\\\"View your hours and costs by pay period, month, week, day or custom date range.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"actions\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"manageCompanySettings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"buttons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"goToUpgrade\\\"]],[7],[1,[25,\\\"loc\\\",[\\\"Upgrade account\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"noTrial\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"goToTrial\\\"]],[7],[1,[25,\\\"loc\\\",[\\\"Start Pro Trial\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideUpgradeDialog\\\"]],[7],[1,[25,\\\"loc\\\",[\\\"No Thanks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/report-upgrade-dialog.hbs\" } });\n});","define(\"busy-app/templates/partials/summary-report/details-entries\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"x6Rlrtu9\", \"block\": \"{\\\"symbols\\\":[\\\"entry\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"item\\\",\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"table-row entry page-color\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"startTime\\\"],null],\\\" member\\\"],null],[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,1,[\\\"member\\\"]]],null],\\\" manage\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openViewEntry\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"startTime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"day\\\"],[7],[1,[25,\\\"date-format\\\",[[19,1,[\\\"startTime\\\"]]],[[\\\"format\\\"],[[20,[\\\"dateFormat\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member primary\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row-right\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"mod-util/aggregate-hours\\\",null,[[\\\"model\\\",\\\"total\\\"],[[25,\\\"map-by\\\",[[19,1,[\\\"segments\\\"]],\\\"seconds\\\"],null],true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"isMultiDayEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time multiple\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[19,1,[\\\"segmentStartTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do, YYYY hh:mm A\\\"]]],false],[0,\\\" - \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"segmentEndTime\\\"]]],[[\\\"format\\\"],[\\\"MMM. Do, YYYY hh:mm A\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[1,[25,\\\"if\\\",[[19,1,[\\\"isStartOutside\\\"]],\\\"*\\\"],null],false],[0,\\\" - \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"endTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[1,[25,\\\"if\\\",[[19,1,[\\\"isEndOutside\\\"]],\\\"*\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"reduce\\\",[[19,1,[\\\"segments\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"reduceBreaks\\\"],null],0],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break\\\"],[7],[0,\\\"(-\\\"],[1,[25,\\\"format-hours\\\",[[25,\\\"reduce\\\",[[19,1,[\\\"segments\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"reduceBreaks\\\"],null],0],null]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"icons\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"__originalModel\\\",\\\"conflict\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"direction\\\",\\\"content\\\",\\\"onClick\\\"],[\\\"above\\\",[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"openConflictResolver\\\",[19,1,[\\\"__originalModel\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons material-icons-warning\\\"],[7],[0,\\\"warning\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"__originalModel\\\",\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[10,\\\"class\\\",[26,[\\\"material-icons \\\",[25,\\\"unless\\\",[[19,1,[\\\"__originalModel\\\",\\\"hasLocations\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openViewEntryLocation\\\",[19,1,[\\\"__originalModel\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"my_location\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,1,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openEntry\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"edit\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"member\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"startTime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"settings\\\",\\\"hideMemberName\\\"]]],null,{\\\"statements\\\":[[4,\\\"model-title/member\\\",null,[[\\\"id\\\"],[[19,1,[\\\"member\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,5,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/project\\\",null,[[\\\"id\\\"],[[19,1,[\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[19,4,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"project\\\"],[10,\\\"title\\\",[26,[[19,4,[\\\"title\\\"]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[19,4,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,4,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"project\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[19,1,[\\\"__originalModel\\\",\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,1,[\\\"__originalModel\\\",\\\"getType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"costCode\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/cost-code\\\",null,[[\\\"id\\\"],[[19,1,[\\\"costCode\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[19,3,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,3,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"equipment\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/equipment\\\",null,[[\\\"id\\\"],[[19,1,[\\\"equipment\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"equipment\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[19,2,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[19,2,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"equipment\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"desc\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\"],[[19,1,[\\\"description\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/summary-report/details-entries.hbs\" } });\n});","define(\"busy-app/templates/partials/summary-report/details\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"KDUfUVon\", \"block\": \"{\\\"symbols\\\":[\\\"model\\\",\\\"type\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details-content\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"startDate\\\"],null]],null,{\\\"statements\\\":[[4,\\\"mod-util/each-day\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"model\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"contentDetail\\\",\\\"startTime\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,8,[\\\"startTime\\\"]]],[[\\\"format\\\"],[[20,[\\\"dateFormat\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"mod-util/aggregate-hours\\\",null,[[\\\"model\\\",\\\"total\\\"],[[25,\\\"map-by\\\",[[19,8,[\\\"model\\\"]],\\\"segments\\\",\\\"seconds\\\"],null],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/summary-report/details-entries\\\",[8]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"inbox\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Entries\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"mod-util/each-type\\\",null,[[\\\"type\\\",\\\"model\\\"],[[20,[\\\"contentDetail\\\",\\\"modelType\\\"]],[25,\\\"get\\\",[[20,[\\\"contentDetail\\\"]],[20,[\\\"contentDetail\\\",\\\"modelType\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,2,[]],\\\"member\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/member\\\",null,[[\\\"id\\\"],[[19,1,[\\\"member\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra image border\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,7,[\\\"member\\\",\\\"imageThumbUrl\\\"]],[19,7,[\\\"title\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,7,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,7,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,2,[]],\\\"costCode\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/cost-code\\\",null,[[\\\"id\\\"],[[19,1,[\\\"costCode\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,6,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,6,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,2,[]],\\\"equipment\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/equipment\\\",null,[[\\\"id\\\"],[[19,1,[\\\"equipment\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[19,5,[\\\"isUnassigned\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra image square\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"image-placeholder\\\",null,[[\\\"image\\\",\\\"altText\\\"],[[19,5,[\\\"imageUrl\\\"]],[19,5,[\\\"equipment\\\",\\\"equipmentName\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,5,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,5,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,2,[]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[4,\\\"model-title/project\\\",null,[[\\\"id\\\"],[[19,1,[\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,4,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,4,[\\\"subTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"mod-util/aggregate-hours\\\",null,[[\\\"model\\\",\\\"total\\\"],[[25,\\\"map-by\\\",[[19,1,[\\\"model\\\"]],\\\"segments\\\",\\\"seconds\\\"],null],true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"entries\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"mod-util/each-day\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"model\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[19,1,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/summary-report/details-entries\\\",[1,2,3]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"inbox\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No Entries\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"editEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"editEntry\\\",\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"editEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"editEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"viewEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeViewDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"viewEntry\\\",\\\"isTimeOff\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/view\\\",null,[[\\\"id\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"viewEntry\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeViewDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/view\\\",null,[[\\\"id\\\",\\\"onCancel\\\",\\\"onSaved\\\",\\\"onDelete\\\"],[[20,[\\\"viewEntry\\\",\\\"id\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeViewDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"viewEntryLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/open-entry-location\\\",null,[[\\\"openEntry\\\",\\\"member\\\",\\\"showEndTime\\\",\\\"onClose\\\"],[[20,[\\\"viewEntryLocation\\\"]],[20,[\\\"model\\\",\\\"member\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"closeViewLocationDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showConflictResolver\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"member\\\",\\\"day\\\",\\\"banner\\\",\\\"showConflictDialog\\\",\\\"onDone\\\"],[[20,[\\\"activeConflict\\\",\\\"member\\\"]],[20,[\\\"activeConflict\\\",\\\"startTime\\\"]],false,true,\\\"closeConflictResolver\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/summary-report/details.hbs\" } });\n});","define(\"busy-app/templates/partials/summary-report/summary\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"uGdHkg2F\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"summary-content\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"table-header flex-cols\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"REG COST\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"REG HRS\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT(x1.5) COST\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT(x1.5) HRS\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT(x2) COST\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT(x2) HRS\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"BURDEN\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TOTAL COST\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TOTAL HRS\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"contentSummary\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row flex-cols\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[19,2,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[19,2,[\\\"project\\\",\\\"projectNumber\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"totalOverburden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalOverburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"overburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[\\\"totalTotalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,2,[\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,false]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[25,\\\"get\\\",[[20,[\\\"contentSummary\\\"]],[20,[\\\"currentOption\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row flex-cols\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"extra\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"member\\\"],null],\\\" image\\\"],null],[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"equipment\\\"],null],\\\" image\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"member\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image border\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,1,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"costCode\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[19,1,[\\\"costCode\\\",\\\"costCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"costCode\\\",\\\"isUnassigned\\\"]],\\\"\\\",[19,1,[\\\"costCode\\\",\\\"title\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"equipment\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image square\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,1,[\\\"equipment\\\",\\\"equipmentThumb\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[19,1,[\\\"equipment\\\",\\\"equipmentName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[19,1,[\\\"equipment\\\",\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"currentOption\\\"]],\\\"startDate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"date-format\\\",[[19,1,[\\\"startDate\\\"]]],[[\\\"format\\\"],[[20,[\\\"dateFormat\\\"]]]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalRegularCost\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"regularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalRegularSeconds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalOvertimeCost\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"overtimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalOvertimeSeconds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalDoubletimeCost\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"doubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalDoubletimeSeconds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalOverburden\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOverburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"overburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalTotalCost\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"if\\\",[[20,[\\\"isUnassignedProject\\\"]],false,[19,1,[\\\"totalTotalSeconds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/summary-report/summary.hbs\" } });\n});","define(\"busy-app/templates/partials/time-entry-report\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"OdcWfbEe\", \"block\": \"{\\\"symbols\\\":[\\\"data\\\",\\\"day\\\",\\\"entry\\\",\\\"idx\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-partial-time-entry-report\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"company-info page-show page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"cityStateString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeCard\\\",[20,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-row header-left\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-name\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-id\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-id-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"ID\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-id-value\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"memberNumber\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"member\\\",\\\"memberGroupId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-id-label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Group\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-id-value\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"memberGroup\\\",\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-row header-right\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"header-date\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateRangeString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"isSignaturesEnabled\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"currentPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card/signature-state\\\",null,[[\\\"memberTimeDocument\\\",\\\"payPeriodSeconds\\\"],[[20,[\\\"model\\\",\\\"memberTimeDocument\\\"]],[20,[\\\"model\\\",\\\"currentPeriod\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"report\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"table-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Stop\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"breaks\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Details\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"entry\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Entry\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"days\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"days\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,2,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"day\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntryAction\\\",[19,3,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,4,[]],0],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[19,3,[\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"ddd\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[19,3,[\\\"dateStamp\\\"]]],[[\\\"format\\\"],[\\\"ddd\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[19,3,[\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"M/D/YY\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"date-format\\\",[[19,3,[\\\"dateStamp\\\"]]],[[\\\"format\\\"],[\\\"M/D/YY\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"hasConflict\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"direction\\\",\\\"content\\\"],[\\\"right\\\",[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"startDateString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"model\\\",\\\"getType\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"endDateString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"model\\\",\\\"getType\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"breaks\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"breaktimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"project\\\",\\\"projectInfo\\\",\\\"number\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-number\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project #\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"model\\\",\\\"project\\\",\\\"projectInfo\\\",\\\"number\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"project\\\"]],[19,3,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"equipment\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,3,[\\\"model\\\",\\\"equipment\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"description\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"desc\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\",\\\"defaultValue\\\"],[[19,3,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"entry\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"model\\\",\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[19,4,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3,4]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"summary\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-summary-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project Summary\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataDoubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"doubletime\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2)\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataOvertimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"regular\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"projectData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"fullTitle\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataDoubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"doubletime\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataOvertimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"regular\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"projectDataTotalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataDoubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"doubletime\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"projectDataDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectDataOvertimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"overtime\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"projectDataOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"regular\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"projectDataRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card/signature-display\\\",null,[[\\\"memberTimeDocument\\\"],[[20,[\\\"model\\\",\\\"memberTimeDocument\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clearfix\\\"],[7],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/time-entry-report.hbs\" } });\n});","define(\"busy-app/templates/partials/time/time-entry/log\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Lim70bNE\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"breakLog\\\",\\\"breakLog\\\",\\\"breakLog\\\",\\\"breakLog\\\",\\\"breakLog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"actionString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"view-gps\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showMap\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View GPS\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-string\\\"],[7],[1,[19,1,[\\\"subActionString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"recorded\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Recorded: %@\\\",[19,1,[\\\"createdOnString\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"By: %@\\\",[19,1,[\\\"updaterName\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"device\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Device: %@\\\",[19,1,[\\\"deviceType\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEditEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Show Details\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hide Details\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"from-to\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"FROM\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"previousBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,6,[\\\"rangeString\\\"]],false],[0,\\\" (\\\"],[1,[25,\\\"format-hours\\\",[[19,6,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"prevState\\\",\\\"description\\\"]],[19,1,[\\\"prevState\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"startString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEndTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"endString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"from-to\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TO\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"activeBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,5,[\\\"rangeString\\\"]],false],[0,\\\" (\\\"],[1,[25,\\\"format-hours\\\",[[19,5,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"description\\\"]],[19,1,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"startString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEndTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"endString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"isConflictResolution\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Show Details\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hide Details\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"text c-icon grey-info-icon\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A conflicting time entry was merged into this time entry.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"from-to\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"FROM\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"previousBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,4,[\\\"rangeString\\\"]],false],[0,\\\" (\\\"],[1,[25,\\\"format-hours\\\",[[19,4,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"prevState\\\",\\\"description\\\"]],[19,1,[\\\"prevState\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"startString\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEndTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"endString\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"prevState\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"from-to\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"TO\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"activeBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"rangeString\\\"]],false],[0,\\\" (\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"description\\\"]],[19,1,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isStartTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Start Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"startString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEndTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"End Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"endString\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"isEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewMergedHistory\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Click here to view conflicting time entry history\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"isBreakEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Show Details\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"hideEditDetails\\\",[19,1,[]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hide Details\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[19,1,[\\\"activeBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,2,[\\\"rangeString\\\"]],false],[0,\\\" (\\\"],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"project\\\",\\\"title\\\"]],[19,1,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],[19,1,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"None\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"heading\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"description\\\"]],[19,1,[\\\"model\\\",\\\"description\\\"]],[25,\\\"busy-loc\\\",[\\\"None\\\"],null]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/partials/time/time-entry/log.hbs\" } });\n});","define(\"busy-app/templates/project\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"efwbcs2h\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project.hbs\" } });\n});","define(\"busy-app/templates/project/detail\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"HcWiKrx5\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail.hbs\" } });\n});","define(\"busy-app/templates/project/detail/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"0RHTbrXO\", \"block\": \"{\\\"symbols\\\":[\\\"currentModel\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-details project-tab v-project-detail\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"liquid-bind\\\",[[20,[\\\"model\\\"]]],[[\\\"class\\\"],[\\\"project-slide\\\"]],{\\\"statements\\\":[[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"project-folder\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon project-folder-icon\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"breadcrumbs\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,2,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"clickBreadcrumb\\\",[19,2,[\\\"key\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,2,[\\\"value\\\"]],false],[8],[0,\\\" \\\"],[1,[19,2,[\\\"slash\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-tabs\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Subprojects\\\"],null],[20,[\\\"canHaveSubProjects\\\"]],1]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/sub-project\\\",null,[[\\\"project\\\",\\\"organization\\\",\\\"onProjectChange\\\"],[[19,1,[\\\"project\\\"]],[20,[\\\"organization\\\"]],\\\"changeSubProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Labor Budget\\\"],null],[25,\\\"if\\\",[[20,[\\\"features\\\",\\\"laborBudgets\\\"]],[25,\\\"if\\\",[[20,[\\\"organization\\\",\\\"trackBudgets\\\"]],[25,\\\"has-permission-for\\\",[\\\"manageBudgets\\\"],null],false],null],false],null],2]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/labor-budget\\\",null,[[\\\"model\\\"],[[19,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Reports\\\"],null],[25,\\\"has-permission-for\\\",[\\\"viewProjectExpenses\\\"],null],3]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/report-index\\\",null,[[\\\"project\\\",\\\"organization\\\",\\\"onTransition\\\"],[[19,1,[\\\"project\\\"]],[20,[\\\"organization\\\"]],\\\"reportTransition\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"isViewable\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Photos\\\"],null],[20,[\\\"features\\\",\\\"photos\\\"]],4]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"notes/note-cards\\\",null,[[\\\"class\\\",\\\"project\\\"],[\\\"project-notes\\\",[19,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLinkedCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost Codes\\\"],null],5]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes\\\",null,[[\\\"project\\\"],[[19,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-tab\\\",null,[[\\\"tabName\\\",\\\"tabIndex\\\"],[[25,\\\"busy-loc\\\",[\\\"Details\\\"],null],6]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/project-info\\\",null,[[\\\"project\\\",\\\"reInitMap\\\"],[[19,1,[\\\"project\\\"]],\\\"reInitMap\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/index.hbs\" } });\n});","define(\"busy-app/templates/project/detail/reports\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"n8jynEFU\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-reports\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[20,[\\\"reportTitle\\\"]],true,true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/reports.hbs\" } });\n});","define(\"busy-app/templates/project/detail/reports/budget-versus-actual\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"X/FHuOnS\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-reports-budget-actual\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"projects/report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"isRangeSelector\\\",\\\"hasDateSelector\\\",\\\"options\\\",\\\"dateSelected\\\",\\\"inlinePrint\\\",\\\"title\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],true,false,[20,[\\\"optionSelector\\\"]],\\\"changeDateRange\\\",true,[20,[\\\"project\\\",\\\"fullTitle\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"bva-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hour-graphs page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hours-labels\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Hours Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hoursNegative\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label2 over\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%@%\\\",[20,[\\\"hoursPercentage\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%@%\\\",[20,[\\\"hoursPercentage\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"graph-background\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"percentage-complete\\\"],[10,\\\"style\\\",[18,\\\"hoursWidthString\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-graphs page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-labels\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Cost Spent\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"costNegative\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label2 over\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%@%\\\",[20,[\\\"costPercentage\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"%@%\\\",[20,[\\\"costPercentage\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"graph-background\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"percentage-complete\\\"],[10,\\\"style\\\",[18,\\\"costWidthString\\\"],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Labor Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Budgeted\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"budgetSeconds\\\",\\\"budgetSeconds\\\"]]],[[\\\"format\\\"],[20]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalSeconds\\\"]]],[[\\\"format\\\"],[20]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Remaining\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hoursNegative\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours-negative\\\"],[7],[0,\\\"(-\\\"],[1,[25,\\\"format-hours\\\",[[20,[\\\"remainingHours\\\"]]],[[\\\"format\\\",\\\"allowNeg\\\"],[20,true]]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"remainingHours\\\"]]],[[\\\"format\\\"],[20]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Labor Cost\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Budgeted\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"costBudget\\\",\\\"costBudget\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Spent\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"project\\\",\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"labor-hours\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Remaining\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"costNegative\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours-negative\\\"],[7],[0,\\\"(\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"remainingCost\\\"]]],null],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"remainingCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/reports/budget-versus-actual.hbs\" } });\n});","define(\"busy-app/templates/project/detail/reports/employees\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"r9evaqA/\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-reports-employees\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"projects/report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"isRangeSelector\\\",\\\"hasDateSelector\\\",\\\"isCustomDateRange\\\",\\\"options\\\",\\\"inlinePrint\\\",\\\"title\\\",\\\"optionSelected\\\",\\\"dateSelected\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],true,true,[20,[\\\"custom\\\"]],[20,[\\\"optionSelector\\\"]],true,[20,[\\\"project\\\",\\\"fullTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"optionChanged\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeDateRange\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"syncStart\\\"]],[20,[\\\"syncEnd\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"refreshModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"employees-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"page-color\\\",[25,\\\"busy-loc\\\",[\\\"Totals\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"legend page-color page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hours-legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hours Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours-total\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-total\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pie-selector page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"defaultFirstOption\\\",\\\"onSelect\\\"],[[20,[\\\"chartOptions\\\"]],\\\"value\\\",true,[25,\\\"action\\\",[[19,0,[]],\\\"changeChartStyle\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"page-color\\\",[25,\\\"busy-loc\\\",[\\\"Employees\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showBarChart\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/legacy-bar-chart\\\",null,[[\\\"content\\\",\\\"title\\\",\\\"type\\\",\\\"hourText\\\",\\\"costText\\\",\\\"cost\\\",\\\"hours\\\",\\\"project\\\",\\\"titleSelected\\\"],[[20,[\\\"model\\\",\\\"members\\\"]],\\\"member.fullName\\\",\\\"Employees\\\",[25,\\\"busy-loc\\\",[\\\"Hours Worked\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null],\\\"totalTotalOverburdenCost\\\",\\\"totalTotalSeconds\\\",[20,[\\\"project\\\"]],\\\"openEntries\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/doughnut-chart\\\",null,[[\\\"color\\\",\\\"id\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"onClick\\\",\\\"dataType\\\"],[\\\"blue\\\",\\\"hours-chart\\\",[20,[\\\"model\\\",\\\"members\\\"]],\\\"totalTotalSeconds\\\",\\\"member.fullName\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openEntries\\\"],null],\\\"time\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/doughnut-chart\\\",null,[[\\\"color\\\",\\\"id\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"onClick\\\",\\\"dataType\\\"],[\\\"green\\\",\\\"cost-chart\\\",[20,[\\\"model\\\",\\\"members\\\"]],\\\"totalTotalCost\\\",\\\"member.fullName\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openEntries\\\"],null],\\\"currency\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEntriesDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/employee-list\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"member\\\",\\\"project\\\",\\\"onClose\\\",\\\"onChanged\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"selectedMember\\\"]],[20,[\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/employee-list\\\",null,[[\\\"member\\\",\\\"project\\\",\\\"onClose\\\",\\\"onChanged\\\"],[[20,[\\\"selectedMember\\\"]],[20,[\\\"project\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/reports/employees.hbs\" } });\n});","define(\"busy-app/templates/project/detail/reports/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"fSoyooui\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-payroll-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/reports/loading.hbs\" } });\n});","define(\"busy-app/templates/project/detail/reports/subprojects\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/hpObj4d\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-reports-subprojects\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"projects/report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"isRangeSelector\\\",\\\"hasDateSelector\\\",\\\"isCustomDateRange\\\",\\\"options\\\",\\\"inlinePrint\\\",\\\"title\\\",\\\"optionSelected\\\",\\\"dateSelected\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],true,true,[20,[\\\"custom\\\"]],[20,[\\\"optionSelector\\\"]],true,[20,[\\\"project\\\",\\\"fullTitle\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"optionChanged\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeDateRange\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"syncStart\\\"]],[20,[\\\"syncEnd\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"refreshModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"subprojects-body\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Totals\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"legend page-color page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"hours-legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Hours Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"hours-total\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\",\\\"longFormat\\\"],[true,true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cost-legend\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"box\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"cost-total\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pie-selector page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"itemLabel\\\",\\\"defaultFirstOption\\\",\\\"onSelect\\\"],[[20,[\\\"chartOptions\\\"]],\\\"value\\\",true,[25,\\\"action\\\",[[19,0,[]],\\\"changeChartStyle\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Subprojects\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showBarChart\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/legacy-bar-chart\\\",null,[[\\\"content\\\",\\\"title\\\",\\\"type\\\",\\\"hourText\\\",\\\"costText\\\",\\\"cost\\\",\\\"hours\\\",\\\"titleSelected\\\"],[[20,[\\\"model\\\",\\\"projects\\\"]],\\\"project.title\\\",\\\"Subprojects\\\",[25,\\\"busy-loc\\\",[\\\"Hours Worked\\\"],null],[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null],\\\"cost.totalTotalOverburdenCost\\\",\\\"seconds.totalTotalSeconds\\\",\\\"titleSelected\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/doughnut-chart\\\",null,[[\\\"color\\\",\\\"id\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"onClick\\\",\\\"dataType\\\"],[\\\"blue\\\",\\\"hours-chart\\\",[20,[\\\"model\\\",\\\"projects\\\"]],\\\"seconds.totalTotalSeconds\\\",\\\"project.title\\\",[25,\\\"action\\\",[[19,0,[]],\\\"titleSelected\\\"],null],\\\"time\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"charts/doughnut-chart\\\",null,[[\\\"color\\\",\\\"id\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"onClick\\\",\\\"dataType\\\"],[\\\"green\\\",\\\"cost-chart\\\",[20,[\\\"model\\\",\\\"projects\\\"]],\\\"cost.totalTotalOverburdenCost\\\",\\\"project.title\\\",[25,\\\"action\\\",[[19,0,[]],\\\"titleSelected\\\"],null],\\\"currency\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEntriesDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/employee-list\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"project\\\",\\\"groupByMember\\\",\\\"unassignedProjects\\\",\\\"onClose\\\",\\\"onChanged\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"clickedProject\\\"]],true,[20,[\\\"unassignedProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/employee-list\\\",null,[[\\\"project\\\",\\\"groupByMember\\\",\\\"unassignedProjects\\\",\\\"onClose\\\",\\\"onChanged\\\"],[[20,[\\\"clickedProject\\\"]],true,[20,[\\\"unassignedProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"refreshSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/detail/reports/subprojects.hbs\" } });\n});","define(\"busy-app/templates/project/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"6U1sbP5W\", \"block\": \"{\\\"symbols\\\":[\\\"group\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-index\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"fullWidth\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null],true,true]],{\\\"statements\\\":[[4,\\\"busy-action-bar\\\",null,[[\\\"defaultTitle\\\",\\\"search\\\",\\\"isFlipped\\\",\\\"groupMenu\\\",\\\"selectedGroup\\\",\\\"groupEditPermission\\\",\\\"selectMenu\\\",\\\"addGroup\\\",\\\"onSearch\\\",\\\"onSelectGroup\\\",\\\"onAdd\\\",\\\"onSelect\\\",\\\"onCancel\\\",\\\"onSubmit\\\",\\\"onDeleteGroup\\\",\\\"interopTarget\\\"],[[25,\\\"busy-loc\\\",[\\\"Projects\\\"],null],[20,[\\\"search\\\"]],[20,[\\\"edit\\\"]],[20,[\\\"groups\\\"]],[20,[\\\"group\\\"]],[20,[\\\"canManageProjectGroups\\\"]],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[20,[\\\"selectMenu\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"addNewGroup\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"searchAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"filterGroup\\\"],null],[25,\\\"if\\\",[[20,[\\\"canAddProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"openNewProjectDialog\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"editListAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"cancelEditAction\\\"],null]],null],[25,\\\"if\\\",[[20,[\\\"canManageProjects\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"submitEditAction\\\"],null]],null],[25,\\\"action\\\",[[19,0,[]],\\\"onDeleteGroup\\\"],null],[25,\\\"if\\\",[[19,0,[\\\"canViewManagementTools\\\"]],\\\"/manage/projects\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"edit\\\",\\\"isLoading\\\",\\\"large\\\",\\\"selector\\\",\\\"minimal\\\",\\\"selectAll\\\",\\\"onClick\\\",\\\"onSelect\\\",\\\"model\\\"],[[20,[\\\"edit\\\"]],[20,[\\\"isLoading\\\"]],true,true,true,[25,\\\"action\\\",[[19,0,[]],\\\"selectAll\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectClicked\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"projectSelected\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Name\\\"],null]]]],[7],[1,[19,2,[\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[9,\\\"title\\\",\\\"\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasRowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"selectors/list-select\\\",null,[[\\\"model\\\",\\\"small\\\",\\\"itemLabel\\\",\\\"forMember\\\",\\\"filterItem\\\",\\\"onSelect\\\"],[[20,[\\\"rowSelectMenu\\\"]],true,\\\"value\\\",[20,[\\\"auth\\\",\\\"member\\\"]],[19,2,[]],[25,\\\"action\\\",[[19,0,[]],\\\"rowItemSelectAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-pagination\\\",null,[[\\\"page\\\",\\\"pageSize\\\",\\\"totalRows\\\",\\\"changePage\\\",\\\"changeSize\\\"],[[20,[\\\"page\\\"]],[20,[\\\"page_size\\\"]],[20,[\\\"totalRows\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"changePage\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"changeSize\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewProjectDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\",\\\"saveText\\\",\\\"saveCloseText\\\",\\\"closeOnSave\\\",\\\"onCancel\\\",\\\"onSave\\\"],[[25,\\\"busy-loc\\\",[\\\"Add Project\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save and add another\\\"],null],[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false,[25,\\\"action\\\",[[19,0,[]],\\\"closeNewProjectDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveNewProject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-add-project-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey bottom-margin\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openImportAction\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Import Projects\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Information\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"required\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Name\\\"],null],true,[20,[\\\"newProject\\\",\\\"title\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Project Number\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"number\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Customer\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"customer\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isLinkedCostCodesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/cost-codes-select\\\",null,[[\\\"projectCostCodeLinks\\\",\\\"projectId\\\",\\\"isSubproject\\\",\\\"cancelText\\\",\\\"saveText\\\",\\\"onCancelCostCodeChanges\\\",\\\"onSaveManagerChanges\\\"],[[20,[\\\"_projectCostCodeLinks\\\"]],null,false,[25,\\\"busy-loc\\\",[\\\"Clear\\\"],null],[25,\\\"busy-loc\\\",[\\\"Done\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onCancelCostCodeChanges\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"onSaveManagerChanges\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Phone Number\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"phone\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 1\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"address1\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Address 2\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"address2\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"City\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"city\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"State\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"state\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Postal Code\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"postalCode\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Geolocation\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"project-geolocation-settings\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Set Geolocation\\\"],null],[20,[\\\"useGeolocation\\\"]],\\\"useGeolocation\\\"]]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"locationBasedReminders\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\",\\\"name\\\"],[[25,\\\"busy-loc\\\",[\\\"Reminders to clock-in/out\\\"],null],[20,[\\\"newProjectInfo\\\",\\\"reminder\\\"]],\\\"reminders\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"useGeolocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map\\\",null,[[\\\"canEdit\\\",\\\"locationInfo\\\",\\\"error\\\",\\\"showRadius\\\"],[true,[20,[\\\"newProjectInfo\\\"]],[20,[\\\"mapError\\\"]],true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMoveGroupDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeGroupDialog\\\"],null],[25,\\\"busy-loc\\\",[\\\"Move to Group\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-index-group-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select a group\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showAddGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],[25,\\\"busy-loc\\\",[\\\"Close add group\\\"],null],[25,\\\"busy-loc\\\",[\\\"Add new group\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"add-new-group \\\",[25,\\\"if\\\",[[20,[\\\"shouldAddGroup\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Group Name\\\"],null],false,[20,[\\\"newGroupName\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"createGroup\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Save\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"groups\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addProjectToGrpupAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[19,1,[\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"addProjectToGrpupAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Ungroup\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-save\\\",null,[[\\\"savingMessageText\\\",\\\"targetParent\\\",\\\"error\\\"],[[20,[\\\"savingMessage\\\"]],[19,0,[]],[20,[\\\"mapError\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showArchiveDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"archiveProject\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeArchiveDialog\\\"],null],[20,[\\\"archiveHeader\\\"]],[20,[\\\"archiveMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Archive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showUnarchiveDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/confirm-dialog\\\",null,[[\\\"onConfirm\\\",\\\"onCancel\\\",\\\"confirmHeader\\\",\\\"confirmMessage\\\",\\\"confirmText\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"confirmUnarchive\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelUnarchive\\\"],null],[20,[\\\"unarchiveHeader\\\"]],[20,[\\\"unarchiveMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Unarchive\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"duplicateDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDuplicate\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDuplicate\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"saveDuplicate\\\"],null],[25,\\\"busy-loc\\\",[\\\"Duplicate Project\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-project-index-duplicate-dialog\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Copy project structure from:\\\"],null],false],[0,\\\" \\\"],[6,\\\"b\\\"],[7],[1,[20,[\\\"duplicateProject\\\",\\\"title\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"label\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Name\\\"],null],[25,\\\"busy-loc\\\",[\\\"New project name:\\\"],null],[20,[\\\"duplicateTitle\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showImportDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeImportAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"projects/import-projects\\\",null,[[\\\"onComplete\\\",\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"importCompleteAction\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"cancelImportAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/project/index.hbs\" } });\n});","define(\"busy-app/templates/report\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"k1o6EMlf\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report.hbs\" } });\n});","define(\"busy-app/templates/report/activity\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"GK20CPa+\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\",\\\"fullNav\\\"],[[25,\\\"busy-loc\\\",[\\\"%@ Activity Report\\\",[20,[\\\"reportTitle\\\"]]],null],true,true,true]],{\\\"statements\\\":[[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"upgrade-banner\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"loc\\\",[\\\"Want advanced reporting?\\\"],null],false],[0,\\\" \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showUpgradeDialog\\\"]],[7],[1,[25,\\\"loc\\\",[\\\"Learn more\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-activity\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range-picker\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"start\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-range-picker\\\",null,[[\\\"large\\\",\\\"startUnix\\\",\\\"endUnix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"showPayPeriods\\\",\\\"defaultPayPeriod\\\",\\\"utc\\\",\\\"isCustom\\\",\\\"weekStart\\\",\\\"actionList\\\",\\\"format\\\",\\\"stacked\\\",\\\"restrictAfterNow\\\",\\\"onChange\\\"],[true,[20,[\\\"model\\\",\\\"start\\\"]],[20,[\\\"model\\\",\\\"end\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"model\\\",\\\"currentPeriod\\\",\\\"end\\\"]],true,false,true,[20,[\\\"model\\\",\\\"custom\\\"]],[20,[\\\"model\\\",\\\"weekStart\\\"]],[20,[\\\"dateRangeActions\\\"]],\\\"L\\\",[20,[\\\"stackedDates\\\"]],true,[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"no-picker\\\"],[7],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"start\\\"]]],[[\\\"format\\\"],[\\\"MMM D\\\"]]],false],[0,\\\" - \\\"],[1,[25,\\\"date-format\\\",[[20,[\\\"model\\\",\\\"end\\\"]]],[[\\\"format\\\"],[\\\"MMM D\\\"]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"right\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"print\\\",[25,\\\"busy-loc\\\",[\\\"Print\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"printAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"right\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[true,\\\"get_app\\\",[25,\\\"busy-loc\\\",[\\\"Export CSV\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"exportCSVAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[4,\\\"selectors/checkbox-select\\\",null,[[\\\"right\\\",\\\"large\\\",\\\"onChange\\\"],[true,true,[25,\\\"action\\\",[[19,0,[]],\\\"columnChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"totalHours\\\"],[10,\\\"checked\\\",[18,\\\"totalHours\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"regHours\\\"],[10,\\\"checked\\\",[18,\\\"regHours\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"otHours\\\"],[10,\\\"checked\\\",[18,\\\"otHours\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Hours\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"ot2Hours\\\"],[10,\\\"checked\\\",[18,\\\"ot2Hours\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"OT (x2) Hours\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewProjectExpenses\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"totalCost\\\"],[10,\\\"checked\\\",[18,\\\"totalCost\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Total Cost\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"regCost\\\"],[10,\\\"checked\\\",[18,\\\"regCost\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Reg Cost\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"otCost\\\"],[10,\\\"checked\\\",[18,\\\"otCost\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Cost\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"ot2Cost\\\"],[10,\\\"checked\\\",[18,\\\"ot2Cost\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"OT (x2) Cost\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"input\\\"],[9,\\\"type\\\",\\\"checkbox\\\"],[9,\\\"value\\\",\\\"overburden\\\"],[10,\\\"checked\\\",[18,\\\"overburden\\\"],null],[10,\\\"name\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Labor Burden\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"print-title page-show\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"org\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h6\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"cityStateString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"headerDateRange\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"report-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-report-graph\\\",[]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"table\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"thead\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"groups\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Group By\\\"],null],false],[0,\\\":\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"bc-select-menu\\\",null,[[\\\"right\\\",\\\"large\\\",\\\"onSelect\\\"],[false,true,[25,\\\"action\\\",[[19,0,[]],\\\"changeGroup\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"member-project\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"member-project\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"member\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"member\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"member-cost-code\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"member-cost-code\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"member-equipment\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"member-equipment\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"activityDateReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"member-day\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"member-day\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Date\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2) Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2) Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Burden\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"columns\\\",[25,\\\"if\\\",[[20,[\\\"isMobile\\\"]],\\\" mobile\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-select-menu\\\",null,[[\\\"right\\\",\\\"onSelect\\\"],[true,[25,\\\"action\\\",[[19,0,[]],\\\"changeGroupMobile\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"total-hours\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"total-hours\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"reg-hours\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"reg-hours\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"ot-hours\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"ot-hours\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"ot2-hours\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"ot2-hours\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2) Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewProjectExpenses\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"total-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"total-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"reg-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"reg-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"Reg Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"ot-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"ot-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5) Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"option\\\"],[9,\\\"value\\\",\\\"ot2-cost\\\"],[10,\\\"selected\\\",[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"columnName\\\"]],\\\"ot2-cost\\\"],null],true,false],null],null],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2) Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"cController\\\",\\\"model\\\",\\\"hasData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-report-data\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No Time Entries\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[9,\\\"class\\\",\\\"provided page-show page-section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered page-color\\\"],[7],[0,\\\"Provided by\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"creator page-color\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created on: \\\"],[1,[18,\\\"createdDate\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h5\\\"],[7],[0,\\\"Created by: \\\"],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"upgradeDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[12,\\\"partials/report-upgrade-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/activity.hbs\" } });\n});","define(\"busy-app/templates/report/activity/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LM1zXE+S\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasData\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"model\\\",\\\"showType\\\"]],\\\"member\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"member\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"info image border\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,6,[\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[0,\\\" \\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,6,[]]]],[7],[1,[19,6,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-report-columns\\\",[6]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"model\\\",\\\"showType\\\"]],\\\"costCode\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title split\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,5,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,5,[\\\"costCode\\\",\\\"costCode\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[25,\\\"if\\\",[[19,5,[\\\"costCode\\\",\\\"isUnassigned\\\"]],\\\"\\\",[19,5,[\\\"costCode\\\",\\\"title\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-report-columns\\\",[5]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"model\\\",\\\"showType\\\"]],\\\"equipment\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"info image square\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[19,4,[\\\"equipment\\\",\\\"equipmentThumb\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title split\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,4,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,4,[\\\"equipment\\\",\\\"equipmentName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,4,[\\\"equipment\\\",\\\"makeModel\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-report-columns\\\",[4]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"model\\\",\\\"showType\\\"]],\\\"startDate\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"startDate\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"info image border\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,3,[]]]],[7],[1,[25,\\\"date-format\\\",[[19,3,[\\\"startDate\\\"]]],[[\\\"format\\\"],[\\\"MMM D\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-report-columns\\\",[3]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"tr\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"info toggle depth-\\\",[19,1,[\\\"project\\\",\\\"depth\\\"]]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"extra\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"children\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"hover\\\",\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[false,true,\\\"remove_circle_outline\\\",[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"hover\\\",\\\"small\\\",\\\"name\\\",\\\"title\\\",\\\"onClick\\\"],[false,true,\\\"add_circle_outline\\\",[25,\\\"busy-loc\\\",[\\\"Open\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"toggleChildren\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"md-button\\\",null,[[\\\"small\\\",\\\"disabled\\\",\\\"name\\\",\\\"title\\\"],[true,true,\\\"remove\\\",[25,\\\"busy-loc\\\",[\\\"Close\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title split\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTableRow\\\",[19,1,[]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"main\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"title\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sub\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"projectNumber\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"clear-float\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"regHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalRegularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"otHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalOvertimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Cost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"ot2Hours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalDoubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"overburden\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalOverburden\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalCost\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"reportLaborBurden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-currency\\\",[[19,1,[\\\"totalTotalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"settings\\\",\\\"totalHours\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[0,\\\" -   \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"td\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTotalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/activity-project-table\\\",[1,2]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"summaryDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/summary-report\\\",null,[[\\\"onClose\\\",\\\"type\\\",\\\"model\\\",\\\"settings\\\",\\\"start\\\",\\\"end\\\",\\\"isUnassignedProject\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeDialog\\\"],null],[20,[\\\"summaryType\\\"]],[20,[\\\"summaryModel\\\"]],[20,[\\\"settings\\\"]],[20,[\\\"settings\\\",\\\"start\\\"]],[20,[\\\"settings\\\",\\\"end\\\"]],[20,[\\\"isUnassignedProject\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/activity/index.hbs\" } });\n});","define(\"busy-app/templates/report/activity/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"NSPprEr0\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-activity-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/activity/loading.hbs\" } });\n});","define(\"busy-app/templates/report/employee-list\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Xm537D4I\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-employee-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[25,\\\"busy-loc\\\",[\\\"Employee List\\\"],null],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"hideDateSelector\\\",\\\"inlinePrint\\\",\\\"hideExport\\\"],[true,true,true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-sortable-list\\\",null,[[\\\"model\\\",\\\"meta\\\"],[[20,[\\\"model\\\"]],[20,[\\\"meta\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/employee-list.hbs\" } });\n});","define(\"busy-app/templates/report/index-activity-reports-partial\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"fGWvAo3b\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Labor Activity\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"report-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"activityReport\\\",\\\"member-project\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Project Activity\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"LIMITED\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View labor activity broken down by project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"activityReport\\\",\\\"member\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee Activity\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"LIMITED\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View labor activity broken down by employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"activityReport\\\",\\\"member-cost-code\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code Activity\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"LIMITED\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View labor activity broken down by cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"activityReport\\\",\\\"member-equipment\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Equipment Activity\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"LIMITED\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View labor activity broken down by equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"activityDateReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"activityReport\\\",\\\"member-day\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Date Activity\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"activityReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"LIMITED\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"View labor activity broken down by date\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/index-activity-reports-partial.hbs\" } });\n});","define(\"busy-app/templates/report/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"3jeVca45\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Reports\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"report-container\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"showDeprecationWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"deprecation-notice\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"deprecation-notice-well well-danger\\\"],[7],[0,\\\"\\\\n            \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"deprecation-notice-well-content\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"h1\\\"],[7],[0,\\\"These reports will soon be retired!\\\"],[8],[0,\\\"\\\\n              \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"deprecation-notice-well-body\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  In the near future, busybusy will discontinue offering the Legacy Reports provided on this page as we\\\\n                  finalize the migration to our revamped web app. The exact End of Life date for these reports has not\\\\n                  yet been determined, but is expected to take place before the end of 2022.\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"The removal of these reports will not affect your data or service availability.\\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  We recommend you familiarize yourself now with our latest offerings to determine how best to obtain\\\\n                  the reporting and data you require. If you have any trouble finding the newest ways to access the kinds of\\\\n                  reporting presented here, please reach out to busybusy customer service and we'll be happy to guide\\\\n                  you.\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n          \\\"],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n      \\\"],[1,[25,\\\"charts/line-chart\\\",null,[[\\\"colors\\\",\\\"legend\\\",\\\"model\\\",\\\"dataPath\\\",\\\"labelPath\\\",\\\"dataType\\\"],[\\\"#2997A5\\\",[25,\\\"busy-loc\\\",[\\\"Hours per Pay Period\\\"],null],[20,[\\\"model\\\"]],\\\"total\\\",\\\"dateTime\\\",\\\"time\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewProjectExpenses\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Payroll\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"report-list\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"employeePayroll\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Payroll numbers by employee\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\\n              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"employeeProjectPayroll\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee Project\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                        PRO\\\\n                      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Payroll numbers by employee. Expands to show projects\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\\n              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"projectEmployeePayroll\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Project Employee\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                        PRO\\\\n                      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Payroll numbers by project. Expands to show employees\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Cards\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"report-list\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"linkTo\\\",[25,\\\"hash\\\",null,[[\\\"route\\\",\\\"logKey\\\"],[\\\"report.time-card\\\",\\\"TIME_CARDS\\\"]]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Cards\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time cards for pay period (with signature line)\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"isSignaturesEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                      \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"linkTo\\\",[25,\\\"hash\\\",null,[[\\\"route\\\",\\\"logKey\\\"],[\\\"report.time-card-approval\\\",\\\"TIME_CARD_APPROVAL\\\"]]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Card Approval\\\"],null],false],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Status of digital signatures for pay period\\\"],null],false],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"safetySignOff\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off\\\"],null],false],[0,\\\"\\\\n                      \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                        PRO\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                  \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Safety and time accuracy signatures by employee\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"signOffEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                      \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"safetySignOff\\\"],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Daily Sign-Off\\\"],null],false],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Safety and time accuracy signatures by employee\\\"],null],false],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"reactMainApp\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                      \\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"sign-in-report\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n                        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],false],[0,\\\"\\\\n                        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                          PRO\\\\n                        \\\"],[8],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Responses on clock-in\\\"],null],false],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"busySignInQuestion\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                      \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                        \\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"sign-in-report\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n                          \\\"],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Check\\\"],null],false],[0,\\\"\\\\n                        \\\"],[8],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                      \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"COVID-19 Responses on clock-in\\\"],null],false],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"linkTo\\\",[25,\\\"hash\\\",null,[[\\\"route\\\",\\\"queryParams\\\",\\\"logKey\\\"],[\\\"report.time-entries\\\",[25,\\\"hash\\\",null,[[\\\"project\\\"],[null]]],\\\"TIME_ENTRIES\\\"]]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Entries\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time entries for any date range\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"reactMainApp\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"allowBreakHoursReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                  \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                      \\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactAppFree\\\",\\\"break-hours-report\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n                        \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Break Hours\\\"],null],false],[0,\\\"\\\\n                      \\\"],[8],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                    \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Total break times for employees\\\"],null],false],[0,\\\"\\\\n                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"linkTo\\\",[25,\\\"hash\\\",null,[[\\\"route\\\",\\\"logKey\\\"],[\\\"report.time-off\\\",\\\"TIME_OFF\\\"]]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time off summary by employee\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewAllActivityReport\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[12,\\\"report/index-activity-reports-partial\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Misc.\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"report-list\\\"],[7],[0,\\\"\\\\n              \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"linkTo\\\",[25,\\\"hash\\\",null,[[\\\"route\\\",\\\"logKey\\\"],[\\\"report.employee-list\\\",\\\"EMPLOYEES_LIST\\\"]]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employees List\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n                \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Employee information\\\"],null],false],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n              \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"features\\\",\\\"reactMainApp\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"kiosk-report\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Kiosk Photos\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                          PRO\\\\n                        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                  \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Review photos taken from company kiosks\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n                  \\\"],[6,\\\"h3\\\"],[7],[0,\\\"\\\\n                    \\\"],[6,\\\"a\\\"],[10,\\\"onClick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"openReactApp\\\",\\\"daily-report\\\",[25,\\\"hash\\\",null,null]],[[\\\"bubbles\\\"],[false]]],null],[7],[0,\\\"\\\\n                      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Daily Project Reports\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showPayrollProBadge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"pro-feature-badge d-badge blue\\\"],[7],[0,\\\"\\\\n                          PRO\\\\n                        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[8],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                  \\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n                    \\\"],[1,[25,\\\"busy-loc\\\",[\\\"View daily progress reports on projects\\\"],null],false],[0,\\\"\\\\n                  \\\"],[8],[0,\\\"\\\\n                \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewAllActivityReport\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[0,\\\"          \\\"],[12,\\\"report/index-activity-reports-partial\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerCloseModal\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerPlanUpgraded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/index.hbs\" } });\n});","define(\"busy-app/templates/report/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"7MXL/2PE\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Reports\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/loading.hbs\" } });\n});","define(\"busy-app/templates/report/payroll\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/psVlcKD\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-payroll\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[20,[\\\"reportName\\\"]],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"start\\\",\\\"options\\\",\\\"columns\\\",\\\"columnLabel\\\",\\\"columDefault\\\",\\\"columnSelected\\\",\\\"dateSelected\\\",\\\"optionSelected\\\",\\\"noMargin\\\",\\\"hideExport\\\"],[[20,[\\\"start\\\"]],[20,[\\\"optionSelector\\\"]],[20,[\\\"columnArray\\\"]],\\\"title\\\",\\\"value\\\",\\\"changeColumn\\\",\\\"changeDateRange\\\",\\\"optionChange\\\",true,[20,[\\\"isFreeAccount\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"time/time-conflict/conflict-list\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"onDone\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],\\\"refreshModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-payroll-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isCSVLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerCloseModal\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"proFeatureManagerPlanUpgraded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/employee-row\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"NPMmadiy\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"col-info title image page-padding\\\",[25,\\\"if\\\",[[20,[\\\"hasProject\\\"]],\\\" project\\\"],null],[25,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]],\\\" member one\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"space\\\"],[9,\\\"class\\\",\\\"line-space\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"expansion-button page-hide\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"expandRow\\\",[20,[\\\"item\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[6,\\\"span\\\"],[7],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"image page-hide\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"item\\\",\\\"member\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"member-name\\\"],[10,\\\"title\\\",[19,0,[\\\"item\\\",\\\"member\\\",\\\"fullName\\\"]],null],[7],[1,[20,[\\\"item\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member-info-details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"member\\\",\\\"memberNumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"member-number\\\"],[10,\\\"title\\\",[19,0,[\\\"item\\\",\\\"member\\\",\\\"memberNumber\\\"]],null],[7],[0,\\\"ID: \\\"],[1,[20,[\\\"item\\\",\\\"member\\\",\\\"memberNumber\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"member-wage-info\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member-wage\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"wage\\\",\\\"wage\\\"]]],null],false],[1,[20,[\\\"item\\\",\\\"wage\\\",\\\"wageRatePer\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasMultipleWage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member-wage-multiple\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showWageHistory\\\",[20,[\\\"item\\\",\\\"member\\\"]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Multiple wage types\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Multiple wages\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-regular\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasRegular\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalRegularSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"regularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"regularSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-overtime\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasOvertime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalOvertimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"overtimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"overtimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDoubletime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-doubletime\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasDoubletime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalDoubletimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"doubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-total\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalWithChildrenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalWithChildrenSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-overburden\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"item\\\",\\\"wage\\\",\\\"wage\\\"]],[20,[\\\"item\\\",\\\"wage\\\",\\\"overburdenString\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"col-cost\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"nestedMember\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOverburdenCostWithChildren\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOverburdenCost\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[19,0,[\\\"exceptionalWageChangeWarningText\\\"]]]]],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/employee-row.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/employee-table\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"yrFZwDFh\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\",\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"hidden\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"static\\\\n\\\\t\\\\t\\\\t\\\\t\\\",[25,\\\"if\\\",[[19,1,[\\\"isTopLevel\\\"]],\\\" main\\\"],null],\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\",[25,\\\"if\\\",[[19,1,[\\\"isOpen\\\"]],\\\" open\\\"],null],\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\",[25,\\\"if\\\",[[19,1,[\\\"hideData\\\"]],\\\" hide-data\\\"],null],\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\",[25,\\\"if\\\",[[19,1,[\\\"hasChildren\\\"]],\\\"\\\",\\\" leaf-node\\\"],null],\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\",[25,\\\"if\\\",[[19,1,[\\\"hasExceptionalWageChange\\\"]],\\\" exceptional-wage-change-row\\\"],null],\\\"\\\\n\\\\t\\\\t\\\\t\\\"]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntriesAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/employee-row\\\",[1]],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[19,1,[\\\"hasChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"isOpen\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/project-table\\\",[1,3]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"hidden\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/project-table\\\",[1,2]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/employee-table.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lS99W560\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"busy-notification-bar\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"text\\\",\\\"isDismissable\\\"],[\\\"warning\\\",\\\"payroll-hasExceptionalWageChange\\\",[19,0,[\\\"exceptionalWageChangeWarningText\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"v-report-payroll-employee \\\",[25,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]],\\\"exceptional-wage-change\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"totals\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart mini\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Hours(x1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Hours(x2)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart mini\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Estimated Cost (hourly)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"estCostHourly\\\"]]],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Estimated Cost (salary)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"estCostSalary\\\"]]],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Estimated Total Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-currency\\\",[[20,[\\\"model\\\",\\\"totalCost\\\"]]],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"section\\\"],[9,\\\"class\\\",\\\"report page-margin\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"lib-expanding-report \\\",[25,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]],\\\"exceptional-wage-change\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"canOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"expand-all page-hide\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"allOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"collapseAll\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Collapse All\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text page-hide\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"expandAll\\\"]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Expand All\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"showOvertime\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"O.T. (x1.5)\\\"],null],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"if\\\",[[20,[\\\"showDoubletime\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"O.T. (x2)\\\"],null],false],[8]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Labor Burden\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Est. Cost\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"type\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/project-table\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/employee-table\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-result\\\"],[7],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Payroll data was not found for this pay period.\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"syncing\\\",\\\"start\\\",\\\"end\\\",\\\"onSync\\\"],[[20,[\\\"dirtyFlag\\\"]],[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],\\\"refreshModel\\\"]]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"time/time-entry/employee-list\\\",null,[[\\\"onClose\\\",\\\"onChanged\\\",\\\"start\\\",\\\"end\\\",\\\"member\\\",\\\"project\\\",\\\"groupByMember\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeEntryDialog\\\"],null],\\\"refreshSync\\\",[20,[\\\"timeEntryStart\\\"]],[20,[\\\"timeEntryEnd\\\"]],[20,[\\\"timeEntryMember\\\"]],[20,[\\\"timeEntryProject\\\"]],[20,[\\\"unassignedProjects\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showWageDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"employees/wage-history\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[20,[\\\"member\\\"]],\\\"closeWageDialog\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/index.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"CgTF6/P3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-payroll-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/loading.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/project-row\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"G2dXz41f\", \"block\": \"{\\\"symbols\\\":[\\\"val\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"title \\\",[20,[\\\"item\\\",\\\"depthString\\\"]]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"item\\\",\\\"depthList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"space\\\"],[9,\\\"class\\\",\\\"line-space\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"expansion-button page-hide\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"expandRow\\\",[20,[\\\"item\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[6,\\\"span\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\"],[1,[20,[\\\"item\\\",\\\"project\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasRegular\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalRegularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalRegularSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOvertimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalOvertimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showDoubletime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasDoubletime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalDoubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalDoubletimeSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"-\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"item\\\",\\\"totalSeconds\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"item\\\",\\\"wage\\\",\\\"wage\\\"]],[20,[\\\"item\\\",\\\"wage\\\",\\\"overburdenString\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"item\\\",\\\"totalOverburdenCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"hasExceptionalWageChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[19,0,[\\\"exceptionalWageChangeWarningText\\\"]]]]],[9,\\\"class\\\",\\\"warning-star\\\"],[7],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/project-row.hbs\" } });\n});","define(\"busy-app/templates/report/payroll/project-table\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"hnS623o6\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"static project\\\",[25,\\\"if\\\",[[19,1,[\\\"isTopLevel\\\"]],\\\" main\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"isOpen\\\"]],\\\" open\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"hideData\\\"]],\\\" hide-data\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"hasUnassigned\\\"]],\\\" show-total\\\"],null],[25,\\\"if\\\",[[19,1,[\\\"hasChildren\\\"]],\\\"\\\",\\\" leaf-node\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntriesAction\\\",[19,1,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/project-row\\\",[1]],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasChildren\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"isOpen\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[\\\"members\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"report/payroll/employee-table\\\",[1,2]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/payroll/project-table.hbs\" } });\n});","define(\"busy-app/templates/report/report-setup\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Zr/lYKuX\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-report-setup\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Payroll\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"report-setup-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Report Setup\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"report-setup\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"bc-validate\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"label-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Select Pay Period\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"defaultFirstOption\\\",\\\"itemLabel\\\"],[\\\"left full\\\",[20,[\\\"selectPayPeriodMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectPayPeriod\\\"],null],\\\"true\\\",\\\"dateRange\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"run-report\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"runReport\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Run Report\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Columns\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Wage Rate\\\"],null],[20,[\\\"wageColumn\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Regular Hours\\\"],null],[20,[\\\"regHoursColumn\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"OT Hours\\\"],null],[20,[\\\"overtimeHoursColumn\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"title\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Total Hours\\\"],null],[20,[\\\"totalHoursColumn\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/report-setup.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"+dgITc+W\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-safety\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[20,[\\\"reportName\\\"]],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"start\\\",\\\"hideDateSelector\\\",\\\"showDateTitle\\\",\\\"dateTitle\\\",\\\"dateSelected\\\",\\\"hideExport\\\"],[[20,[\\\"start\\\"]],[20,[\\\"hideDateSelector\\\"]],[20,[\\\"hideDateSelector\\\"]],[20,[\\\"dateTitle\\\"]],\\\"changeDateRange\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature/date-row\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"VTOwHgSs\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"item\\\",\\\"day\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"allSigned\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[1,[25,\\\"busy-loc\\\",[\\\"0\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"  \\\"],[1,[20,[\\\"item\\\",\\\"unsigned\\\"]],false],[0,\\\" \\\"],[1,[25,\\\"busy-loc\\\",[\\\"of\\\"],null],false],[0,\\\" \\\"],[1,[20,[\\\"item\\\",\\\"memberIds\\\",\\\"length\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[1,[20,[\\\"item\\\",\\\"inaccuracies\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[1,[20,[\\\"item\\\",\\\"breakIssues\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"item\\\",\\\"injuredIds\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"injuries\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"item\\\",\\\"injuries\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature/date-row.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature/date\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"fBE8g15G\", \"block\": \"{\\\"symbols\\\":[\\\"member\\\"],\\\"statements\\\":[[6,\\\"section\\\"],[9,\\\"class\\\",\\\"report page-margin\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lib-report\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"totals-box\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"notSigned\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"not signed\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"incorrectTime\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"incorrect time\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"breakIssues\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"break issues\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"injured\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"injured\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"large\\\",\\\"minimal\\\",\\\"hasImage\\\",\\\"onClick\\\",\\\"model\\\"],[true,true,true,\\\"openMemberDialog\\\",[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[12,\\\"report/safety-signature/member-row\\\",[1]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-result\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Safety signature data was not found for this pay period.\\\"],null],false],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showMemberDialog\\\"]]],null,{\\\"statements\\\":[[12,\\\"report/safety-signature/employee-dialog\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSignOffRequiredDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]],{\\\"statements\\\":[[1,[25,\\\"time/time-entry/safety-required\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeSafetyDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showSummaryDialog\\\"]]],null,{\\\"statements\\\":[[1,[25,\\\"dialogs/summary-report\\\",null,[[\\\"currentOption\\\",\\\"currentTab\\\",\\\"includeUnpaidTimeoff\\\",\\\"includeZeroTimeEntries\\\",\\\"end\\\",\\\"model\\\",\\\"settings\\\",\\\"start\\\",\\\"type\\\",\\\"onClose\\\"],[\\\"day\\\",\\\"details\\\",true,true,[20,[\\\"settings\\\",\\\"end\\\"]],[20,[\\\"summaryModel\\\"]],[20,[\\\"settings\\\"]],[20,[\\\"settings\\\",\\\"start\\\"]],\\\"member\\\",[25,\\\"action\\\",[[19,0,[]],\\\"closeSummaryDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature/date.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature/employee-dialog\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"sG3Fx18w\", \"block\": \"{\\\"symbols\\\":[\\\"sig\\\"],\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeMemberDialog\\\"],null],[25,\\\"loc\\\",[\\\"Close\\\"],null],[20,[\\\"dayTitle\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"safety-employee-dialog\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"header\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[10,\\\"style\\\",[25,\\\"bg-image\\\",[[20,[\\\"currentMember\\\",\\\"imageThumbUrl\\\"]]],null],null],[7],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[1,[20,[\\\"currentMember\\\",\\\"name\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"id\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"ID\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"currentMember\\\",\\\"memberNumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[20,[\\\"currentMember\\\",\\\"memberNumber\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"currentMember\\\",\\\"signatures\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"needsMoreSigs\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showSafetyDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sign off required\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[20,[\\\"currentMember\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"signatureRowClicked\\\",[19,1,[]]]],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"createdToday\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"submittedOnTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"submittedOnTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A (MMM. DD)\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"injuredString\\\"]],false],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"down-arrow\\\"],[7],[8],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Account\\\"],null],false],[0,\\\": \\\"],[1,[19,1,[\\\"proxyMember\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Injured\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"injuredIsNull\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"injured\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"N/A\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Correct\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"timeAccurateIsNull\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"timeAccurate\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"N/A\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Break Compliance\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"breakPolicyIsNull\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"breakPolicyFollowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Yes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"No\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"N/A\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Report submitted\\\"],null],false],[0,\\\": \\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"submittedOnTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A M/D/YY\\\"]]],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Device\\\"],null],false],[0,\\\": \\\"],[1,[19,1,[\\\"deviceType\\\"]],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text inline-link\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewTimeEntries\\\",[19,1,[\\\"startTime\\\"]]]],[7],[1,[25,\\\"loc\\\",[\\\"View time entries\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"timeAccurateReason\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time-incorrect-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Why was your time incorrect?\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\"],[[19,1,[\\\"timeAccurateReason\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"injuryDescription\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time-incorrect-header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Please describe your injury.\\\"],null],false],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\"],[[19,1,[\\\"injuryDescription\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"breakPolicyFollowedReason\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time-incorrect-header\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"breakPolicyFollowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Why didn’t you have the expected break time?\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"      \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Why didn't you take your breaks?\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\"],[[19,1,[\\\"breakPolicyFollowedReason\\\"]]]]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"signatureRequiredString\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"signature-image-container\\\"],[7],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[19,1,[\\\"signatureThumbUrl\\\"]]]]],[9,\\\"alt\\\",\\\"\\\"],[7],[8],[8],[0,\\\"\\\\n    \\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"signatureRequiredString\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button text\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"showSafetyDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Sign off required\\\"],null],false],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature/employee-dialog.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Li5QtCVS\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[6,\\\"section\\\"],[9,\\\"class\\\",\\\"report page-margin\\\"],[7],[0,\\\"\\\\n  \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"lib-report\\\"],[7],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"totals-box\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"notSigned\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"not signed\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"incorrectTime\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"incorrect time\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"breakIssues\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"break issues\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"cell quarter\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"value\\\"],[7],[1,[18,\\\"injured\\\"],false],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"injured\\\"],null],false],[8],[0,\\\"\\\\n      \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[8],[0,\\\"\\\\n    \\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n      \\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[7],[8],[0,\\\"\\\\n        \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Not Signed\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Incorrect Time\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Issues\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Injured\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"      \\\"],[8],[0,\\\"\\\\n\\\\n      \\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"groupedModel\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"groupedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"static\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openDateReport\\\",[19,1,[]]]],[7],[0,\\\"\\\\n          \\\"],[12,\\\"report/safety-signature/date-row\\\",[1]],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-result\\\"],[7],[0,\\\"\\\\n          \\\"],[6,\\\"td\\\"],[9,\\\"colspan\\\",\\\"5\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Signature data was not found for this pay period.\\\"],null],false],[8],[0,\\\"\\\\n        \\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[8],[0,\\\"\\\\n    \\\"],[8],[0,\\\"\\\\n  \\\"],[8],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature/index.hbs\" } });\n});","define(\"busy-app/templates/report/safety-signature/member-row\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"gHZcUAWv\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"member\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"timeAccuracy\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Incorrect Time\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"member\\\",\\\"incorrectTime\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"breakPolicy\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Break Issues\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"member\\\",\\\"breakPolicyFollowed\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"safetySignature\\\"]]],null,{\\\"statements\\\":[[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[20,[\\\"member\\\",\\\"isInjured\\\"]],\\\"injured\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Injured\\\"],null]]]],[7],[0,\\\"\\\\n  \\\"],[1,[20,[\\\"member\\\",\\\"injured\\\"]],false],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/safety-signature/member-row.hbs\" } });\n});","define(\"busy-app/templates/report/time-card-approval\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"WLREi7jb\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-approval\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Card Approval\\\"],null],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"hideDateSelector\\\",\\\"inlinePrint\\\",\\\"hideExport\\\",\\\"start\\\",\\\"dateSelected\\\",\\\"filterMenu\\\",\\\"filterSelected\\\"],[false,true,true,[20,[\\\"start\\\"]],\\\"changeDateRange\\\",[20,[\\\"filterMenu\\\"]],\\\"filterSelected\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isLoadingPrimary\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isLoadingPrimary\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isSelectedPayPeriodSignable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card-approval/chart\\\",null,[[\\\"modeFilterConfig\\\",\\\"isLoading\\\",\\\"selectedFilter\\\",\\\"model\\\",\\\"memberTimeDocuments\\\",\\\"filterSelected\\\"],[[20,[\\\"modeFilterConfig\\\"]],[20,[\\\"isLoading\\\"]],[20,[\\\"selectedFilter\\\"]],[20,[\\\"model\\\"]],[20,[\\\"memberTimeDocuments\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"filterSelected\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"employee-list signature-mode-\\\",[20,[\\\"signature\\\",\\\"signatureMode\\\"]]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"isLoading\\\",\\\"hasImage\\\",\\\"onClick\\\",\\\"model\\\"],[[20,[\\\"isLoadingPrimary\\\"]],true,\\\"teamMemberClicked\\\",[20,[\\\"sortedFilteredModel\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"employee-name\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedSort\\\"]],\\\"lastFirst\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"lastName\\\"]],[19,1,[\\\"lastName\\\"]],\\\"-\\\"],null],false],[0,\\\",\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"firstName\\\"]],[19,1,[\\\"firstName\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"if\\\",[[19,1,[\\\"fullName\\\"]],[19,1,[\\\"fullName\\\"]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"isSignatureModeBase\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card-approval/signature-status\\\",null,[[\\\"title\\\",\\\"isLoading\\\",\\\"memberId\\\",\\\"hasNoSeconds\\\",\\\"hasValidSignature\\\",\\\"needsSignatureResign\\\",\\\"signature\\\"],[\\\"Status\\\",[20,[\\\"isLoadingMemberTimeDocuments\\\"]],[19,1,[\\\"id\\\"]],[19,1,[\\\"payPeriod\\\",\\\"hasNoSeconds\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"hasValidSelfSignature\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"needsSelfSignatureResign\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"selfSignature\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signature\\\",\\\"isSignatureModeSupervisor\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card-approval/signature-status\\\",null,[[\\\"title\\\",\\\"isLoading\\\",\\\"memberId\\\",\\\"hasNoSeconds\\\",\\\"hasValidSignature\\\",\\\"needsSignatureResign\\\",\\\"signature\\\"],[\\\"Supervisor Approval\\\",[20,[\\\"isLoadingMemberTimeDocuments\\\"]],[19,1,[\\\"id\\\"]],[19,1,[\\\"payPeriod\\\",\\\"hasNoSeconds\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"hasValidAuthoritativeSignature\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"needsBothSignatureResign\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"authoritativeSignature\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card-approval/signature-status\\\",null,[[\\\"title\\\",\\\"isLoading\\\",\\\"memberId\\\",\\\"hasNoSeconds\\\",\\\"hasValidSignature\\\",\\\"needsSignatureResign\\\",\\\"signature\\\"],[\\\"Employee Approval\\\",[20,[\\\"isLoadingMemberTimeDocuments\\\"]],[19,1,[\\\"id\\\"]],[19,1,[\\\"payPeriod\\\",\\\"hasNoSeconds\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"hasValidSelfSignature\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"needsBothSignatureResign\\\"]],[19,1,[\\\"memberTimeDocument\\\",\\\"selfSignature\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"report/time-card-approval/lock-date\\\",null,[[\\\"isLoading\\\",\\\"effectiveDate\\\"],[[20,[\\\"isLoadingMemberLocks\\\"]],[19,1,[\\\"memberLock\\\",\\\"effectiveDate\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSelectedPayPeriodTooOld\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This pay period occurred before digital signatures were enabled (%@)\\\",[20,[\\\"signatureDateFormatted\\\"]]],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isSelectedPayPeriodTooNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"This pay period is still open. Signature status will appear here after the pay period ends.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay period is invalid\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-card-approval.hbs\" } });\n});","define(\"busy-app/templates/report/time-card\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"J0SZF2Xk\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-print-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"v-report-time-card\\\",[25,\\\"if\\\",[[20,[\\\"isCondensed\\\"]],\\\" condensed\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[20,[\\\"reportTitle\\\"]],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"sortOrder\\\",\\\"options\\\",\\\"printOptions\\\",\\\"dateSelected\\\",\\\"printSelected\\\",\\\"optionSelected\\\",\\\"onSort\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"model\\\",\\\"sort_order\\\"]],[20,[\\\"optionSelector\\\"]],[20,[\\\"printSelector\\\"]],\\\"changeDateRange\\\",\\\"printChanged\\\",\\\"optionChange\\\",\\\"changeSort\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/conflict-list\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"project\\\",\\\"onDone\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"model\\\",\\\"project\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[\\\"proFeatureManagerCloseModal\\\",\\\"proFeatureManagerPlanUpgraded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-card.hbs\" } });\n});","define(\"busy-app/templates/report/time-card/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"LH3y2YW0\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-index\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-cards\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"member-time-card\\\",[25,\\\"if\\\",[[19,2,[\\\"days\\\",\\\"length\\\"]],\\\"\\\",\\\" null-time\\\"],null],[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,2,[\\\"model\\\"]]],null],\\\"\\\",\\\" no-click\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/time-entry-report\\\",[1,2]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"page-break-after\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No time cards for this date range were found.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"totals\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time Summary\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"totalPTOSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularHoursWorked\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Paid Time Off\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalPTOSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeEntryEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemSaved\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeOffEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editTimeOffEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemSaved\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-card/index.hbs\" } });\n});","define(\"busy-app/templates/report/time-card/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"bec+gs9C\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-card/loading.hbs\" } });\n});","define(\"busy-app/templates/report/time-entries\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"m7MLOKl3\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-print-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card time-entries\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[20,[\\\"reportTitle\\\"]],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"sortOrder\\\",\\\"isRangeSelector\\\",\\\"options\\\",\\\"dateSelected\\\",\\\"printContainer\\\",\\\"optionSelected\\\",\\\"onSort\\\",\\\"printContainer\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"model\\\",\\\"sort_order\\\"]],true,[20,[\\\"optionSelector\\\"]],\\\"changeDateRange\\\",\\\".v-report-time-card\\\",\\\"optionChange\\\",\\\"changeSort\\\",\\\".v-time-card-print-container\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"component\\\",[[20,[\\\"time\\\",\\\"time-conflict\\\",\\\"conflict-list\\\"]]],[[\\\"start\\\",\\\"end\\\",\\\"project\\\",\\\"onDone\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"model\\\",\\\"project\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"proFeatureManager\\\",\\\"isModalVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"dialogs/pro-feature-upgrade\\\",null,[[\\\"onClose\\\",\\\"onPlanUpgraded\\\"],[\\\"proFeatureManagerCloseModal\\\",\\\"proFeatureManagerPlanUpgraded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-entries.hbs\" } });\n});","define(\"busy-app/templates/report/time-entries/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"YzYm+cxI\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"model\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-index\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-cards\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[19,1,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"member-time-card entries\\\",[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[19,2,[\\\"model\\\"]]],null],\\\"\\\",\\\" no-click\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[12,\\\"partials/time-entry-report\\\",[1,2]],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"page-break-after\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-entries\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No time cards for this date range were found.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"totals\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time Summary\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Hours\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"totalPTOSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Time Worked\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"regularHoursWorked\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"subset\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"- \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Paid Time Off\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalPTOSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x1.5)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"OT (x2)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeEntryEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeEditDialog\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editEntry\\\"]],\\\"closeEditDialog\\\",\\\"itemDeleted\\\",\\\"itemSaved\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeOffEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[\\\"closeEditDialog\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editTimeOffEntry\\\"]],\\\"closeEditDialog\\\",\\\"itemDeleted\\\",\\\"itemSaved\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-entries/index.hbs\" } });\n});","define(\"busy-app/templates/report/time-entries/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"lYczDEKB\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-entries/loading.hbs\" } });\n});","define(\"busy-app/templates/report/time-off\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"k2ejsRf5\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-off-print-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-off\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off\\\"],null],true,true]],{\\\"statements\\\":[[4,\\\"busy-report-header\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"maxDate\\\",\\\"isRangeSelector\\\",\\\"hideExport\\\",\\\"options\\\",\\\"dateSelected\\\",\\\"optionSelected\\\",\\\"printContainer\\\"],[[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[20,[\\\"maxDate\\\"]],true,true,[20,[\\\"optionSelector\\\"]],\\\"changeDateRange\\\",\\\"optionChange\\\",\\\".v-time-off-print-container\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCSVLoading\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-off.hbs\" } });\n});","define(\"busy-app/templates/report/time-off/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"63Rpa1R/\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"entry\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-off-index\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Time Off Report\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateRangeString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasContent\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"class\\\",\\\"titleName\\\"],[\\\"page-color\\\",\\\"Summary\\\"]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"summary\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"row\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Paid Time Off\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"%@ Hours\\\",[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalPaidTime\\\"]]],[[\\\"padHours\\\"],[true]]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Unpaid Time Off\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"%@ Days\\\",[20,[\\\"model\\\",\\\"totalDaysUnpaid\\\"]]],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"bc-list\\\",null,[[\\\"model\\\"],[[19,1,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"member-name\\\"],[10,\\\"title\\\",[26,[[19,1,[\\\"member\\\",\\\"fullName\\\"]]]]],[7],[1,[19,2,[\\\"dateStringReport\\\"]],false],[1,[25,\\\"if\\\",[[19,2,[\\\"isFuture\\\"]],\\\" - (Upcoming)\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"paid\\\"]],\\\"paid\\\",\\\"unpaid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Type\\\"],null]]]],[7],[1,[19,2,[\\\"getType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"paid\\\"]],\\\"paid\\\",\\\"unpaid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Amount\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,2,[\\\"paid\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[1,[25,\\\"busy-loc\\\",[\\\"%@ Hrs\\\",[25,\\\"format-hours\\\",[[19,2,[\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\"],[1,[25,\\\"busy-loc\\\",[\\\"Unpaid\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[[25,\\\"if\\\",[[19,2,[\\\"paid\\\"]],\\\"paid\\\",\\\"unpaid\\\"],null]]]],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Submitted by\\\"],null]]]],[7],[1,[19,2,[\\\"submittedBy\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Description\\\"],null]]]],[7],[1,[19,2,[\\\"description\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total-hours\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"%@ Hrs Paid\\\",[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]]],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total-days\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"%@ Days Unpaid\\\",[19,1,[\\\"totalDaysUnpaid\\\"]]],null]]]],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"provided-by\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"powered\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Provided by: \\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"busybusylogodark\\\"],[7],[6,\\\"img\\\"],[9,\\\"src\\\",\\\"/images/_general/busybusylogodark.png\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"created-on\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Created on:\\\"],null],false],[0,\\\" \\\"],[1,[18,\\\"createdOn\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"created-by\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Created by:\\\"],null],false],[0,\\\" \\\"],[1,[18,\\\"createdBy\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"no-results\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No time off entries found for this date range.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-off/index.hbs\" } });\n});","define(\"busy-app/templates/report/time-off/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"XYi2AI49\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-loading\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"busy-save-message\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/report/time-off/loading.hbs\" } });\n});","define(\"busy-app/templates/reset\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"O2+BmT67\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-reset\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"auth-transition logo-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"logo\\\"],[9,\\\"href\\\",\\\"#\\\"],[7],[0,\\\"busy\\\"],[6,\\\"span\\\"],[7],[0,\\\"busy\\\"],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Forgot Your Password?\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"next-step \\\",[25,\\\"if\\\",[[20,[\\\"nextMessage\\\"]],\\\"active\\\"],null],\\\" \\\",[25,\\\"if\\\",[[20,[\\\"successMessage\\\"]],\\\"success\\\",\\\"error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"nextMessage\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"placeholder\\\",\\\"showLabel\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"disabled\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Enter your email\\\"],null],false,1,\\\"resetPassword\\\",[20,[\\\"isSubmitting\\\"]],[20,[\\\"email\\\"]],\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"item\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"button\\\"],[9,\\\"tabindex\\\",\\\"2\\\"],[10,\\\"disabled\\\",[26,[[25,\\\"if\\\",[[20,[\\\"isSubmitting\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"resetPassword\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"link-to\\\",[\\\"login\\\"],null,{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Nevermind, I remember my password.\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/reset.hbs\" } });\n});","define(\"busy-app/templates/scheduling\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"KRrxA4IN\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\",\\\"fullWidth\\\",\\\"fullNav\\\"],[[25,\\\"busy-loc\\\",[\\\"Scheduling\\\"],null],false,true,true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-scheduling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range-picker\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"start\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-range-picker\\\",null,[[\\\"large\\\",\\\"startUnix\\\",\\\"endUnix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"isCustom\\\",\\\"__actionList\\\",\\\"allowCustom\\\",\\\"format\\\",\\\"restrictAfterNow\\\",\\\"onChange\\\"],[true,[20,[\\\"model\\\",\\\"start\\\"]],[20,[\\\"model\\\",\\\"end\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],true,[20,[\\\"model\\\",\\\"custom\\\"]],[20,[\\\"mobileDateRangeActions\\\"]],false,\\\"L\\\",false,[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"ember-date-range-picker\\\",null,[[\\\"large\\\",\\\"startUnix\\\",\\\"endUnix\\\",\\\"minDate\\\",\\\"maxDate\\\",\\\"utc\\\",\\\"showPayPeriods\\\",\\\"defaultPayPeriod\\\",\\\"isCustom\\\",\\\"weekStart\\\",\\\"__actionList\\\",\\\"defaultAction\\\",\\\"allowCustom\\\",\\\"format\\\",\\\"restrictAfterNow\\\",\\\"onChange\\\"],[true,[20,[\\\"model\\\",\\\"start\\\"]],[20,[\\\"model\\\",\\\"end\\\"]],[20,[\\\"minDate\\\"]],[20,[\\\"maxDate\\\"]],true,true,false,[20,[\\\"model\\\",\\\"custom\\\"]],[20,[\\\"model\\\",\\\"weekStart\\\"]],[20,[\\\"dateRangeActions\\\"]],[20,[\\\"selected\\\"]],false,\\\"L\\\",false,[25,\\\"action\\\",[[19,0,[]],\\\"dateChange\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,0,[\\\"allowGroupFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"group-filter\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-select-create\\\",null,[[\\\"class\\\",\\\"iconName\\\",\\\"itemLabel\\\",\\\"small\\\",\\\"showEdit\\\",\\\"model\\\",\\\"defaultList\\\",\\\"onSelect\\\"],[\\\"select-action group-menu\\\",\\\"filter_list\\\",\\\"groupName\\\",true,false,[20,[\\\"groupFilterOptions\\\"]],[20,[\\\"groupFilterDefaultOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"onSelectGroupFilter\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[20,[\\\"showScheduleButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"d-button-group\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"split-selector\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"split-select-button d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"scheduleAction\\\",\\\"work\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Schedule Work\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"right\\\",\\\"large\\\",\\\"model\\\",\\\"highlightSlected\\\",\\\"itemLabel\\\",\\\"onSelect\\\"],[\\\"split-select-menu\\\",false,false,[20,[\\\"scheduleOptions\\\"]],false,\\\"value\\\",[25,\\\"action\\\",[[19,0,[]],\\\"scheduleAction\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"applied-filters\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isGroupFilterApplied\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue applied-filter\\\"],[10,\\\"onclick\\\",[25,\\\"action\\\",[[19,0,[]],\\\"clearGroupFilter\\\"],null],null],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"label\\\"],[7],[1,[20,[\\\"selectedGroupFilter\\\",\\\"groupName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"close material-icons\\\"],[7],[0,\\\"close\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scheduling\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[25,\\\"window-resize\\\",null,[[\\\"onChange\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"resizeHandler\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeAddDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"add-edit-scheduling\\\",null,[[\\\"isAdd\\\",\\\"isBreak\\\",\\\"startDate\\\",\\\"afterSave\\\",\\\"onClose\\\"],[true,[20,[\\\"isBreak\\\"]],[20,[\\\"currentDay\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addScheduleSaved\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeAddDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/scheduling.hbs\" } });\n});","define(\"busy-app/templates/scheduling/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"eEuM+DRF\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"day\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"v-scheduling-index\\\",[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"data\\\",\\\"isMobile\\\"]],\\\" mobile-view\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date-list\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"date-list-scroll\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"days\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"date\\\",[25,\\\"if\\\",[[19,2,[\\\"selected\\\"]],\\\" active\\\"],null],[25,\\\"if\\\",[[19,2,[\\\"today\\\"]],\\\" today\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],\\\"selectDay\\\",[19,2,[]]]],[7],[1,[19,2,[\\\"day\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scheduled-items-scroll\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scheduled-items\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"scheduling-items-list\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"selectedDay\\\",\\\"reminders\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[20,[\\\"selectedDay\\\",\\\"reminders\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"schedule-card \\\",[25,\\\"if\\\",[[19,1,[\\\"isBreak\\\"]],\\\"break\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"title\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[1,[19,1,[\\\"startTimeFormatted\\\"]],false],[8],[0,\\\" \\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"actions\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"selectors/list-select\\\",null,[[\\\"small\\\",\\\"selector\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\"],[true,true,[20,[\\\"scheduleOptions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"scheduleOptionAction\\\",[19,1,[]]],null],\\\"value\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"information\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"range\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedDay\\\",\\\"start\\\"]],[19,1,[\\\"startDayTime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"startTimeFormatted\\\"]],false],[0,\\\" \\\"],[1,[19,1,[\\\"startDay\\\"]],false],[0,\\\" - \\\"],[1,[19,1,[\\\"endTimeFormatted\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[25,\\\"is-equal\\\",[[20,[\\\"selectedDay\\\",\\\"start\\\"]],[19,1,[\\\"endDayTime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"startTimeFormatted\\\"]],false],[0,\\\" - \\\"],[1,[19,1,[\\\"endTimeFormatted\\\"]],false],[0,\\\" \\\"],[1,[19,1,[\\\"endDay\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"startTimeFormatted\\\"]],false],[0,\\\" - \\\"],[1,[19,1,[\\\"endTimeFormatted\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"details\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[19,1,[\\\"isBreak\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"project\\\",\\\"fullTitle\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No project\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No cost code\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"equipment\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[19,1,[\\\"typeFormatted\\\"]],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-image-container\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"employee-select-container\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"scheduleLinks\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"employee-selector\\\",null,[[\\\"model\\\",\\\"requireMembers\\\",\\\"allowCancel\\\",\\\"accessRequired\\\",\\\"onDone\\\"],[[25,\\\"map-by\\\",[[19,1,[\\\"scheduleLinks\\\"]],\\\"member\\\"],null],true,true,[20,[\\\"employeeSelectorPermissions\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"addEmployees\\\",[19,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"icons\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"location-icon\\\",[25,\\\"unless\\\",[[19,1,[\\\"project\\\",\\\"projectInfo\\\",\\\"hasLocation\\\"]],\\\" hidden\\\"],null]]]],[3,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,1,[\\\"showLocationDialog\\\"]]],null],true]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"gps_fixed\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"instructions-icon\\\",[25,\\\"unless\\\",[[19,1,[\\\"hasInstructions\\\"]],\\\" hidden\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[3,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,1,[\\\"showInstructionsDialog\\\"]]],null],true]],[7],[0,\\\"chat\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showInstructionsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,1,[\\\"showInstructionsDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"cancelText\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,1,[\\\"showInstructionsDialog\\\"]]],null],false],null],[25,\\\"busy-loc\\\",[\\\"Close\\\"],null],[25,\\\"busy-loc\\\",[\\\"Instructions\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-scheduling-reminder-instructions\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"textarea\\\"],[9,\\\"readonly\\\",\\\"true\\\"],[10,\\\"rows\\\",[26,[[19,1,[\\\"instructionsRows\\\"]]]]],[7],[1,[19,1,[\\\"instructions\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"showLocationDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],[25,\\\"mut\\\",[[19,1,[\\\"showLocationDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"headerTitle\\\"],[[25,\\\"busy-loc\\\",[\\\"Location\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-scheduling-reminder-map\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map\\\",null,[[\\\"locationInfo\\\",\\\"showRadius\\\",\\\"mapInit\\\"],[[19,1,[\\\"project\\\",\\\"projectInfo\\\"]],true,[20,[\\\"mapInit\\\"]]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"no-items\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"i\\\"],[9,\\\"class\\\",\\\"material-icons\\\"],[7],[0,\\\"inbox\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"description\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No work scheduled\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"clear\\\"],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"add-edit-scheduling\\\",null,[[\\\"isCopy\\\",\\\"isEdit\\\",\\\"reminder\\\",\\\"startDate\\\",\\\"afterSave\\\",\\\"onClose\\\"],[[20,[\\\"isCopy\\\"]],[20,[\\\"isEdit\\\"]],[20,[\\\"actionModel\\\"]],[25,\\\"if\\\",[[20,[\\\"isEdit\\\"]],[20,[\\\"actionModel\\\",\\\"startTime\\\"]],[20,[\\\"selectedDay\\\",\\\"start\\\"]]],null],[25,\\\"action\\\",[[19,0,[]],\\\"editCopySaved\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isDelete\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[25,\\\"dialogs/delete-dialog\\\",null,[[\\\"deleteType\\\",\\\"onConfirm\\\",\\\"onCancel\\\"],[[25,\\\"busy-loc\\\",[\\\"this reminder\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"confirmDelete\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"closeDeleteDialog\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/scheduling/index.hbs\" } });\n});","define(\"busy-app/templates/scheduling/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"QF2wNmJe\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-scheduling-index\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\"],[true,true]]],false],[0,\\\"\\\\n\\\"],[8]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/scheduling/loading.hbs\" } });\n});","define(\"busy-app/templates/signup\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"t/U7tupW\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-signup table\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"tbody\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"table-row main-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"nav table-col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"logo\\\"],[7],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"busybusylogo extend\\\"],[7],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Setup\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[10,\\\"class\\\",[26,[\\\"index\\\",[25,\\\"if\\\",[[20,[\\\"page1\\\"]],\\\" active\\\"],null],[25,\\\"if\\\",[[20,[\\\"pastPage1\\\"]],\\\" c-icon check-icon\\\"],null]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 1. Account Information\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[10,\\\"class\\\",[26,[\\\"index\\\",[25,\\\"if\\\",[[20,[\\\"page2\\\"]],\\\" active\\\"],null],[25,\\\"if\\\",[[20,[\\\"pastPage2\\\"]],\\\" c-icon check-icon\\\"],null]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 2. Company Information\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[10,\\\"class\\\",[26,[\\\"index\\\",[25,\\\"if\\\",[[20,[\\\"page3\\\"]],\\\" active\\\"],null],[25,\\\"if\\\",[[20,[\\\"pastPage3\\\"]],\\\" c-icon check-icon\\\"],null]]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Step 3. Payroll Settings\\\"],null],false],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Questions?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Call us at 1-855-287-9287\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"content table-col\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[\\\"page \\\",[25,\\\"if\\\",[[20,[\\\"page1\\\"]],\\\"show\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"form\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Account Information\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"maxlength\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"First Name\\\"],null],\\\".+\\\",\\\"given-name\\\",true,[20,[\\\"isFirstNameInvalid\\\"]],[20,[\\\"invalidFirstName\\\"]],1,\\\"nextAction\\\",\\\"64\\\",[20,[\\\"firstName\\\"]],\\\"first-name\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"maxlength\\\",\\\"value\\\",\\\"class\\\"],[[25,\\\"busy-loc\\\",[\\\"Last Name\\\"],null],\\\".+\\\",\\\"family-name\\\",true,[20,[\\\"isLastNameInvalid\\\"]],[20,[\\\"invalidLastName\\\"]],2,\\\"nextAction\\\",\\\"64\\\",[20,[\\\"lastName\\\"]],\\\"last-name\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"type\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],\\\"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\\\\\.[a-zA-Z0-9-.]+$\\\",\\\"email\\\",\\\"email\\\",true,[20,[\\\"isEmailInvalid\\\"]],[20,[\\\"invalidEmail\\\"]],3,\\\"nextAction\\\",[20,[\\\"email\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"phoneNumberInOnboarding\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"onBlur\\\",\\\"type\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Mobile Phone Number\\\"],null],\\\".{8,}\\\",\\\"validatePhoneAction\\\",\\\"tel\\\",\\\"tel\\\",true,[20,[\\\"isPhoneInvalid\\\"]],[20,[\\\"invalidPhone\\\"]],4,\\\"nextAction\\\",[20,[\\\"phone\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onBlur\\\",\\\"onSubmit\\\",\\\"maxlength\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Username\\\"],null],\\\"^\\\\\\\\S{6}\\\\\\\\S*$\\\",\\\"username\\\",true,[20,[\\\"isUsernameInvalid\\\"]],[20,[\\\"invalidUsername\\\"]],5,\\\"verifyUserName\\\",\\\"submitUsername\\\",\\\"256\\\",[20,[\\\"username\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"validateExpression\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"type\\\",\\\"onSubmit\\\",\\\"maxlength\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],\\\"^(?=.*[0-9])(?=.*[a-zA-Z])(\\\\\\\\w|[!@#$%^&*?_~-]).{5,}$\\\",\\\"new-password\\\",true,[20,[\\\"isPassInvalid\\\"]],[20,[\\\"invalidPass\\\"]],6,\\\"password\\\",\\\"nextAction\\\",\\\"256\\\",[20,[\\\"password\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"onBlur\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"type\\\",\\\"onSubmit\\\",\\\"maxlength\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Confirm Password\\\"],null],\\\"validatePasswordMatch\\\",\\\"new-password\\\",true,[20,[\\\"isPassMatchInvalid\\\"]],[20,[\\\"invalidPassMatch\\\"]],7,\\\"password\\\",\\\"nextAction\\\",\\\"256\\\",[20,[\\\"passwordMatch\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"validate-field terms-conditions\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-checkbox\\\",null,[[\\\"value\\\",\\\"tabindex\\\"],[[20,[\\\"terms\\\"]],8]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"I agree to the \\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://busybusy.com/user-agreement/\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"terms & conditions\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tand\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"href\\\",\\\"https://busybusy.com/privacy/\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"privacy policy\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"class\\\",\\\"onSubmit\\\",\\\"idx\\\",\\\"tabindex\\\"],[\\\"blue\\\",[25,\\\"action\\\",[[19,0,[]],\\\"nextAction\\\"],null],2,9]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Next\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"onSubmit\\\",\\\"tabindex\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelAction\\\"],null],10]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Cancel\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"errorbanner \\\",[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"errorMessage\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[\\\"page \\\",[25,\\\"if\\\",[[20,[\\\"page2\\\"]],\\\"show\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"form\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"autocomplete\\\",\\\"required\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"tabindex\\\",\\\"onSubmit\\\",\\\"value\\\"],[[25,\\\"busy-loc\\\",[\\\"Company Name\\\"],null],\\\"organization\\\",true,[20,[\\\"isCompanyNameInvalid\\\"]],[20,[\\\"invalidCompanyName\\\"]],1,\\\"nextAction\\\",[20,[\\\"companyName\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Company Size\\\"],null],false],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"companySizeSelector\\\"]],\\\"selectCompanySize\\\",\\\"value\\\",2]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"isCompanySizeInvalid\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"invalidCompanySize\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Trade\\\"],null],false],[0,\\\"*\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"tradeSelector\\\"]],\\\"selectTrade\\\",\\\"label\\\",3]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"isTradeInvalid\\\"]],\\\"active\\\"],null]]]],[7],[1,[18,\\\"invalidTrade\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"class\\\",\\\"onSubmit\\\",\\\"idx\\\",\\\"tabindex\\\"],[\\\"blue\\\",\\\"nextAction\\\",4,4]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Next\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"onSubmit\\\",\\\"idx\\\",\\\"tabindex\\\"],[\\\"backAction\\\",2,5]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Back\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"errorbanner \\\",[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"errorMessage\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[\\\"page \\\",[25,\\\"if\\\",[[20,[\\\"page3\\\"]],\\\"show\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"container\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"form\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Pay Period Settings\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"How often do you process payroll?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"payPeriodSelect\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectPayPeriodAction\\\"],null],\\\"value\\\",1]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isWeekly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What day does your pay period begin?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"weekSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDayOne\\\"],null],\\\"value\\\",2]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isBiWeekly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What day does your pay period begin?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"weekSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectBiWeekDay\\\"],null],\\\"value\\\",2]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"hasBiWeekDay\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Which day was or will be your next pay period?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"biWeekSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDayOne\\\"],null],\\\"value\\\",3]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSemiMonthly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What days do your pay periods begin?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"split\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[[20,[\\\"monthSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDayOne\\\"],null],\\\"value\\\",2]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"and\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[[20,[\\\"monthSelector2\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDayTwo\\\"],null],\\\"value\\\",3]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isMonthly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"What day does your pay period begin?\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"monthSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectDayOne\\\"],null],\\\"value\\\",2]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"form\\\"],[9,\\\"autocomplete\\\",\\\"off\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime Settings\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"form-item large\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"When does your work week begin? (e.g. overtime week)\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"info\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\",\\\"direction\\\",\\\"multiline\\\",\\\"onClick\\\",\\\"active\\\"],[[20,[\\\"dolInfo\\\"]],\\\"above\\\",true,\\\"toggleTooltip\\\",[20,[\\\"tooltipIsOpen\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon info-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"tabindex\\\"],[\\\"full\\\",[20,[\\\"overtimeWeekSelector\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"overtimeChange\\\"],null],\\\"value\\\",1]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"class\\\",\\\"onSubmit\\\",\\\"tabindex\\\",\\\"disabled\\\"],[\\\"blue\\\",\\\"signupAction\\\",2,[20,[\\\"isCreatingAccount\\\"]]]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Finish\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"onSubmit\\\",\\\"idx\\\",\\\"tabindex\\\"],[\\\"backAction\\\",1,6]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Back\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"errorbanner \\\",[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\"active\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[18,\\\"errorMessage\\\"],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"isCreatingAccount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/signup.hbs\" } });\n});","define(\"busy-app/templates/ticket\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Y/wYeaXI\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isRedirect\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\tRedirecting...\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-ticket\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"hideMenu\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"section\\\"],[10,\\\"class\\\",[26,[\\\"ticket-section \\\",[25,\\\"if\\\",[[20,[\\\"isSuccess\\\"]],\\\"\\\",\\\"pending\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isVerifyEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"blue\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Thank You\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your email has been verified!\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isResetPassword\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your password has been reset!\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isUnsubscribe\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"center-ticket success\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Your account has been unsubscribed.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"You won't receive any further reports.\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"loading\\\",[25,\\\"if\\\",[[20,[\\\"isSuccess\\\"]],\\\"\\\",\\\" pending\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isVerifyEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"center-ticket\\\",[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\" error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\",\\\"minimal\\\"],[[25,\\\"if\\\",[[20,[\\\"isSuccess\\\"]],false,[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],false,true],null]],null],false,true]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"errorDescription\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Validating Please Wait...\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isUnsubscribe\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"center-ticket\\\",[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],\\\" error\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\",\\\"fixed\\\",\\\"minimal\\\"],[[25,\\\"if\\\",[[20,[\\\"isSuccess\\\"]],false,[25,\\\"if\\\",[[20,[\\\"errorMessage\\\"]],false,true],null]],null],false,true]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[18,\\\"errorDescription\\\"],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Please wait while your account is unsubscribed...\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isResetPassword\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"password-container\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[9,\\\"class\\\",\\\"error\\\"],[7],[0,\\\"Redirecting\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isInvitaion\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"invite-step-one\\\",[25,\\\"if\\\",[[20,[\\\"inviteNextStep\\\"]],\\\"\\\",\\\" show\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"invite-container\\\"],[7],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"label\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"placeholder\\\",\\\"value\\\",\\\"onSubmit\\\",\\\"onBlur\\\",\\\"tabindex\\\",\\\"maxlength\\\"],[\\\"password\\\",[25,\\\"busy-loc\\\",[\\\"Set Password\\\"],null],[20,[\\\"isInvalid\\\"]],[20,[\\\"errorMessage\\\"]],[25,\\\"busy-loc\\\",[\\\"Password\\\"],null],[20,[\\\"invitePassword\\\"]],\\\"invitePasswordAction\\\",\\\"validatePasswordAction\\\",\\\"1\\\",\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"type\\\",\\\"showLabel\\\",\\\"placeholder\\\",\\\"isInvalid\\\",\\\"invalidError\\\",\\\"value\\\",\\\"onSubmit\\\",\\\"onBlur\\\",\\\"tabindex\\\",\\\"maxlength\\\"],[\\\"password\\\",false,\\\"Re-type Password\\\",[20,[\\\"isInvalidMatch\\\"]],[20,[\\\"errorMatchMessage\\\"]],[20,[\\\"invitePasswordCheck\\\"]],\\\"invitePasswordAction\\\",\\\"validatePasswordAction\\\",\\\"2\\\",\\\"256\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Remember your password! You'll need it to log into busybusy.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[4,\\\"d-button\\\",null,[[\\\"class\\\",\\\"onSubmit\\\",\\\"tabindex\\\"],[\\\"blue\\\",\\\"invitePasswordAction\\\",\\\"3\\\"]],{\\\"statements\\\":[[1,[25,\\\"busy-loc\\\",[\\\"Submit\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"invite-step-two\\\",[25,\\\"if\\\",[[20,[\\\"inviteNextStep\\\"]],\\\" show\\\",\\\"\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Now click one of the store links below to download the app on your phone.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button app-store\\\"],[9,\\\"href\\\",\\\"https://itunes.apple.com/us/app/busybusy-time-tracking/id990495923?mt=8\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button play-store\\\"],[9,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=com.busyllc.busybusy\\\"],[9,\\\"target\\\",\\\"_blank\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"footer\\\"],[7],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/ticket.hbs\" } });\n});","define(\"busy-app/templates/time-card\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"AoowcCvY\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"liquid-outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card.hbs\" } });\n});","define(\"busy-app/templates/time-card/full-report\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"n2jh81L/\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Full Report\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/full-report.hbs\" } });\n});","define(\"busy-app/templates/time-card/full-report/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"zmEM3fi6\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"v-time-card-full-report\\\",[25,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]],\\\" v-time-card-full-report-signatures\\\"],null],[25,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null],\\\"\\\",\\\" no-click\\\"],null]]]],[7],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"isSignable\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/full-report/signature-notification-bar\\\",null,[[\\\"isTimecardMine\\\",\\\"isSupervisor\\\",\\\"memberTimeDocument\\\",\\\"payPeriod\\\"],[[20,[\\\"isTimecardMine\\\"]],[20,[\\\"isSupervisor\\\"]],[20,[\\\"model\\\",\\\"memberTimeDocument\\\"]],[20,[\\\"payPeriod\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"full-report-container page-padding\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"full-report-header page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"member\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[9,\\\"class\\\",\\\"grey\\\"],[7],[1,[18,\\\"headerDateRange\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"org\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"image\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"img\\\"],[10,\\\"src\\\",[26,[[25,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],[20,[\\\"auth\\\",\\\"organization\\\",\\\"imageThumbUrl\\\"]],\\\"/images/imageplaceholder.png\\\"],null]]]],[7],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organization\\\",\\\"organizationName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"address1\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"auth\\\",\\\"organizationInfo\\\",\\\"cityStateString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"print page-hide\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"sortEntries\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"if\\\",[[25,\\\"is-equal\\\",[[20,[\\\"sort\\\"]],\\\"desc\\\"],null],[25,\\\"busy-loc\\\",[\\\"Sort asc\\\"],null],[25,\\\"busy-loc\\\",[\\\"Sort desc\\\"],null]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button blue\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"printReport\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Print Report\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\t\\\\t\\\"],[12,\\\"partials/time-entry-report\\\",[]],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"signatures\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"syncing\\\",\\\"memberId\\\",\\\"start\\\",\\\"end\\\",\\\"message\\\",\\\"onSync\\\"],[[20,[\\\"dirtyFlag\\\"]],[20,[\\\"member_id\\\"]],[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],[25,\\\"busy-loc\\\",[\\\"Refreshing signature status\\\"],null],\\\"refreshRoute\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[[20,[\\\"dirtyFlag\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"full-report-signatures\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/full-report/signatures\\\",null,[[\\\"model\\\",\\\"isSupervisor\\\",\\\"refreshRoute\\\"],[[20,[\\\"model\\\"]],[20,[\\\"isSupervisor\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"syncRoute\\\"],null]]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"showTimeEntryEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemSaved\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showTimeOffEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\",\\\"onSaved\\\"],[[20,[\\\"editTimeOffEntry\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemSaved\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/full-report/index.hbs\" } });\n});","define(\"busy-app/templates/time-card/full-report/loading\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"psaKon7Q\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-report-time-card-loading\\\"],[7],[0,\\\"\\\\n\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"bc-loading\\\",null,[[\\\"isLoading\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\"],[8],[0,\\\"\\\\n\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/full-report/loading.hbs\" } });\n});","define(\"busy-app/templates/time-card/index\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"N+f3JlVG\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[18,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/index.hbs\" } });\n});","define(\"busy-app/templates/time-card/pay-period\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Peo77WIA\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Pay Periods\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-pay-period\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"pay-period-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"dataRangeString\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"member\\\",\\\"startTime\\\",\\\"endTime\\\",\\\"banner\\\",\\\"onDone\\\"],[[20,[\\\"member\\\"]],[20,[\\\"start\\\"]],[20,[\\\"end\\\"]],true,\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"signatureState\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"sign\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[10,\\\"class\\\",[26,[\\\"d-button \\\",[18,\\\"signatureStateClass\\\"]]]],[3,\\\"action\\\",[[19,0,[]],\\\"openFullReport\\\",[20,[\\\"payPeriodSeconds\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[1,[18,\\\"signatureState\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-select\\\",null,[[\\\"class\\\",\\\"model\\\",\\\"onSelect\\\",\\\"itemLabel\\\",\\\"menuTitle\\\",\\\"highlightSlected\\\"],[\\\"select-action\\\",[20,[\\\"selectMenu\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"selectItemAction\\\"],null],\\\"value\\\",[25,\\\"busy-loc\\\",[\\\"Actions\\\"],null],false]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"bc-list\\\",null,[[\\\"onClick\\\",\\\"model\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"dayClickAction\\\"],null],[20,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"name\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Date\\\"],null]]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,1,[\\\"start\\\"]]],[[\\\"format\\\"],[\\\"ddd, MMM DD\\\"]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"time-off-type\\\"],[7],[1,[19,1,[\\\"timeOffTypes\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"position\\\"],[10,\\\"title\\\",[26,[[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null]]]],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasConflict\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasOpenTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"Contains open time that is not included in totals\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon info-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[10,\\\"class\\\",[26,[\\\"total-time\\\",[25,\\\"if\\\",[[19,1,[\\\"hasOpenTime\\\"]],\\\" open-time\\\"],null]]]],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"No timecards\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"payPeriodSeconds\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"payPeriodSeconds\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Doubletime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"payPeriodSeconds\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"payPeriodSeconds\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"has-permission-for\\\",[\\\"viewMemberExpenses\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Cost\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"member\\\",\\\"wage\\\",\\\"isHourly\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodCost\\\",\\\"regularCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodCost\\\",\\\"overtimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Doubletime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodCost\\\",\\\"doubletimeCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodCost\\\",\\\"totalCost\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodSalary\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-currency\\\",[[20,[\\\"payPeriodSalary\\\"]]],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"memberId\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"member\\\",\\\"id\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"date\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"member\\\"]],[20,[\\\"start\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeOffDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntryDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\",\\\"date\\\"],[[20,[\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntryDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"reloadSync\\\"],null],[20,[\\\"end\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/pay-period.hbs\" } });\n});","define(\"busy-app/templates/time-card/time-entries\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"Fxd2gHB8\", \"block\": \"{\\\"symbols\\\":[\\\"entry\\\",\\\"entry\\\",\\\"entry\\\"],\\\"statements\\\":[[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Entries\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-time-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"time-entries-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[18,\\\"dataRangeString\\\"],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-conflict/resolve-dialog\\\",null,[[\\\"member\\\",\\\"day\\\",\\\"banner\\\",\\\"onDone\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"start\\\"]],true,\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"isTooOldToEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-header-floating\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openNewTimeOffDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Add Time Off\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openNewTimeEntryDialog\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"New Time Entry\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Entries\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entries\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"content\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,3,[\\\"isOpenEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"open-entry\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openEditDialog\\\",[19,3,[]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"wasOpenedToday\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,3,[\\\"model\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"hh:mm A\\\"]]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"date-format\\\",[[19,3,[\\\"model\\\",\\\"startTime\\\"]]],[[\\\"format\\\"],[\\\"MMM Do hh:mm A\\\"]]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[0,\\\" - ?\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"combinedBreakTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break open\\\"],[7],[0,\\\"(\\\"],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"model\\\",\\\"combinedBreakTime\\\"]]],[[\\\"padHours\\\",\\\"format\\\"],[true,10]]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total open\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,3,[\\\"model\\\",\\\"totalTime\\\"]]],[[\\\"padHours\\\",\\\"format\\\"],[true,10]]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"hasConflict\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"project\\\"]],[19,3,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"costCode\\\"]],[19,3,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],\\\"-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items equipment\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,3,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\" \\\"],[1,[19,3,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\" \\\"],[1,[19,3,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,3,[\\\"model\\\",\\\"description\\\"]],[19,3,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,3,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\",[19,3,[]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit-open\\\",null,[[\\\"member\\\",\\\"onClose\\\"],[[19,3,[\\\"model\\\",\\\"member\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\",[19,3,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"content\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,2,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"time-off\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeOffEntry\\\",[19,2,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-off-type\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"type\\\"],[7],[1,[19,2,[\\\"model\\\",\\\"getType\\\"]],true],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,2,[\\\"model\\\",\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,2,[\\\"model\\\",\\\"description\\\"]],[19,2,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"content\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"isTimeEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[19,1,[\\\"isOpenEntry\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[9,\\\"class\\\",\\\"time-entry\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"openTimeEntry\\\",[19,1,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"date-range\\\"],[7],[1,[19,1,[\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"breaktimeSeconds\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"break\\\"],[7],[0,\\\"(\\\"],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"breaktimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\")\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"total\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"hasConflict\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"conflict\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"Overlapping Time\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items project\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"project\\\"]],[19,1,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items cost-code\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items equipment\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\" \\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\" \\\"],[1,[19,1,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"items notes\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"label\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description:\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"p\\\"],[7],[1,[25,\\\"if\\\",[[19,1,[\\\"model\\\",\\\"description\\\"]],[19,1,[\\\"model\\\",\\\"description\\\"]],\\\"-\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[20,[\\\"model\\\",\\\"content\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"There are no entries for this day!\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"content\\\",\\\"regularSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Overtime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"content\\\",\\\"overtimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Doubletime\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"content\\\",\\\"doubletimeSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[2,\\\"<li>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span>Break Time</span>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span>{{!model.breakTimeString}}</span>\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t</li>\\\"],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"content\\\",\\\"totalSeconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\"],[1,[25,\\\"sync-status\\\",null,[[\\\"memberId\\\",\\\"syncing\\\",\\\"onSync\\\"],[[20,[\\\"model\\\",\\\"member\\\",\\\"id\\\"]],[20,[\\\"dirtyFlag\\\"]],\\\"reloadModel\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeEntryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeNewTimeEntryDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/create-new\\\",null,[[\\\"member\\\",\\\"onClose\\\",\\\"onSave\\\",\\\"date\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],\\\"closeNewTimeEntryDialog\\\",\\\"reloadSync\\\",[20,[\\\"start\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showNewTimeOffDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeTimeOffDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/create-time-off\\\",null,[[\\\"member\\\",\\\"date\\\",\\\"onClose\\\",\\\"onSave\\\"],[[20,[\\\"model\\\",\\\"member\\\"]],[20,[\\\"start\\\"]],\\\"closeTimeOffDialog\\\",\\\"reloadSync\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/time-entries.hbs\" } });\n});","define(\"busy-app/templates/time-card/time-entry\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"/X1/FdeH\", \"block\": \"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Entry\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-time-entry\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"time-entry-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateString\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"isTooOldToEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeEntry\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Locked\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeEntry\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Time Entry\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Job Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Project\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"projectId\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"model\\\",\\\"project\\\",\\\"fullTitle\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tNone\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"costCodes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackCostCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Cost Code\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"costCodeId\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"costCode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"model\\\",\\\"costCode\\\",\\\"costCodeLabel\\\"]],true],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tNone\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"auth\\\",\\\"organization\\\",\\\"trackEquipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Equipment\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"equipmentId\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"equipment\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentName\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"equipmentMake\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[20,[\\\"model\\\",\\\"equipment\\\",\\\"equipmentModel\\\",\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tNone\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"text-box\\\",null,[[\\\"value\\\",\\\"defaultValue\\\"],[[20,[\\\"model\\\",\\\"description\\\"]],\\\"&nbsp;-\\\"]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Breaks\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"breaks\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[20,[\\\"model\\\",\\\"timeEntryBreaks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[19,1,[\\\"totalTime\\\"]]],[[\\\"longFormat\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[19,1,[\\\"dateString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"overlappingBreak\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"This break overlaps another break\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[19,1,[\\\"invalidEntry\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"This break is outside the time entry\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"invalidStartTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"This break starts before the time entry\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[19,1,[\\\"invalidEndTime\\\"]]],null,{\\\"statements\\\":[[4,\\\"busy-infobox\\\",null,[[\\\"content\\\"],[[25,\\\"busy-loc\\\",[\\\"This break ends after the time entry\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"c-icon warning-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t-\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-title\\\",null,[[\\\"titleName\\\",\\\"buttonName\\\",\\\"onTitleClick\\\"],[[25,\\\"busy-loc\\\",[\\\"Locations\\\"],null],[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasLocations\\\"]],[25,\\\"busy-loc\\\",[\\\"Full Map\\\"],null]],null],[25,\\\"action\\\",[[19,0,[]],\\\"viewFullMap\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[20,[\\\"model\\\",\\\"hasLocations\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-location\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-map-time-entry-locations\\\",null,[[\\\"timeEntry\\\"],[[20,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry-location no-location\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"No locations available\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Regular Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"totalTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Break Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"breakTime\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"features\\\",\\\"entryHistory\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"view-entry\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"viewEntryHistory\\\"]],[7],[1,[25,\\\"busy-loc\\\",[\\\"View Entry History\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"entryHistoryDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEntryHistory\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"time/time-entry/log\\\",null,[[\\\"timeEntry\\\",\\\"onClose\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEntryHistory\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/time-entry.hbs\" } });\n});","define(\"busy-app/templates/time-card/time-off-entry\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"A78u+SrO\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-time-card-time-off-entry\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,[[\\\"headerTitle\\\",\\\"hasBackButton\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off Details\\\"],null],true]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"header\\\"],[9,\\\"class\\\",\\\"time-entry-header\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h1\\\"],[7],[1,[20,[\\\"model\\\",\\\"dateString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[20,[\\\"model\\\",\\\"getType\\\"]],false],[0,\\\" - \\\"],[1,[20,[\\\"model\\\",\\\"paidString\\\"]],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"edit\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,\\\"can-take-action-for\\\",[\\\"manageTimeEntries\\\",[20,[\\\"model\\\",\\\"member\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"a\\\"],[9,\\\"class\\\",\\\"d-button grey\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"editTimeOffEntry\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Edit Time Off\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Time Off Details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"time-entry\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Employee\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"model\\\",\\\"member\\\",\\\"fullName\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Amount\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"paid\\\"]],[20,[\\\"model\\\",\\\"totalString\\\"]],\\\"&nbsp;-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Type\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"model\\\",\\\"getType\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Description\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[25,\\\"if\\\",[[20,[\\\"model\\\",\\\"description\\\"]],[20,[\\\"model\\\",\\\"description\\\"]],\\\"&nbsp;-\\\"],null],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submitted by\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"model\\\",\\\"submittedBy\\\"]],true],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"section\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"header\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Submitted on\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[7],[1,[20,[\\\"model\\\",\\\"submittedOnString\\\"]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bc-section-half\\\",null,null,{\\\"statements\\\":[[4,\\\"bc-title\\\",null,[[\\\"titleName\\\"],[[25,\\\"busy-loc\\\",[\\\"Hours\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[9,\\\"class\\\",\\\"d-total-chart\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Total Time\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"span\\\"],[7],[1,[25,\\\"format-hours\\\",[[20,[\\\"model\\\",\\\"seconds\\\"]]],[[\\\"padHours\\\"],[true]]],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"showEditDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[1,[25,\\\"time/time-off/edit\\\",null,[[\\\"model\\\",\\\"onCancel\\\",\\\"onDelete\\\"],[[20,[\\\"model\\\"]],[25,\\\"action\\\",[[19,0,[]],\\\"closeEditDialog\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"itemDeleted\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/time-card/time-off-entry.hbs\" } });\n});","define(\"busy-app/templates/verify-email\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.HTMLBars.template({ \"id\": \"pfrKimgp\", \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-verify-email\\\"],[7],[0,\\\"\\\\n\\\"],[4,\\\"busy-container\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"email-icon\\\"],[7],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"resentHeader\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Verification Email Resent\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"We have sent a new verification email to \\\"],null],false],[0,\\\" \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"email\\\"],[7],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"email\\\"]],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Any previously sent emails are no longer valid.\\\"],null],false],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\"],[6,\\\"h2\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Check your email!\\\"],null],false],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"A verification email has been sent to \\\"],null],false],[0,\\\" \\\"],[6,\\\"span\\\"],[9,\\\"class\\\",\\\"email\\\"],[7],[1,[20,[\\\"auth\\\",\\\"member\\\",\\\"email\\\"]],false],[8],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\t\\\\t\\\"],[6,\\\"h3\\\"],[7],[1,[25,\\\"busy-loc\\\",[\\\"Click on the link in the email to activate your account.\\\"],null],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"div\\\"],[10,\\\"class\\\",[26,[\\\"error \\\",[25,\\\"if\\\",[[20,[\\\"showError\\\"]],\\\"show\\\"],null]]]],[7],[1,[18,\\\"errorMessage\\\"],false],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\"],[6,\\\"ul\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"changeEmail\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"I entered the wrong email.\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"resendEmailAction\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"I did not receive an email.\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\"],[6,\\\"li\\\"],[7],[6,\\\"a\\\"],[3,\\\"action\\\",[[19,0,[]],\\\"logout\\\"],[[\\\"bubbles\\\"],[false]]],[7],[1,[25,\\\"busy-loc\\\",[\\\"Log me out.\\\"],null],false],[8],[8],[0,\\\"\\\\n\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[20,[\\\"verifyEmailDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"dialogs/modal-dialog\\\",null,[[\\\"onClose\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelNewEmail\\\"],null]]],{\\\"statements\\\":[[4,\\\"dialogs/content-view\\\",null,[[\\\"onCancel\\\",\\\"onSave\\\",\\\"headerTitle\\\"],[[25,\\\"action\\\",[[19,0,[]],\\\"cancelNewEmail\\\"],null],[25,\\\"action\\\",[[19,0,[]],\\\"sendNewEmail\\\"],null],[25,\\\"busy-loc\\\",[\\\"Update Email\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"v-verify-email-change-email\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"bc-validate\\\",null,[[\\\"label\\\",\\\"required\\\",\\\"value\\\",\\\"maxlength\\\"],[[25,\\\"busy-loc\\\",[\\\"Email\\\"],null],true,[20,[\\\"auth\\\",\\\"member\\\",\\\"email\\\"]],\\\"256\\\"]]],false],[6,\\\"br\\\"],[7],[8],[0,\\\"\\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[6,\\\"div\\\"],[9,\\\"class\\\",\\\"text\\\"],[7],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[1,[25,\\\"busy-loc\\\",[\\\"Updating your email will replace the email you previously entered when creating your company. Any previously sent email verifications will no longer be valid.\\\"],null],false],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\"],[8],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[8],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\", \"meta\": { \"moduleName\": \"busy-app/templates/verify-email.hbs\" } });\n});","define('busy-app/time', ['exports', '@busy-web/utils/time'], function (exports, _time) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _time.default;\n    }\n  });\n});","define('busy-app/transforms/boolean-null', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized) {\n\t\t\tif (!Ember.isNone(serialized)) {\n\t\t\t\tif (typeof serialized === 'string') {\n\t\t\t\t\tif (serialized === 'true') {\n\t\t\t\t\t\tserialized = true;\n\t\t\t\t\t} else if (serialized === '1') {\n\t\t\t\t\t\tserialized = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tserialized = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (serialized === 1) {\n\t\t\t\t\tserialized = true;\n\t\t\t\t} else if (serialized === true) {\n\t\t\t\t\tserialized = true;\n\t\t\t\t} else {\n\t\t\t\t\tserialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn serialized;\n\t\t},\n\t\tserialize: function serialize(deserialized) {\n\t\t\treturn deserialized;\n\t\t}\n\t});\n});","define('busy-app/transforms/boolean', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized) {\n\t\t\tif (typeof serialized === 'string') {\n\t\t\t\tserialized = serialized === 'true' || serialized === '1' ? true : false;\n\t\t\t} else if (typeof serialized === 'number') {\n\t\t\t\tserialized = serialized === 1 ? true : false;\n\t\t\t} else if (typeof serialized !== 'boolean') {\n\t\t\t\tserialized = null;\n\t\t\t}\n\n\t\t\treturn serialized;\n\t\t},\n\n\t\tserialize: function serialize(deserialized) {\n\t\t\tif (typeof deserialized === 'string') {\n\t\t\t\tif (deserialized !== '_-NULL-_') {\n\t\t\t\t\tdeserialized = deserialized === 'true' || deserialized === '1' ? true : false;\n\t\t\t\t}\n\t\t\t} else if (typeof deserialized === 'number') {\n\t\t\t\tdeserialized = deserialized === 1 ? true : false;\n\t\t\t} else if (typeof deserialized !== 'boolean') {\n\t\t\t\tdeserialized = null;\n\t\t\t}\n\n\t\t\treturn deserialized;\n\t\t}\n\t});\n});","define('busy-app/transforms/date-string', ['exports', 'ember-data', 'moment'], function (exports, _emberData, _moment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized, meta) {\n\t\t\t(true && !(meta && typeof meta.format === 'string') && Ember.assert(\"format must be provided for DS.attr('date-string', { format: 'HH:mm:ss' })\", meta && typeof meta.format === 'string'));\n\n\n\t\t\tvar date = _moment.default.utc(serialized || meta.defaultValue, meta.format);\n\t\t\tvar timestamp = date.unix();\n\t\t\treturn timestamp;\n\t\t},\n\t\tserialize: function serialize(deserialized, meta) {\n\t\t\t(true && !(meta && typeof meta.format === 'string') && Ember.assert(\"format must be provided for DS.attr('date-string', { format: 'HH:mm:ss' })\", meta && typeof meta.format === 'string'));\n\n\n\t\t\tif (!deserialized) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn (0, _moment.default)(deserialized).format(meta.format);\n\t\t}\n\t});\n});","define('busy-app/transforms/date', ['exports', 'ember-data'], function (exports, _emberData) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Transform.extend({\n    deserialize: function deserialize(serialized) {\n      if (Ember.isNone(serialized)) {\n        return null;\n      }\n      return parseInt(serialized, 10);\n    },\n    serialize: function serialize(deserialized) {\n      if (Ember.isNone(deserialized)) {\n        return null;\n      }\n      return parseInt(deserialized, 10);\n    }\n  });\n});","define('busy-app/transforms/duration-string', ['exports', 'ember-data', 'moment'], function (exports, _emberData, _moment) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized, _ref) {\n\t\t\tvar defaultValue = _ref.defaultValue;\n\n\t\t\tif (Ember.isEmpty(serialized) && Ember.isEmpty(defaultValue)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar val = Ember.isEmpty(serialized) ? defaultValue : serialized;\n\t\t\treturn _moment.default.duration(val).asSeconds();\n\t\t},\n\t\tserialize: function serialize(deserialized) {\n\t\t\tif (Ember.isEmpty(deserialized)) return;\n\n\t\t\t// pad numbers with leading zero\n\t\t\tvar padTime = function padTime(time) {\n\t\t\t\treturn time < 10 ? '0' + time : '' + time;\n\t\t\t};\n\n\t\t\tvar type = void 0;\n\t\t\tif (typeof deserialized === 'number') {\n\t\t\t\ttype = 'seconds';\n\t\t\t}\n\n\t\t\t// create duration object\n\t\t\tvar duration = _moment.default.duration(deserialized, type);\n\n\t\t\t// create string\n\t\t\tvar str = [padTime(duration.hours()), padTime(duration.minutes()), padTime(duration.seconds())].join(':');\n\n\t\t\treturn str;\n\t\t}\n\t});\n});","define('busy-app/transforms/file', ['exports', 'ember-data'], function (exports, _emberData) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized) {\n\t\t\treturn serialized;\n\t\t},\n\n\t\tserialize: function serialize(deserialized) {\n\t\t\treturn deserialized;\n\t\t}\n\t});\n});","define('busy-app/transforms/id', ['exports', 'ember-data', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _emberData, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _emberData.default.Transform.extend({\n\t\tdeserialize: function deserialize(serialized) {\n\t\t\tif (Ember.isNone(serialized) || serialized === '00000000-0000-0000-0000-000000000000') {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!_utils.UUID.isValid(serialized)) {\n\t\t\t\t_logger.default.error(this, 'Invalid UUID found from api - id: ' + serialized);\n\t\t\t}\n\n\t\t\treturn serialized.toString();\n\t\t},\n\t\tserialize: function serialize(deserialized) {\n\t\t\tif (Ember.isNone(deserialized)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!_utils.UUID.isValid(deserialized)) {\n\t\t\t\t_logger.default.error(this, 'Invalid UUID sent to the api - id: ' + deserialized);\n\t\t\t}\n\n\t\t\treturn deserialized.toString();\n\t\t}\n\t});\n});","define('busy-app/transforms/password', ['exports', 'ember-data', 'cryptojs'], function (exports, _emberData, _cryptojs) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _emberData.default.Transform.extend({\n    deserialize: function deserialize(serialized) {\n      return serialized;\n    },\n    serialize: function serialize(deserialized) {\n      if (!Ember.isNone(deserialized) && !Ember.isEmpty(deserialized) && deserialized !== '_-NULL-_') {\n        deserialized = _cryptojs.default.SHA256(deserialized).toString();\n      }\n      return deserialized;\n    }\n  });\n});","define('busy-app/transforms/svg', ['exports', 'ember-data'], function (exports, _emberData) {\n\t\t'use strict';\n\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n\t\t});\n\n\n\t\tvar noop = function noop() {};\n\n\t\texports.default = _emberData.default.Transform.extend({\n\t\t\t\tdeserialize: function deserialize(serialized) {\n\t\t\t\t\t\treturn serialized;\n\t\t\t\t},\n\t\t\t\tserialize: function serialize(deserialized) {\n\t\t\t\t\t\tvar safeString = Ember.String.htmlSafe(deserialized);\n\t\t\t\t\t\tvar type = 'image/svg+xml';\n\t\t\t\t\t\tvar svgBlob = new Blob([safeString], { type: type });\n\n\t\t\t\t\t\tvar fileObj = Ember.Object.create({\n\t\t\t\t\t\t\t\tfile: svgBlob,\n\t\t\t\t\t\t\t\tuploadStart: noop,\n\t\t\t\t\t\t\t\tuploadComplete: noop,\n\t\t\t\t\t\t\t\tuploadProgress: noop\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn fileObj;\n\t\t\t\t}\n\t\t});\n});","define('busy-app/transitions', ['exports', 'busy-app/animations/time-card', 'busy-app/animations/employee', 'busy-app/animations/project', 'busy-app/animations/report', 'busy-app/animations/company'], function (exports, _timeCard, _employee, _project, _report, _company) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\texports.default = function () {\n\t\tvar durationTo = 300;\n\t\tvar durationBack = 300;\n\n\t\t_timeCard.default.call(this, durationTo, durationBack);\n\t\t_employee.default.call(this, durationTo, durationBack);\n\t\t_project.default.call(this, durationTo, durationBack);\n\t\t_report.default.call(this, durationTo, durationBack);\n\t\t_company.default.call(this, durationTo, durationBack);\n\n\t\t// note transition\n\t\tthis.transition(this.toRoute('note.default'), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\t// liquid-if transition\n\t\tthis.transition(this.hasClass('slide-in'), this.toValue(true), this.use('toLeft', { duration: 400 }), this.reverse('toRight', { duration: 300 }));\n\n\t\t// liquid-if transition\n\t\tthis.transition(this.hasClass('slide-route'), this.use('toLeft', { duration: durationTo }), this.reverse('toRight', { duration: durationBack }));\n\n\t\t// login transition\n\t\tthis.transition(this.hasClass('authification'), this.toValue(true), this.use('fade', { duration: 600 }), this.reverse('fade', { duration: 100 }));\n\n\t\t// clock transition\n\t\tthis.transition(this.childOf('#liquid-bind-timer'), this.use('toUp'));\n\n\t\t// quickbooks mapping transition\n\t\tthis.transition(this.hasClass('mapping-items'), this.toValue(true), this.use('toDown'), this.reverse('toUp'));\n\t};\n});","define('busy-app/transitions/cross-fade', ['exports', 'liquid-fire/transitions/cross-fade'], function (exports, _crossFade) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _crossFade.default;\n    }\n  });\n});","define('busy-app/transitions/default', ['exports', 'liquid-fire/transitions/default'], function (exports, _default) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _default.default;\n    }\n  });\n});","define('busy-app/transitions/explode', ['exports', 'liquid-fire/transitions/explode'], function (exports, _explode) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _explode.default;\n    }\n  });\n});","define('busy-app/transitions/fade', ['exports', 'liquid-fire/transitions/fade'], function (exports, _fade) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _fade.default;\n    }\n  });\n});","define('busy-app/transitions/flex-grow', ['exports', 'liquid-fire/transitions/flex-grow'], function (exports, _flexGrow) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _flexGrow.default;\n    }\n  });\n});","define('busy-app/transitions/fly-to', ['exports', 'liquid-fire/transitions/fly-to'], function (exports, _flyTo) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _flyTo.default;\n    }\n  });\n});","define('busy-app/transitions/move-over', ['exports', 'liquid-fire/transitions/move-over'], function (exports, _moveOver) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _moveOver.default;\n    }\n  });\n});","define('busy-app/transitions/scale', ['exports', 'liquid-fire/transitions/scale'], function (exports, _scale) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _scale.default;\n    }\n  });\n});","define('busy-app/transitions/scroll-then', ['exports', 'liquid-fire/transitions/scroll-then'], function (exports, _scrollThen) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _scrollThen.default;\n    }\n  });\n});","define('busy-app/transitions/to-down', ['exports', 'liquid-fire/transitions/to-down'], function (exports, _toDown) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _toDown.default;\n    }\n  });\n});","define('busy-app/transitions/to-left', ['exports', 'liquid-fire/transitions/to-left'], function (exports, _toLeft) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _toLeft.default;\n    }\n  });\n});","define('busy-app/transitions/to-right', ['exports', 'liquid-fire/transitions/to-right'], function (exports, _toRight) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _toRight.default;\n    }\n  });\n});","define('busy-app/transitions/to-up', ['exports', 'liquid-fire/transitions/to-up'], function (exports, _toUp) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _toUp.default;\n    }\n  });\n});","define('busy-app/transitions/wait', ['exports', 'liquid-fire/transitions/wait'], function (exports, _wait) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _wait.default;\n    }\n  });\n});","define(\"busy-app/utils/_model-errors\", [\"exports\", \"@busy-web/utils\"], function (exports, _utils) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = {\n\t\t\"busy-event\": {\n\t\t\t\"300\": (0, _utils.loc)(\"non-unique primary key\"),\n\t\t\t\"401\": (0, _utils.loc)(\"organization_id does not exist in the database\"),\n\t\t\t\"402\": (0, _utils.loc)(\"member_id does not exist in the database\"),\n\t\t\t\"701\": (0, _utils.loc)(\"source_device_type_id must not be null.\"),\n\t\t\t\"702\": (0, _utils.loc)(\"version must not be null.\"),\n\t\t\t\"703\": (0, _utils.loc)(\"event_type must not be null.\"),\n\t\t\t\"704\": (0, _utils.loc)(\"created_on must not be null.\")\n\t\t},\n\t\t\"sign-up-event\": {\n\t\t\t\"300\": (0, _utils.loc)(\"non-unique primary key\"),\n\t\t\t\"401\": (0, _utils.loc)(\"member_id does not exist in the database\"),\n\t\t\t\"701\": (0, _utils.loc)(\"member_id must not be null\"),\n\t\t\t\"702\": (0, _utils.loc)(\"ad_click_date must not be null\"),\n\t\t\t\"703\": (0, _utils.loc)(\"created_on must not be null\")\n\t\t}\n\t};\n});","define(\"busy-app/utils/_rpc-model-errors\", [\"exports\", \"@busy-web/utils\"], function (exports, _utils) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = {\n\t\t\"account\": {\n\t\t\t\"create\": {\n\t\t\t\t\"200\": (0, _utils.loc)(\"This username is taken. Please choose another.\")\n\t\t\t},\n\t\t\t\"verify-email\": {\n\t\t\t\t\"201\": (0, _utils.loc)(\"This url has expired or has already been used to verify this email!\")\n\t\t\t},\n\t\t\t\"request-verification-email\": {\n\t\t\t\t\"202\": (0, _utils.loc)(\"The email must be set to request an email verification.\"),\n\t\t\t\t\"204\": (0, _utils.loc)(\"The account was not found to verify the email.\")\n\t\t\t},\n\t\t\t\"password-reset-request\": {\n\t\t\t\t\"203\": (0, _utils.loc)(\"The email was not found in the system.\")\n\t\t\t},\n\t\t\t\"reset-password\": {\n\t\t\t\t\"201\": (0, _utils.loc)(\"This reset url has already been used. You must submit a new password reset request.\")\n\t\t\t}\n\t\t}\n\t};\n});","define('busy-app/utils/access', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.logPermission = exports.binaryPermissionToObject = exports.levelSelf = exports.levelLower = exports.levelSame = exports.levelHigher = exports.LEVEL_HIGHER = exports.LEVEL_SAME = exports.LEVEL_LOWER = exports.LEVEL_SELF = undefined;\n\texports.hasPermission = hasPermission;\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tvar LEVEL_SELF = exports.LEVEL_SELF = 1;\n\tvar LEVEL_LOWER = exports.LEVEL_LOWER = 2;\n\tvar LEVEL_SAME = exports.LEVEL_SAME = 4;\n\tvar LEVEL_HIGHER = exports.LEVEL_HIGHER = 8;\n\n\tfunction hasPermission(positionRecords, positionId, permissionTypes) {\n\t\tvar minBinaryLevel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : LEVEL_SELF;\n\t\tvar strict = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\n\t\tvar position = _getPosition(positionRecords, positionId);\n\t\tvar permissions = _getPermision(position, permissionTypes);\n\n\t\treturn _reducePermission(permissions, minBinaryLevel, strict);\n\t}\n\n\tvar _reducePermission = function _reducePermission(permissions) {\n\t\tvar minBinaryLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LEVEL_SELF;\n\t\tvar strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\t\treturn permissions.reduce(function (a, b) {\n\t\t\tif (strict === false) {\n\t\t\t\treturn typeof b === 'boolean' ? a && b : a && b >= minBinaryLevel;\n\t\t\t} else {\n\t\t\t\treturn typeof b === 'boolean' ? a || b : a || b >= minBinaryLevel;\n\t\t\t}\n\t\t}, true);\n\t};\n\n\tvar _getPermision = function _getPermision(positionModel) {\n\t\tvar permissionTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t\treturn permissionTypes.map(function (type) {\n\t\t\treturn Ember.get(positionModel, type);\n\t\t});\n\t};\n\n\tvar _getPosition = function _getPosition(positionRecords, id) {\n\t\treturn positionRecords.find(function (p) {\n\t\t\treturn p.id === id;\n\t\t});\n\t};\n\n\tvar mod = function mod(value) {\n\t\tfor (var _len = arguments.length, modValue = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tmodValue[_key - 1] = arguments[_key];\n\t\t}\n\n\t\tif (modValue.length === 0) {\n\t\t\treturn value;\n\t\t}\n\t\tvar mv = modValue.shift();\n\t\treturn mod.apply(undefined, [value % mv].concat(modValue));\n\t};\n\n\tvar levelHigher = exports.levelHigher = function levelHigher() {\n\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\treturn value >= LEVEL_HIGHER;\n\t};\n\n\tvar levelSame = exports.levelSame = function levelSame() {\n\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\treturn mod(value, LEVEL_HIGHER) >= LEVEL_SAME;\n\t};\n\n\tvar levelLower = exports.levelLower = function levelLower() {\n\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\treturn mod(value, LEVEL_HIGHER, LEVEL_SAME) >= LEVEL_LOWER;\n\t};\n\n\tvar levelSelf = exports.levelSelf = function levelSelf() {\n\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\treturn mod(value, LEVEL_HIGHER, LEVEL_SAME, LEVEL_LOWER) >= LEVEL_SELF;\n\t};\n\n\tvar binaryPermissionToObject = exports.binaryPermissionToObject = function binaryPermissionToObject() {\n\t\tvar value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\treturn {\n\t\t\thigher: levelHigher(value),\n\t\t\tsame: levelSame(value),\n\t\t\tlower: levelLower(value),\n\t\t\tself: levelSelf(value)\n\t\t};\n\t};\n\n\tvar logPermission = exports.logPermission = function logPermission(positionModel, permissionKey) {\n\t\tvar value = void 0;\n\t\tif (typeof positionModel === 'number') {\n\t\t\tvalue = positionModel;\n\t\t} else {\n\t\t\tvalue = Ember.get(positionModel, permissionKey);\n\t\t}\n\n\t\tif (!Ember.isNone(value)) {\n\t\t\tvar key = permissionKey || 'permission';\n\n\t\t\tvar block = _logger.default.block('<utils:access>', 'binaryPermission', key, value);\n\t\t\tblock.table(_defineProperty({}, key, binaryPermissionToObject(value)));\n\t\t\tblock.end();\n\t\t} else {\n\t\t\t_logger.default.error('<utils:access>', 'logPermission requires a (position <model> and a permission key <string> | binary value <number>)');\n\t\t}\n\t};\n});","define('busy-app/utils/api-error', ['exports', '@busy-web/utils', 'busy-app/utils/_model-errors', 'busy-app/utils/_rpc-model-errors'], function (exports, _utils, _modelErrors2, _rpcModelErrors2) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Utils\n  *\n  */\n\tvar ApiError = Ember.Object.extend();\n\tvar kDefaultError = (0, _utils.loc)('Something went wrong! Please try again.');\n\n\t/**\n  * `Util/ApiError`\n  *\n  * @class ApiError\n  * @namespace Utils\n  * @extends EmberObject\n  */\n\tApiError.reopenClass({\n\t\tgetError: function getError(error) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(error);\n\n\t\t\t// get the code from result.code in the object\n\t\t\t// if not look for just code.\n\t\t\tvar code = Ember.get(error, 'result.code');\n\t\t\tif (Ember.isNone(code)) {\n\t\t\t\tcode = Ember.get(error, 'code');\n\t\t\t}\n\n\t\t\tvar result = void 0;\n\n\t\t\t// if the code is an array the return the first code as an int.\n\t\t\t// else assume the code is a string and convet it to an int.\n\t\t\tif (Ember.isArray(code) && !Ember.isEmpty(code)) {\n\t\t\t\tresult = parseInt(code[0], 10);\n\t\t\t} else if (!Ember.isNone(code)) {\n\t\t\t\tresult = parseInt(code, 10);\n\t\t\t}\n\n\t\t\t// if null or undefined or NaN then set the code to -1\n\t\t\tif (Ember.isNone(result) || window.isNaN(result)) {\n\t\t\t\tresult = -1;\n\t\t\t}\n\n\t\t\t// return the result as a string.\n\t\t\treturn '' + result;\n\t\t},\n\t\tgetDebugError: function getDebugError(error) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(error);\n\n\t\t\t// get the code from result.code in the object\n\t\t\t// if not look for just code.\n\t\t\tvar code = Ember.get(error, 'result.debug.errors');\n\t\t\tif (Ember.isNone(code)) {\n\t\t\t\tcode = Ember.get(error, 'debug.errors');\n\t\t\t}\n\n\t\t\tvar result = void 0;\n\n\t\t\t// if the code is an array the return the first code as an int.\n\t\t\t// else assume the code is a string and convet it to an int.\n\t\t\tif (Ember.isArray(code) && !Ember.isEmpty(code)) {\n\t\t\t\tresult = code[0];\n\t\t\t} else if (!Ember.isNone(code)) {\n\t\t\t\tresult = code;\n\t\t\t} else {\n\t\t\t\tresult = this.getError(error);\n\t\t\t}\n\n\t\t\t// if null or undefined or NaN then set the code to -1\n\t\t\tif (Ember.isEmpty(result)) {\n\t\t\t\tresult = -1;\n\t\t\t}\n\n\t\t\t// return the result as a string.\n\t\t\treturn '' + result;\n\t\t},\n\t\tmessageHandler: function messageHandler(modelErrors, code) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isObject(modelErrors);\n\t\t\t_utils.Assert.isString(code);\n\n\t\t\t// get the message\n\t\t\tvar message = Ember.get(modelErrors, code);\n\n\t\t\t// if the message does not exists then\n\t\t\t// set it to the default error message.\n\t\t\tif (Ember.isEmpty(message)) {\n\t\t\t\tmessage = kDefaultError;\n\t\t\t}\n\n\t\t\t// return the message.\n\t\t\treturn message;\n\t\t},\n\t\tgetErrorString: function getErrorString(error, modelType) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isObject(error);\n\t\t\t_utils.Assert.isString(modelType);\n\n\t\t\tvar code = this.getError(error);\n\t\t\tvar modelErrors = Ember.get(_modelErrors2.default, modelType);\n\n\t\t\treturn this.messageHandler(modelErrors, code);\n\t\t},\n\t\tgetRpcErrorString: function getRpcErrorString(error, type, method) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3, true);\n\t\t\t_utils.Assert.isObject(error);\n\t\t\t_utils.Assert.isString(type);\n\t\t\t_utils.Assert.isString(method);\n\n\t\t\tvar code = this.getError(error);\n\t\t\tvar modelErrors = Ember.get(_rpcModelErrors2.default, type + '.' + method);\n\n\t\t\treturn this.messageHandler(modelErrors, code);\n\t\t}\n\t});\n\n\texports.default = ApiError;\n});","define('busy-app/utils/app-global', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Object.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\taccess: Ember.inject.service('access'),\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tcontroller: null,\n\t\tcontainer: null,\n\t\tloaders: null,\n\t\tready: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.set('loaders', []);\n\t\t},\n\n\n\t\twaitForLoad: Ember.observer('controller.isReady', 'auth.isReady', 'container.isReady', 'payPeriods.isReady', function () {\n\t\t\tif (!this.get('ready')) {\n\t\t\t\tif (this.get('controller.isReady') && this.get('auth.isReady') && this.get('container.isReady') && this.get('payPeriods.isReady')) {\n\t\t\t\t\tthis.onLoad();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tonLoad: function onLoad() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('ready', true);\n\t\t\tvar loaders = this.get('loaders');\n\t\t\tEmber.$.each(loaders, function (key, loader) {\n\t\t\t\tif (loaders.hasOwnProperty(key)) {\n\t\t\t\t\t_this.triggerLoader(loader);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\ttriggerLoader: function triggerLoader(loader) {\n\t\t\tvar target = loader.target;\n\t\t\tvar func = loader.func;\n\t\t\ttarget.get(func).call(target);\n\t\t},\n\t\tcreateLoader: function createLoader(target, func) {\n\t\t\treturn Ember.Object.create({ target: target, func: func });\n\t\t}\n\t});\n});","define('busy-app/utils/array-filter', ['exports', 'busy-app/utils/compare', 'busy-app/utils/logger'], function (exports, _compare, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.indexOf = indexOf;\n\texports.hasInArray = hasInArray;\n\texports.filter = filter;\n\texports.filterBy = filterBy;\n\texports.difference = difference;\n\texports.intersection = intersection;\n\texports.union = union;\n\texports.filterByQuery = filterByQuery;\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction indexOf(array, value) {\n\t\t(true && !(Ember.isArray(array)) && Ember.assert(\"indexOf(array, value) requires an array as parameter 1. You passed \" + (typeof array === 'undefined' ? 'undefined' : _typeof(array)), Ember.isArray(array)));\n\n\t\tvar idx = -1;\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tif ((0, _compare.default)(array[i], value)) {\n\t\t\t\tidx = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn idx;\n\t}\n\n\tfunction hasInArray(array, value) {\n\t\treturn indexOf(array, value) !== -1;\n\t}\n\n\tfunction filter(array, callback) {\n\t\t(true && !(Ember.isArray(array)) && Ember.assert(\"filter(array, callback) requires an array as parameter 1. You passed \" + (typeof array === 'undefined' ? 'undefined' : _typeof(array)), Ember.isArray(array)));\n\t\t(true && !(typeof callback === 'function') && Ember.assert(\"filter(array, callback) requires a function as parameter 2. You passed \" + (typeof callback === 'undefined' ? 'undefined' : _typeof(callback)), typeof callback === 'function'));\n\n\n\t\treturn array.filter(callback);\n\t}\n\n\tfunction filterBy(array, key, value) {\n\t\tvar options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t\treturn filter(array, function (i) {\n\t\t\treturn (0, _compare.default)(Ember.get(i, key), value, options);\n\t\t});\n\t}\n\n\t/**\n  * difference of sets\n  * A{ 1, 2, 3 } - B{ 3, 5 } = C{ 1, 2 }\n  *\n  * @public\n  * @method difference\n  * @params a {array}\n  * @params b {array}\n  * @return {array}\n  */\n\tfunction difference(a, b) {\n\t\treturn filter(a, function (i) {\n\t\t\treturn !hasInArray(b, i);\n\t\t});\n\t}\n\n\t/**\n  * intersection of sets\n  * A{ 1, 2 } intersectof B{ 2, 3 } = { 2 }\n  *\n  * @public\n  * @method intersection\n  * @params a {array}\n  * @params b {array}\n  * @return {array}\n  */\n\tfunction intersection(a, b) {\n\t\treturn filter(a, function (i) {\n\t\t\treturn hasInArray(b, i);\n\t\t});\n\t}\n\n\t/**\n  * union of sets\n  * A{ 1, 2 } union B{ 2, 3 } = { 1, 2, 3 }\n  *\n  * @public\n  * @method union\n  * @params a {array}\n  * @params b {array}\n  * @return {array}\n  */\n\tfunction union(a, b) {\n\t\tvar diff = difference(a, b);\n\t\treturn diff.concat(b);\n\t}\n\n\tfunction eachProperty(value, callback) {\n\t\tvar target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\tObject.keys(value).forEach(function (k) {\n\t\t\tvar val = Ember.get(value, k);\n\t\t\tcallback.call(target, val, k);\n\t\t});\n\t}\n\n\tvar specialKeys = ['_in', '_not_in', '_not_equal', '_equal', '_desc', '_asc', '_lte', '_gte', '_lt', '_gt', 'page', 'page_size'];\n\n\tfunction filterByQuery(models, query) {\n\t\tvar _this = this;\n\n\t\tvar ret = models;\n\t\tvar sortBy = void 0;\n\t\tvar sortDir = void 0;\n\t\teachProperty(query, function (value, key) {\n\t\t\tif (key === '_in') {\n\t\t\t\teachProperty(value, function (val, k) {\n\t\t\t\t\tvar keep = intersection(ret.mapBy(Ember.String.camelize(k)), val);\n\t\t\t\t\tret = filter(ret, function (i) {\n\t\t\t\t\t\treturn keep.indexOf(Ember.get(i, Ember.String.camelize(k))) !== -1;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (key === '_not_in') {\n\t\t\t\teachProperty(value, function (val, k) {\n\t\t\t\t\tvar keep = difference(ret.mapBy(Ember.String.camelize(k)), val);\n\t\t\t\t\tret = filter(ret, function (i) {\n\t\t\t\t\t\treturn keep.indexOf(Ember.get(i, Ember.String.camelize(k))) !== -1;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (key === '_not_equal') {\n\t\t\t\teachProperty(value, function (val, k) {\n\t\t\t\t\tvar filterOut = filterBy(ret, Ember.String.camelize(k), val, { disableCase: true });\n\t\t\t\t\tret = difference(ret, filterOut);\n\t\t\t\t});\n\t\t\t} else if (key === '_equal') {\n\t\t\t\teachProperty(value, function (val, k) {\n\t\t\t\t\tret = filterBy(ret, Ember.String.camelize(k), val, { disableCase: true });\n\t\t\t\t});\n\t\t\t} else if (key === '_asc' || key === '_desc') {\n\t\t\t\tsortDir = key === '_desc';\n\t\t\t\tsortBy = value.map(function (k) {\n\t\t\t\t\treturn Ember.String.camelize(k);\n\t\t\t\t});\n\t\t\t} else if (specialKeys.indexOf(key) === -1) {\n\t\t\t\tif (value === '!null') {\n\t\t\t\t\tret = filterBy(ret, Ember.String.camelize(key), null);\n\t\t\t\t} else {\n\t\t\t\t\tret = filterBy(ret, Ember.String.camelize(key), value, { disableCase: true });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_logger.Logger.warn(_this, 'key not supported yet [ ' + key + ' ]');\n\t\t\t}\n\t\t});\n\n\t\tif (sortBy) {\n\t\t\tvar _ret;\n\n\t\t\tret = (_ret = ret).sortBy.apply(_ret, _toConsumableArray(sortBy));\n\n\t\t\tif (sortDir) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n});","define('busy-app/utils/chargify', ['exports', 'cryptojs', 'busy-app/utils/settings'], function (exports, _cryptojs, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\t//import { UUID, Time } from '@busy-web/utils';\n\tvar Chargify = Ember.Object.extend(); /**\n                                        * @module utils\n                                        *\n                                        */\n\n\n\tChargify.reopenClass({\n\t\tgenerateUrl: function generateUrl(type, id) {\n\t\t\tvar token = this.generateToken(type, id);\n\t\t\treturn 'https://' + _settings.default.get('chargify_domain') + '.chargify.com/' + type + '/' + id + '/' + token + '?rel=_blank';\n\t\t},\n\t\tgenerateFormPostUrl: function generateFormPostUrl(id) {\n\t\t\treturn 'https://api.chargify.com/api/v2/subscriptions/' + id + '/card_update';\n\t\t},\n\t\tgenerateToken: function generateToken(type, id) {\n\t\t\tvar message = type + '--' + id + '--' + _settings.default.get('chargify_key');\n\t\t\treturn _cryptojs.default.SHA1(message).toString().substr(0, 10);\n\t\t}\n\t});\n\n\texports.default = Chargify;\n});","define('busy-app/utils/chart-object', ['exports', 'ember-cli-chartjs/utils/chart-object'], function (exports, _chartObject) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _chartObject.default;\n    }\n  });\n});","define('busy-app/utils/clock', ['exports', '@busy-web/ember-date-time/utils/clock'], function (exports, _clock) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _clock.default;\n    }\n  });\n});","define('busy-app/utils/clock/base', ['exports', '@busy-web/ember-date-time/utils/clock/base'], function (exports, _base) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _base.default;\n    }\n  });\n});","define('busy-app/utils/clock/data', ['exports', '@busy-web/ember-date-time/utils/clock/data'], function (exports, _data) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _data.default;\n    }\n  });\n});","define('busy-app/utils/clock/math', ['exports', '@busy-web/ember-date-time/utils/clock/math'], function (exports, _math) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _math.default;\n    }\n  });\n});","define('busy-app/utils/clock/movement', ['exports', '@busy-web/ember-date-time/utils/clock/movement'], function (exports, _movement) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _movement.default;\n    }\n  });\n});","define('busy-app/utils/clock/render', ['exports', '@busy-web/ember-date-time/utils/clock/render'], function (exports, _render) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _render.default;\n    }\n  });\n});","define('busy-app/utils/clock/string', ['exports', '@busy-web/ember-date-time/utils/clock/string'], function (exports, _string) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _string.default;\n    }\n  });\n});","define('busy-app/utils/clock/svg', ['exports', '@busy-web/ember-date-time/utils/clock/svg'], function (exports, _svg) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _svg.default;\n    }\n  });\n});","define('busy-app/utils/collection', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.keyBy = keyBy;\n\texports.groupBy = groupBy;\n\texports.tupleByKey = tupleByKey;\n\texports.toDictionary = toDictionary;\n\texports.sumBy = sumBy;\n\texports.flatten = flatten;\n\texports.localeSortBy = localeSortBy;\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tfunction keyBy(collection, key) {\n\t\tvar defaultValue = {};\n\n\t\tif (Ember.isNone(collection)) {\n\t\t\treturn collection;\n\t\t}\n\n\t\tvar keyedHash = collection.reduce(function (acc, item) {\n\t\t\treturn Object.assign(acc, _defineProperty({}, Ember.get(item, key), item));\n\t\t}, defaultValue);\n\n\t\treturn keyedHash;\n\t}\n\n\tfunction groupBy(collection, key) {\n\t\tvar defaultValue = {};\n\n\t\tif (Ember.isNone(collection)) {\n\t\t\treturn collection;\n\t\t}\n\n\t\tvar result = collection.reduce(function (acc, item) {\n\t\t\tvar keyValue = Ember.get(item, key);\n\n\t\t\tif (acc.hasOwnProperty(keyValue)) {\n\t\t\t\tacc[keyValue].push(item);\n\t\t\t} else {\n\t\t\t\tacc[keyValue] = [item];\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t}, defaultValue);\n\n\t\treturn result;\n\t}\n\n\tfunction tupleByKey(collection, key) {\n\t\treturn collection.map(function (item) {\n\t\t\treturn [Ember.get(item, key), item];\n\t\t});\n\t}\n\n\t/**\n  * converts an array of objects into a Map keyed on the specified attribute\n  * toDictionary([[a:'foo', b:1],[a:'bar', b:2]], 'a') => {foo: [a:'foo', b:1], bar: [a:'bar, b:2]}\n  *\n  * @method toDictionary\n  * @param collection {object[]}\n  * @param key {string}\n  * @return {object}\n  */\n\tfunction toDictionary(collection) {\n\t\tvar key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id';\n\n\t\treturn new Map(tupleByKey(collection, key));\n\t}\n\n\t/**\n  * @method sumBy\n  * @param collection {object[]}\n  * @param key {string | string[]}\n  * @return {number}\n  */\n\tfunction sumBy(collection, key) {\n\t\tif (Array.isArray(key)) {\n\t\t\treturn key.reduce(function (acc, recurseKey) {\n\t\t\t\treturn acc + sumBy(collection, recurseKey);\n\t\t\t}, 0);\n\t\t}\n\n\t\treturn collection.reduce(function (acc, item) {\n\t\t\treturn acc + Ember.get(item, key);\n\t\t}, 0);\n\t}\n\n\tfunction flatten(collection) {\n\t\treturn collection.reduce(function (acc, item) {\n\t\t\treturn acc.concat.apply(acc, _toConsumableArray(item));\n\t\t}, []);\n\t}\n\n\tfunction localeSortBy(collection, key) {\n\t\tvar defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t\tvar config = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { numeric: true, sensitivity: 'base' };\n\n\t\tif (Ember.isNone(collection)) {\n\t\t\treturn collection;\n\t\t}\n\n\t\tvar lang = window.navigator.language || 'en';\n\n\t\treturn collection.sort(function (a, b) {\n\t\t\tvar x = Ember.getWithDefault(a, key, defaultValue);\n\t\t\tvar y = Ember.getWithDefault(b, key, defaultValue);\n\n\t\t\treturn x.localeCompare(y, lang, config);\n\t\t});\n\t}\n});","define('busy-app/utils/compare', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = compare;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction isObject(value) {\n\t\treturn !Ember.isNone(value) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.isArray !== 'function';\n\t}\n\n\t/**\n  * Compares each property on the object to see if they match.\n  *\n  * this will match 2 objects that are not pointing at the same created object.\n  *\n  * @private\n  * @method compareObjects\n  * @param a {object} first object to compare\n  * @param b {object} second object to compare\n  * @return {boolean} true if both objects match\n  */\n\tfunction compareObjects(a, b) {\n\t\t(true && !(isObject(a) && isObject(b)) && Ember.assert('compareObjects(a, b) params 1 and 2 are required to be objects', isObject(a) && isObject(b)));\n\n\n\t\t// native js compare will return true if\n\t\t// a and b point to same register in memory\n\t\t//\n\t\t// @example\n\t\t//\tvar a = [];\n\t\t//\tvar b = a;\n\t\t//\ta === b => true; // two vars pointing to same memory\n\t\t//\n\t\t//\tvar a = [];\n\t\t//\tvar b = [];\n\t\t//\ta === b => false; // two idential vars pointing to different memory is false;\n\t\t//\n\t\tif (a === b) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// return false if objects keys are not equal in length\n\t\tif (Object.keys(a).length !== Object.keys(b).length) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// check each key to verify equality\n\t\tvar isEqual = true;\n\t\tvar keys = Object.keys(a);\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (!compare(Ember.get(a, key), Ember.get(b, key))) {\n\t\t\t\tisEqual = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn isEqual;\n\t}\n\n\t/**\n  * Compares each property on the arrays to see if they match.\n  *\n  * this will match 2 arrays that are not pointing at the same created array.\n  *\n  * @private\n  * @method compareArrays\n  * @param a {array} first object to compare\n  * @param b {array} second object to compare\n  * @return {boolean} true if both objects match\n  */\n\tfunction compareArrays(a, b) {\n\t\t(true && !(Ember.isArray(a) && Ember.isArray(b)) && Ember.assert('compareArrays(a, b) params 1 and 2 are required to be arrays', Ember.isArray(a) && Ember.isArray(b)));\n\n\n\t\t// native js compare will return true if\n\t\t// a and b point to same register in memory\n\t\t//\n\t\t// @example\n\t\t//\tvar a = {};\n\t\t//\tvar b = a;\n\t\t//\ta === b => true;\n\t\t//\n\t\t//\tvar a = {};\n\t\t//\tvar b = {};\n\t\t//\ta === b => false; // two idential vars pointing to different memory is false;\n\t\t//\n\t\tif (a === b) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// return false if arrays are not equal in length\n\t\tif (a.length !== b.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// check each value to verify equality\n\t\tvar isEqual = true;\n\t\tfor (var i = 0; i < a.length; i++) {\n\t\t\tif (!compare(a[i], b[i])) {\n\t\t\t\tisEqual = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn isEqual;\n\t}\n\n\t/**\n  * compares 2 values to see if they are a match\n  *\n  * options object supports 2 keys:\n  *\tdisableType {boolean} disables the strong type check 1 === 1 => strong type, 1 == 1 => week type (1 == '1'): true\n  *\tdisableCase {boolean} disables case sensitive string compare (Test === test): true\n  *\n  * @public\n  * @method compare\n  * @param a {mixed} first value to compare\n  * @param b {mixed} second value to compare\n  * @param options {object} optional options. supported now are { disableType, disableCase }\n  * @return {boolean}\n  */\n\tfunction compare(a, b) {\n\t\tvar options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t\tvar typeA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n\t\tvar typeB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\t\tif (typeA === typeB || options.disableType) {\n\t\t\tif (isObject(a)) {\n\t\t\t\treturn compareObjects(a, b);\n\t\t\t} else if (Ember.isArray(a)) {\n\t\t\t\treturn compareArrays(a, b);\n\t\t\t} else {\n\t\t\t\tif (typeA === 'string' && options.disableCase) {\n\t\t\t\t\tif (options.disableType) {\n\t\t\t\t\t\treturn a.toLowerCase() == b.toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\treturn a.toLowerCase() === b.toLowerCase();\n\t\t\t\t} else if (options.disableType) {\n\t\t\t\t\treturn a == b;\n\t\t\t\t}\n\t\t\t\treturn a === b;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});","define('busy-app/utils/container', ['exports', 'busy-app/utils/container/container-manager', '@busy-web/utils'], function (exports, _containerManager, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  exports.default = function (models) {\n    _utils.Assert.isArray(models);\n\n    var manager = _containerManager.default.create();\n\n    for (var _len = arguments.length, types = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      types[_key - 1] = arguments[_key];\n    }\n\n    return manager.generate.apply(manager, [models].concat(types));\n  };\n});","define('busy-app/utils/container/container-array', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.ArrayProxy.extend({\n\t\tsortKeys: null,\n\t\treverseSort: false,\n\t\ttype: null,\n\n\t\tsorted: function sorted() {\n\t\t\tif (!Ember.isEmpty(this.get('reverseSortKeys'))) {\n\t\t\t\tvar sorted = this.sortBy.apply(this, this.get('reverseSortKeys'));\n\t\t\t\tsorted = sorted.reverse();\n\t\t\t\treturn sorted;\n\t\t\t}\n\n\t\t\tif (!Ember.isEmpty(this.get('sortKeys'))) {\n\t\t\t\tvar _sorted = this.sortBy.apply(this, this.get('sortKeys'));\n\t\t\t\tif (this.get('reverseSort')) {\n\t\t\t\t\t_sorted = _sorted.reverse();\n\t\t\t\t}\n\t\t\t\treturn _sorted;\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/container/container-manager', ['exports', '@busy-web/utils', 'busy-app/utils/container/model-manager', 'busy-app/utils/container/container-array', 'busy-app/utils/container/container'], function (exports, _utils, _modelManager, _containerArray, _container2) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = Ember.Object.extend({\n\t\tmodels: null,\n\t\tmodelInfo: null,\n\t\thash: null,\n\n\t\tgenerate: function generate(models) {\n\t\t\tvar _this = this;\n\n\t\t\tfor (var _len = arguments.length, types = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\t\ttypes[_key - 1] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar options = {};\n\t\t\tif (_typeof(types[0]) === 'object') {\n\t\t\t\toptions = types.shift();\n\t\t\t}\n\n\t\t\tthis.set('modelInfo', _modelManager.default.create({ model: models.get('firstObject') }));\n\n\t\t\t// handle nested project data first\n\t\t\t// TODO:\n\t\t\t// make this more genneric to handle more\n\t\t\t// then just nested project data.\n\t\t\tif (!options.skipProjectData && this.get('modelInfo').hasProjectData()) {\n\t\t\t\t// generate project models first\n\t\t\t\treturn this.generateTypes(models, ['project']).then(function (data) {\n\t\t\t\t\t// check if project data was requested in the types array\n\t\t\t\t\t// and remove it if it was\n\t\t\t\t\tvar pIndex = types.indexOf('project');\n\t\t\t\t\tif (pIndex !== -1) {\n\t\t\t\t\t\ttypes.splice(pIndex, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (types.length <= 0) {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\n\t\t\t\t\t// get parent models from project data\n\t\t\t\t\t// pull out all models arrays and merge them into\n\t\t\t\t\t// one model array\n\t\t\t\t\tvar _newModels = data.project.mapBy('model');\n\t\t\t\t\tvar newModels = [];\n\n\t\t\t\t\t// add each array of models to the new models array\n\t\t\t\t\t_newModels.forEach(function (item) {\n\t\t\t\t\t\treturn newModels.pushObjects(item);\n\t\t\t\t\t});\n\n\t\t\t\t\t// call generateTypes with the new dataset\n\t\t\t\t\treturn _this.generateTypes(newModels, types).then(function (otherData) {\n\t\t\t\t\t\t// if project type was specified then get it here\n\t\t\t\t\t\tif (pIndex !== -1) {\n\t\t\t\t\t\t\totherData.project = data.project;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn otherData;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// no project data so just generate the containers\n\t\t\t\treturn this.generateTypes(models, types);\n\t\t\t}\n\t\t},\n\t\tgenerateTypes: function generateTypes(models, types) {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.set('models', models);\n\t\t\tthis.set('hash', Ember.Object.create({}));\n\n\t\t\tthis.setupHash(types);\n\n\t\t\t// if models is an empty array then return\n\t\t\t// an empty hash object\n\t\t\tif (Ember.isEmpty(models)) {\n\t\t\t\treturn Ember.RSVP.resolve(this.get('hash'));\n\t\t\t}\n\n\t\t\t// generate each type container\n\t\t\tvar promise = [];\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\tpromise.push(_this2.buildContainer(model));\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\t// get the hash object\n\t\t\t\tvar hash = _this2.get('hash');\n\n\t\t\t\t// sort each type container array\n\t\t\t\ttypes.forEach(function (type) {\n\t\t\t\t\tif (type && !Ember.isNone(hash.get(type))) {\n\t\t\t\t\t\tvar content = hash.get(type);\n\t\t\t\t\t\t_this2.sortNested(content);\n\t\t\t\t\t\tcontent = content.sorted();\n\t\t\t\t\t\thash.set(type + '.content', content);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn hash;\n\t\t\t});\n\t\t},\n\t\tcreateContainerArray: function createContainerArray(type) {\n\t\t\t_utils.Assert.test('modelInfo must be set in order to call createContainerArray', _typeof(this.get('modelInfo')) === 'object');\n\n\t\t\t// create a new container based off the meta from the modelInfo\n\t\t\tvar meta = this.get('modelInfo').getMetaByType(type);\n\n\t\t\t// create the containerArray\n\t\t\treturn _containerArray.default.create({ content: Ember.A(), sortKeys: meta.sortBy, reverseSortKeys: meta.reverseSortBy, reverseSort: meta.reverseSort, type: meta.type });\n\t\t},\n\t\tsortNested: function sortNested(models) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar remove = [];\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\tif (!Ember.isNone(model.get('parentId'))) {\n\t\t\t\t\tvar parent = _this3.findNested(models, model.get('parentId'));\n\t\t\t\t\tif (!Ember.isNone(parent)) {\n\t\t\t\t\t\tvar children = parent.get('children');\n\t\t\t\t\t\tif (Ember.isNone(children)) {\n\t\t\t\t\t\t\tchildren = _this3.createContainerArray(models.get('type'));\n\t\t\t\t\t\t\tparent.set('children', children);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildren.pushObject(model);\n\t\t\t\t\t\tchildren.set('content', children.sorted());\n\t\t\t\t\t\tremove.push(model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tmodels.removeObjects(remove);\n\t\t},\n\t\tfindNested: function findNested(models, parentId) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar parent = null;\n\t\t\tmodels.find(function (container) {\n\t\t\t\tif (container.get('id') === parentId) {\n\t\t\t\t\tparent = container;\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (!Ember.isEmpty(container.get('children'))) {\n\t\t\t\t\tvar res = _this4.findNested(container.get('children'), parentId);\n\t\t\t\t\tif (!Ember.isNone(res)) {\n\t\t\t\t\t\tparent = res;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn parent;\n\t\t},\n\t\tsetupHash: function setupHash(types) {\n\t\t\tvar _this5 = this;\n\n\t\t\t// set available types for the container to generate\n\t\t\ttypes.forEach(function (type) {\n\t\t\t\t// if the passed in type is in the sortableTypes hash\n\t\t\t\t// then create a containerArray\n\t\t\t\tvar meta = _this5.get('modelInfo').getMetaByType(type);\n\t\t\t\tif (!Ember.isNone(meta)) {\n\t\t\t\t\t// create the containerArray\n\t\t\t\t\t_this5.set('hash.' + type, _containerArray.default.create({ content: Ember.A(), sortKeys: meta.sortBy, reverseSortKeys: meta.reverseSortBy, reverseSort: meta.reverseSort, type: type }));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tcreateContainer: function createContainer(manager, model) {\n\t\t\tvar _container$create;\n\n\t\t\t// get the manager's meta data\n\t\t\tvar meta = manager.getMeta(model);\n\t\t\tvar id = meta.id || null;\n\n\t\t\t// map the properties to match\n\t\t\t// the model array property syntax\n\t\t\tvar watchedProps = [];\n\t\t\tvar props = [];\n\t\t\tmanager.eachProperty(function (key) {\n\t\t\t\twatchedProps.push('model.@each.' + key);\n\t\t\t\tprops.push(key);\n\t\t\t});\n\n\t\t\t// get a ref to the joined model parentId if it has one\n\t\t\tvar nestedId = null;\n\t\t\tif (!Ember.isNone(meta.nested)) {\n\t\t\t\tnestedId = model.get(meta.nested);\n\t\t\t}\n\n\t\t\t// get a ref to the joined model if it has one\n\t\t\tvar typeModel = model.get('' + meta.type);\n\t\t\tif (meta.attrType === 'id') {\n\t\t\t\ttypeModel = model.get(meta.type + '.content');\n\t\t\t\tif (Ember.isNone(id)) {\n\t\t\t\t\ttypeModel = this.createUnasigned();\n\t\t\t\t} else {\n\t\t\t\t\ttypeModel.set('sortWeight', 1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// create a container object with an empty model array\n\t\t\t// and a unique identifier `id` based on the\n\t\t\t// sortType meta property value.\n\t\t\tvar _container = (0, _container2.default)(props, watchedProps, manager.aggregateProperties);\n\n\t\t\t// create new container\n\t\t\tvar container = _container.create((_container$create = {\n\t\t\t\tmodel: Ember.A(),\n\t\t\t\tid: id,\n\t\t\t\tsortBy: Ember.isArray(meta.sortChildren) ? meta.sortChildren : [],\n\t\t\t\treverseSortBy: Ember.isArray(meta.reverseSortChildren) ? meta.reverseSortChildren : [],\n\t\t\t\treverseSort: meta.reverseSortChildren === true ? true : false\n\t\t\t}, _defineProperty(_container$create, meta.type, typeModel), _defineProperty(_container$create, 'parentId', nestedId), _container$create));\n\n\t\t\t// add container to container array\n\t\t\tthis.get('hash.' + meta.type).pushObject(container);\n\n\t\t\t// return container\n\t\t\treturn container;\n\t\t},\n\t\tcreateUnasigned: function createUnasigned() {\n\t\t\treturn Ember.Object.create({\n\t\t\t\tfirstName: (0, _utils.loc)('Unassigned'),\n\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tfullTitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\tcostCode: (0, _utils.loc)('Unassigned'),\n\t\t\t\tequipmentName: (0, _utils.loc)('Unassigned'),\n\t\t\t\tisUnassigned: true,\n\t\t\t\tsortWeight: 2\n\t\t\t});\n\t\t},\n\t\tgetContainer: function getContainer(manager, model) {\n\t\t\t// get meta for this model\n\t\t\tvar meta = manager.getMeta(model);\n\t\t\tvar id = meta.id || null;\n\n\t\t\t// get the container if it already exists\n\t\t\tvar container = this.get('hash.' + meta.type).findBy('id', id);\n\n\t\t\t// if a container is not found then create a new one\n\t\t\t// and add it to the hash type\n\t\t\tif (Ember.isNone(container)) {\n\t\t\t\tcontainer = this.createContainer(manager, model);\n\t\t\t}\n\n\t\t\t// return the container\n\t\t\treturn container;\n\t\t},\n\t\tbuildContainer: function buildContainer(model) {\n\t\t\tvar _this6 = this;\n\n\t\t\t_utils.Assert.isObject(model);\n\t\t\t// set the current model to a new ModelManager\n\t\t\tvar manager = this.get('modelInfo');\n\n\t\t\t// load joined model data\n\t\t\treturn this.loadData(model, manager).then(function (model) {\n\t\t\t\t// loop through valid model attrs\n\t\t\t\tmanager.eachAttribute(function (attr, meta) {\n\t\t\t\t\t// only add types that exists in the hash\n\t\t\t\t\tif (!Ember.isNone(_this6.get('hash.' + meta.type))) {\n\t\t\t\t\t\t// find an existing container for this attr value\n\t\t\t\t\t\tvar container = _this6.getContainer(manager, model);\n\n\t\t\t\t\t\t// add the model to the container\n\t\t\t\t\t\tcontainer.pushObject(model);\n\t\t\t\t\t\tcontainer.sort();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * method for getting the belongsTo data to load.\n   * this method returns a promise when all the data is loaded\n   *\n   * @public\n   * @method loadData\n   * @returns {EmberPromise}\n   */\n\t\tloadData: function loadData(model, manager) {\n\t\t\tvar _this7 = this;\n\n\t\t\tif (Ember.isNone(model)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\n\t\t\tvar promise = [];\n\t\t\tmanager.eachAttribute(function (attr, meta) {\n\t\t\t\t// where rootProjectId === id (this project is the root project)\n\t\t\t\tif (!Ember.isNone(model.get(attr)) && model.get(attr) !== model.id) {\n\t\t\t\t\t// call get on the model to trigger the load\n\t\t\t\t\tvar res = model.get(meta.type);\n\n\t\t\t\t\t// if the property is not a DS.belongsTo then wrap it with a resolve promise\n\t\t\t\t\tif (Ember.isNone(res) || (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' || !res.then) {\n\t\t\t\t\t\tpromise.push(Ember.RSVP.resolve(res));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// call loadData again to after the promise returns to\n\t\t\t\t\t\t// load any models this model needs\n\t\t\t\t\t\tpromise.push(res.then(function (_model) {\n\t\t\t\t\t\t\treturn _this7.loadData(_model, _modelManager.default.create({ model: _model }));\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// wrap null in a promise so the model does not\n\t\t\t\t\t// load itself again.\n\t\t\t\t\tpromise.push(Ember.RSVP.resolve(null));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// return the promise array\n\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\treturn model;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/container/container', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\texports.default = function (props, watchedProps, map) {\n\t\treturn Ember.Object.extend({\n\t\t\tid: null,\n\t\t\tparentId: null,\n\t\t\tmodel: null,\n\t\t\tsortBy: null,\n\t\t\treverseSort: false,\n\n\t\t\tinit: function init() {\n\t\t\t\tthis._super();\n\t\t\t\tthis.recalculate();\n\t\t\t},\n\t\t\tpushObject: function pushObject(model) {\n\t\t\t\tthis.get('model').pushObject(model);\n\t\t\t},\n\n\n\t\t\trecalculate: Ember.observer.apply(undefined, _toConsumableArray(watchedProps).concat([function () {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tprops.forEach(function (key) {\n\t\t\t\t\tif (!Ember.isEmpty(_this.get('model'))) {\n\t\t\t\t\t\tvar meta = map.get(key);\n\t\t\t\t\t\tvar val = void 0;\n\t\t\t\t\t\tif (meta.aggregateType === 'sum') {\n\t\t\t\t\t\t\t// sum property\n\t\t\t\t\t\t\tval = _this.get('model').mapBy(key).reduce(function (a, b) {\n\t\t\t\t\t\t\t\treturn a + b;\n\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t} else if (meta.aggregateType === 'bool') {\n\t\t\t\t\t\t\t// default bools to true\n\t\t\t\t\t\t\tval = true;\n\t\t\t\t\t\t\t// if a false is found then it is all false\n\t\t\t\t\t\t\t_this.get('model').mapBy(key).forEach(function (value) {\n\t\t\t\t\t\t\t\treturn val = value === false ? false : val;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// set value of the key\n\t\t\t\t\t\t_this.set(key, val);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this.set(key, null);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}])),\n\n\t\t\tsort: function sort() {\n\t\t\t\tif (this.get('model.length') > 1 && (!Ember.isEmpty(this.get('reverseSortBy')) || !Ember.isEmpty(this.get('sortBy')))) {\n\t\t\t\t\tvar sorted = this.get('model');\n\n\t\t\t\t\t// reverse sort by first\n\t\t\t\t\tif (!Ember.isEmpty(this.get('reverseSortBy'))) {\n\t\t\t\t\t\tsorted = sorted.sortBy.apply(sorted, this.get('reverseSortBy'));\n\t\t\t\t\t\tsorted = sorted.reverse();\n\t\t\t\t\t}\n\n\t\t\t\t\t// sort by second if both sortBy and reverseSortBy exist\n\t\t\t\t\tif (!Ember.isEmpty(this.get('sortBy'))) {\n\t\t\t\t\t\tsorted = this.get('model').sortBy.apply(sorted, this.get('sortBy'));\n\n\t\t\t\t\t\t// legacy support for reverseSort remove this after deprecation is through\n\t\t\t\t\t\tif (Ember.isEmpty(this.get('reverseSortBy')) && this.get('reverseSort') === true) {\n\t\t\t\t\t\t\t// deprecate()\n\t\t\t\t\t\t\tsorted = sorted.reverse();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.set('model', sorted);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n});","define('busy-app/utils/container/model-manager', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction attr(type, options) {\n\t\treturn Ember.computed({\n\t\t\tget: function get(key) {\n\t\t\t\treturn Ember.get(this, '_internalModel.' + key);\n\t\t\t},\n\t\t\tset: function set(key, value) {\n\t\t\t\tEmber.set(this, '_internalModel.' + key, value);\n\t\t\t}\n\t\t}).meta({ type: type, isAttribute: true, options: options });\n\t}\n\n\t// defines a set of default sort attrs\n\tvar kDefaultSort = Ember.Object.extend({\n\t\t_internalModel: null,\n\t\tmemberId: attr('id', { defaultValue: null, sortable: true, sortBy: ['member.firstName', 'member.lastName', 'member.createdOn'], sortChildren: ['startTime'], reverseSortChildren: true }),\n\t\tprojectId: attr('id', { defaultValue: null, sortable: true, sortBy: ['project.fullTitle'], sortChildren: ['startTime'], reverseSortChildren: true }),\n\t\tcostCodeId: attr('id', { defaultValue: null, sortable: true, sortBy: ['costCode.costCode'], sortChildren: ['startTime'], reverseSortChildren: true }),\n\t\tequipmentId: attr('id', { defaultValue: null, sortable: true, sortBy: ['equipment.equipmentName'], sortChildren: ['startTime'], reverseSortChildren: true })\n\t});\n\n\tkDefaultSort.reopenClass({\n\t\t_create: kDefaultSort.create,\n\t\tcreate: function create(props) {\n\t\t\tvar _class = this._create();\n\t\t\t_class._internalModel = {};\n\t\t\t_class.setProperties(props);\n\t\t\treturn _class;\n\t\t}\n\t});\n\n\t/**\n  * `Util/Container/ModelManager`\n  *\n  *\n  */\n\texports.default = Ember.Object.extend({\n\t\tmodel: null,\n\t\t_currentAttr: null,\n\n\t\tsortProperties: null,\n\t\taggregateProperties: null,\n\t\tsortMapByType: null,\n\t\trawMeta: null,\n\n\t\t/**\n   * Sets up initial map objects\n   *\n   * @private\n   * @method init\n   */\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.sortProperties = new window.Map();\n\t\t\tthis.aggregateProperties = new window.Map();\n\t\t\tthis.sortMapByType = new window.Map();\n\t\t\tthis.rawMeta = new window.Map();\n\n\t\t\tthis.setup();\n\t\t},\n\n\n\t\t/**\n   * Sets up all the map objects with valid data\n   * from the model so it can be quickly accessed\n   * when needed\n   *\n   * @private\n   * @method setup\n   */\n\t\tsetup: function setup() {\n\t\t\t// set default sort properties\n\t\t\tthis.parseMeta(kDefaultSort.create({}));\n\n\t\t\t// override defaults with model properties\n\t\t\tvar model = this.get('model');\n\t\t\tthis.parseMeta(model);\n\t\t},\n\t\tparseMeta: function parseMeta(model) {\n\t\t\t// loop through raw model properties to find any computed properties\n\t\t\tfor (var key in model) {\n\t\t\t\t// properties must be an object\n\t\t\t\tif (!Ember.isEmpty(model[key]) && _typeof(model[key]) === 'object') {\n\t\t\t\t\t// property object must have an _meta property\n\t\t\t\t\tif (!Ember.isNone(model[key]._meta)) {\n\t\t\t\t\t\t// get attr meta, sortable, and aggregateType\n\t\t\t\t\t\tvar meta = model[key]._meta;\n\t\t\t\t\t\tif (!Ember.isNone(Ember.get(meta, 'options'))) {\n\t\t\t\t\t\t\tEmber.merge(meta, Ember.get(meta, 'options'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.rawMeta.set(key, meta);\n\n\t\t\t\t\t\tvar sortable = Ember.get(meta, 'sortable');\n\t\t\t\t\t\tvar aggregateType = Ember.get(meta, 'aggregateType');\n\n\t\t\t\t\t\t// if sortable then add to sort attrs\n\t\t\t\t\t\t// else if aggregateType is set then add to aggregateProperties\n\t\t\t\t\t\tif (sortable === true) {\n\t\t\t\t\t\t\tvar type = this._type(key, meta);\n\t\t\t\t\t\t\tvar id = this._id(key, meta, model);\n\n\t\t\t\t\t\t\tvar sortBy = this._sortBy(type, key, meta, 'sortBy');\n\t\t\t\t\t\t\tvar reverseSortBy = this._sortBy(type, key, meta, 'reverseSortBy');\n\n\t\t\t\t\t\t\tif (Ember.isEmpty(sortBy) && Ember.isEmpty(reverseSortBy)) {\n\t\t\t\t\t\t\t\tsortBy = [type];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar _meta = {\n\t\t\t\t\t\t\t\tsortable: sortable, aggregateType: aggregateType, id: id, type: type,\n\t\t\t\t\t\t\t\tsortBy: sortBy, reverseSortBy: reverseSortBy,\n\t\t\t\t\t\t\t\tattrType: Ember.get(meta, 'type'),\n\t\t\t\t\t\t\t\treverseSort: Ember.get(meta, 'reverseSort'),\n\t\t\t\t\t\t\t\tsortChildren: Ember.get(meta, 'sortChildren') || [],\n\t\t\t\t\t\t\t\treverseSortChildren: Ember.get(meta, 'reverseSortChildren'),\n\t\t\t\t\t\t\t\tnested: Ember.get(meta, 'nested'),\n\t\t\t\t\t\t\t\tformat: Ember.get(meta, 'format')\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// add new meta object for sortProperties map\n\t\t\t\t\t\t\tthis.sortProperties.set(key, _meta);\n\n\t\t\t\t\t\t\t// add type and id to maps for quick lookups\n\t\t\t\t\t\t\tthis.sortMapByType.set(type, key);\n\t\t\t\t\t\t} else if (!Ember.isEmpty(aggregateType)) {\n\t\t\t\t\t\t\t// add to aggregateProperties map\n\t\t\t\t\t\t\tthis.aggregateProperties.set(key, { aggregateType: aggregateType });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thasProjectData: function hasProjectData() {\n\t\t\tvar meta = this.getMetaByAttr('projectId');\n\t\t\tif (!Ember.isNone(meta) && (typeof meta === 'undefined' ? 'undefined' : _typeof(meta)) === 'object' && !Ember.isEmpty(meta.nested)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n   * keeps track of which attribute is currently\n   * being referenced in the eachAttribute callback\n   *\n   * @private\n   * @method currentAttr\n   * @param attr {string} the property to set as the current attribute\n   */\n\t\tcurrentAttr: function currentAttr(attr) {\n\t\t\t_utils.Assert.isString(attr);\n\t\t\tthis.set('_currentAttr', attr);\n\t\t},\n\n\n\t\t/**\n   * Quick reference method for getting the meta data\n   *\n   * this method can only be used when inside the eachAttribute callback\n   * function\n   *\n   * @public\n   * @method getMeta\n   * @returns {object}\n   */\n\t\tgetMeta: function getMeta(model) {\n\t\t\tvar attr = this.get('_currentAttr');\n\t\t\tif (!Ember.isEmpty(attr)) {\n\t\t\t\tvar meta = this.getMetaByAttr(attr);\n\t\t\t\treturn {\n\t\t\t\t\tsortable: meta.sortable,\n\t\t\t\t\taggregateType: meta.aggregateType,\n\t\t\t\t\tid: this.getId(model),\n\t\t\t\t\ttype: meta.type,\n\t\t\t\t\tattrType: meta.attrType,\n\t\t\t\t\treverseSort: meta.reverseSort,\n\t\t\t\t\tsortBy: (meta.sortBy || []).slice(0),\n\t\t\t\t\treverseSortBy: (meta.reverseSortBy || []).slice(0),\n\t\t\t\t\tsortChildren: (meta.sortChildren || []).slice(0),\n\t\t\t\t\treverseSortChildren: (meta.reverseSortChildren || []).slice(0),\n\t\t\t\t\tnested: meta.nested,\n\t\t\t\t\tformat: meta.format\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetId: function getId(model) {\n\t\t\tvar attr = this.get('_currentAttr');\n\t\t\tif (!Ember.isEmpty(attr)) {\n\t\t\t\tvar meta = this.rawMeta.get(attr);\n\t\t\t\treturn this._id(attr, meta, model);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\n\t\t/**\n   * Quick reference method for getting the nested id\n   *\n   * this method can only be used when inside the eachAttribute callback\n   * function\n   *\n   * @public\n   * @method getNestedId\n   * @returns {object}\n   */\n\t\tgetNestedId: function getNestedId(model) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tif (!Ember.isNone(meta)) {\n\t\t\t\treturn model.get(meta.nested);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\n\t\t/**\n   * loop method for iterating over the sortProperties map\n   *\n   * @public\n   * @method eachAttribute\n   * @param callback {function}\n   * @param target {object}\n   */\n\t\teachAttribute: function eachAttribute(callback) {\n\t\t\tvar _this = this;\n\n\t\t\tvar target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\t\tthis.sortProperties.forEach(function (meta, attr) {\n\t\t\t\t_this.currentAttr(attr);\n\t\t\t\tcallback.call(target, attr, meta);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * loop method for iterating over the aggregateProperties map\n   *\n   * @public\n   * @method eachProperty\n   * @param callback {function}\n   * @param target {object}\n   */\n\t\teachProperty: function eachProperty(callback) {\n\t\t\tvar target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\t\tthis.aggregateProperties.forEach(function (meta, attr) {\n\t\t\t\tcallback.call(target, attr, meta);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * getter for the meta object when not inside a eachAttribute loop\n   *\n   * this method needs the type string passed in\n   *\n   * @public\n   * @method getMetaByType\n   * @param type {string}\n   * @return {objects}\n   */\n\t\tgetMetaByType: function getMetaByType(type) {\n\t\t\treturn this.getMetaByAttr(this.sortMapByType.get(type));\n\t\t},\n\n\n\t\t/**\n   * getter for the meta object when not inside a eachAttribute loop\n   *\n   * this method needs the attribute key passed in\n   *\n   * @public\n   * @method getMetaByType\n   * @param type {string}\n   * @return {objects}\n   */\n\t\tgetMetaByAttr: function getMetaByAttr(key) {\n\t\t\tif (!Ember.isEmpty(key)) {\n\t\t\t\treturn this.sortProperties.get(key);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\n\t\t/**\n   * method for getting the belongsTo data to load.\n   * this method returns a promise when all the data is loaded\n   *\n   * @public\n   * @method loadData\n   * @returns {EmberPromise}\n   */\n\t\tloadData: function loadData() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar promise = [];\n\t\t\tthis.sortProperties.forEach(function (meta) {\n\t\t\t\tvar res = _this2.get('model.' + meta.type);\n\t\t\t\tif (!res.then) {\n\t\t\t\t\tres = Ember.RSVP.resolve(res);\n\t\t\t\t}\n\t\t\t\tpromise.push(res);\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\treturn _this2;\n\t\t\t});\n\t\t},\n\t\t_id: function _id(attr, meta, model) {\n\t\t\tvar attrType = Ember.get(meta, 'type');\n\t\t\tvar id = model.get(attr);\n\t\t\tif (attrType === 'date') {\n\t\t\t\tvar format = Ember.getWithDefault(meta, 'format', 'YYYY-MM-DD');\n\t\t\t\tif (!Ember.isNone(format)) {\n\t\t\t\t\tid = _utils.Time.date(id).format(format);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn id;\n\t\t},\n\t\t_type: function _type(attr, meta) {\n\t\t\tvar attrType = Ember.get(meta, 'type');\n\n\t\t\t// if sortType is `id` then assume the models\n\t\t\t// has a defined belongsTo relationship for\n\t\t\t// the id\n\t\t\tvar type = attr;\n\t\t\tif (attrType === 'id') {\n\t\t\t\ttype = type.replace('Id', '');\n\t\t\t}\n\t\t\treturn type;\n\t\t},\n\t\t_sortBy: function _sortBy(type, attr, meta, sortType) {\n\t\t\t// get the sort keys for this data type\n\t\t\tvar sortBy = Ember.get(meta, sortType);\n\t\t\tif (!Ember.isEmpty(sortBy)) {\n\t\t\t\t// copy the array and add sortWeight for models joins\n\t\t\t\tsortBy = sortBy.slice(0);\n\t\t\t\tsortBy.unshift(type + '.sortWeight');\n\t\t\t}\n\t\t\treturn sortBy;\n\t\t}\n\t});\n});","define('busy-app/utils/cost-code-csv-import', ['exports', 'busy-app/utils/csv-import', '@busy-web/utils'], function (exports, _csvImport, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _csvImport.default.extend({\n\t\theaderLists: null,\n\t\tshowInsurance: false,\n\n\t\tdefaultMap: Ember.computed('showInsurance', function () {\n\t\t\tvar data = {\n\t\t\t\tcostCode: \"Cost Code #\",\n\t\t\t\ttitle: \"Description\",\n\t\t\t\tunitTitle: \"Unit of Measure\"\n\t\t\t};\n\n\t\t\tif (this.get('showInsurance')) {\n\t\t\t\tdata.workersCompTitle = \"Insurance Workers Compensation Class\";\n\t\t\t\tdata.generalLiabilityTitle = \"Insurance General Liability Class\";\n\t\t\t}\n\t\t\treturn data;\n\t\t}),\n\n\t\ttriggerParse: function triggerParse() {\n\t\t\tthis.parse();\n\t\t},\n\t\tsetHeaderByListType: function setHeaderByListType(listItem) {\n\t\t\tthis.set('headerMap.' + listItem.get('mapKey'), listItem.get('value'));\n\t\t},\n\t\tbuildHeaderLists: function buildHeaderLists(headers) {\n\t\t\tvar _this = this;\n\n\t\t\tvar defaultMap = this.get('defaultMap');\n\t\t\tdefaultMap = this.setHeaderMap(defaultMap);\n\t\t\tvar headerList = [];\n\t\t\tEmber.$.each(defaultMap, function (mapKey, mapHeader) {\n\t\t\t\tvar simpleKey = mapHeader.camelize();\n\t\t\t\tif (defaultMap.hasOwnProperty(mapKey)) {\n\t\t\t\t\tvar list = Ember.Object.create({ key: mapKey, label: mapHeader, value: [] });\n\t\t\t\t\theaders.forEach(function (header) {\n\t\t\t\t\t\tvar simpleHeader = header.camelize();\n\t\t\t\t\t\tvar isSelected = simpleKey === simpleHeader;\n\t\t\t\t\t\tif (!isSelected && mapKey === 'costCode' && /cost/.test(simpleHeader)) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t} else if (!isSelected && mapKey === 'title' && /desc/.test(simpleHeader)) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t} else if (!isSelected && mapKey === 'unitTitle' && /unit/.test(simpleHeader)) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar item = Ember.Object.create({ key: simpleHeader, mapKey: mapKey, value: header, _selected: isSelected });\n\t\t\t\t\t\tif (isSelected) {\n\t\t\t\t\t\t\t_this.setHeaderByListType(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlist.get('value').pushObject(item);\n\t\t\t\t\t});\n\t\t\t\t\theaderList.pushObject(list);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.set('headerLists', headerList);\n\t\t},\n\t\tcreateNewModel: function createNewModel() {\n\t\t\treturn this.get('store').createRecord('cost-code', {\n\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\torganizationId: this.get('organizationId')\n\t\t\t});\n\t\t},\n\t\tbeforeSave: function beforeSave(models) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar glArray = [];\n\t\t\tvar wcArray = [];\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\tvar glTitle = model.get('generalLiabilityTitle');\n\t\t\t\tvar wcTitle = model.get('workersCompTitle');\n\t\t\t\tif (!Ember.isNone(glTitle)) {\n\t\t\t\t\tvar glModel = glArray.findBy('title', glTitle);\n\t\t\t\t\tif (Ember.isNone(glModel)) {\n\t\t\t\t\t\tglModel = _this2.get('store').createRecord('general-liability', {\n\t\t\t\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\t\t\t\torganizationId: _this2.get('organizationId'),\n\t\t\t\t\t\t\ttitle: glTitle\n\t\t\t\t\t\t});\n\t\t\t\t\t\tglArray.pushObject(glModel);\n\t\t\t\t\t}\n\t\t\t\t\tmodel.set('generalLiabilityId', glModel.id);\n\t\t\t\t\tmodel.set('generalLiability', glModel);\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(wcTitle)) {\n\t\t\t\t\tvar wcModel = wcArray.findBy('title', wcTitle);\n\t\t\t\t\tif (Ember.isNone(wcModel)) {\n\t\t\t\t\t\twcModel = _this2.get('store').createRecord('workers-comp', {\n\t\t\t\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\t\t\t\torganizationId: _this2.get('organizationId'),\n\t\t\t\t\t\t\ttitle: wcTitle\n\t\t\t\t\t\t});\n\t\t\t\t\t\twcArray.pushObject(wcModel);\n\t\t\t\t\t}\n\t\t\t\t\tmodel.set('workersCompId', wcModel.id);\n\t\t\t\t\tmodel.set('workersComp', wcModel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar insArray = wcArray.concat(glArray);\n\t\t\tvar promise = [];\n\t\t\tinsArray.forEach(function (item) {\n\t\t\t\tpromise.push(item.saveBatch(true));\n\t\t\t});\n\t\t\treturn Ember.RSVP.all(promise);\n\t\t},\n\t\tonFinishFileParse: function onFinishFileParse(headers, data) {\n\t\t\tthis._super(headers, data);\n\t\t\tthis.buildHeaderLists(headers);\n\t\t},\n\t\thasModel: function hasModel(model) {\n\t\t\tvar found = this.get('model').find(function (item) {\n\t\t\t\tif (item.get('costCode') === model.get('costCode')) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\treturn !Ember.isNone(found) ? found : false;\n\t\t},\n\t\tmodelHasData: function modelHasData(model) {\n\t\t\tvar costCode = (model.get('costCode') || '').toString().trim();\n\t\t\tif (!Ember.isEmpty(costCode)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n});","define('busy-app/utils/csv-export', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\texports.default = Ember.Object.extend({\n\t\tdata: null,\n\t\tdataMap: null,\n\t\tisReversed: false,\n\n\t\tsetDataMap: function setDataMap(dataMap) {\n\t\t\tvar isReversed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\t\t(true && !(!Ember.isNone(dataMap) && Ember.typeOf(dataMap) === 'object') && Ember.assert('setDataMap requires an key:value object where key is the data mapped path and value is the header title', !Ember.isNone(dataMap) && Ember.typeOf(dataMap) === 'object'));\n\n\n\t\t\tEmber.set(this, 'isReversed', isReversed);\n\n\t\t\tvar _map = Ember.Map.create();\n\t\t\tObject.keys(dataMap).forEach(function (key) {\n\t\t\t\t_map.set(key, dataMap[key]);\n\t\t\t});\n\n\t\t\tthis.set('dataMap', _map);\n\t\t},\n\t\tsetData: function setData(data) {\n\t\t\t(true && !(Ember.typeOf(data) === 'array') && Ember.assert('setData requires an array of objects', Ember.typeOf(data) === 'array'));\n\n\t\t\tthis.set('data', data);\n\t\t},\n\t\tbuildHeaderLine: function buildHeaderLine(dataMap) {\n\t\t\tvar header = [];\n\t\t\tvar isReversed = Ember.get(this, 'isReversed');\n\t\t\tdataMap.forEach(function (value, key) {\n\t\t\t\tif (isReversed) {\n\t\t\t\t\theader.push(normalizeKey(key));\n\t\t\t\t} else {\n\t\t\t\t\theader.push(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn header;\n\t\t},\n\t\tbuildContentLine: function buildContentLine(dataMap, data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar line = [];\n\t\t\tvar isReversed = Ember.get(this, 'isReversed');\n\t\t\tdataMap.forEach(function (value, key) {\n\t\t\t\tvar val = void 0;\n\t\t\t\tif (isReversed) {\n\t\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\t\tval = value(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = Ember.get(data, value);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tval = Ember.get(data, key) || \"\";\n\t\t\t\t}\n\t\t\t\tline.push(_this.csvSafeString(val));\n\t\t\t});\n\n\t\t\treturn line;\n\t\t},\n\t\tcsvSafeString: function csvSafeString(str) {\n\t\t\tif (Ember.isNone(str)) {\n\t\t\t\tstr = '';\n\t\t\t}\n\t\t\tif (Ember.typeOf(str) !== 'string') {\n\t\t\t\tstr = str.toString();\n\t\t\t}\n\t\t\t// replace non breaking spaces with regular space\n\t\t\tstr = str.replace(/\\u00a0/g, ' ');\n\n\t\t\t// remove begining and end quotes\n\t\t\tstr = str.replace(/^\"/, '');\n\t\t\tstr = str.replace(/\"$/, '');\n\n\t\t\t// escape any quotes left inside the string\n\t\t\tstr = str.replace(/\"/g, '\"\"');\n\n\t\t\t// add the begining and ending quotes\n\t\t\treturn '\"' + str + '\"';\n\t\t},\n\t\tbuildContentString: function buildContentString() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar data = this.get('data');\n\t\t\tvar dataMap = this.get('dataMap');\n\n\t\t\tvar content = [this.buildHeaderLine(dataMap)].concat(_toConsumableArray(data.map(function (item) {\n\t\t\t\treturn _this2.buildContentLine(dataMap, item);\n\t\t\t})));\n\n\t\t\treturn content.join('\\n');\n\t\t},\n\t\tgenerate: function generate(name) {\n\t\t\tvar content = this.buildContentString();\n\t\t\tvar filename = name + '.csv';\n\n\t\t\tthis.triggerDownload(content, filename);\n\t\t},\n\t\ttriggerDownload: function triggerDownload(content, filename) {\n\t\t\tvar type = filename.split('.')[1];\n\n\t\t\t(true && !(typeof content === 'string') && Ember.assert('content must be string', typeof content === 'string'));\n\t\t\t(true && !(!Ember.isNone(type)) && Ember.assert(\"filename must include the file extension\", !Ember.isNone(type)));\n\n\n\t\t\tif (window.navigator.msSaveOrOpenBlob) {\n\t\t\t\tvar blob = new window.Blob([decodeURIComponent(encodeURI(content))], {\n\t\t\t\t\ttype: 'text/' + type + ';charset=utf-8;'\n\t\t\t\t});\n\t\t\t\twindow.navigator.msSaveBlob(blob, filename);\n\t\t\t} else {\n\t\t\t\tvar fileContent = \"data:application/octet-stream;base64,\";\n\t\t\t\tfileContent += this.encodeBase64(content);\n\n\t\t\t\tvar link = document.createElement('a');\n\t\t\t\tdocument.body.appendChild(link);\n\t\t\t\tlink.setAttribute('href', fileContent);\n\t\t\t\tlink.setAttribute('download', filename);\n\n\t\t\t\tlink.click();\n\t\t\t}\n\t\t},\n\t\tencodeBase64: function encodeBase64(str) {\n\t\t\treturn window.btoa(this.encodeUTF8(str));\n\t\t},\n\t\tencodeUTF8: function encodeUTF8(str) {\n\t\t\treturn window.unescape(encodeURIComponent(str));\n\t\t}\n\t});\n\n\n\tfunction normalizeKey(key) {\n\t\tvar kp = Ember.String.dasherize(key).replace(/-\\w/g, function (letter) {\n\t\t\treturn ' ' + letter.slice(1).toUpperCase();\n\t\t});\n\t\treturn kp.slice(0, 1).toUpperCase() + kp.slice(1);\n\t}\n});","define('busy-app/utils/csv-import', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/settings'], function (exports, _utils, _logger, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/**\n  * `CsvRow`\n  *\n  * Object for parseing csv json data rows\n  *\n  */\n\t/**\n  * @module Utils\n  *\n  */\n\tvar CsvRow = Ember.Object.extend({\n\t\t/**\n   * Holds the CSV data row\n   *\n   * @private\n   * @property _data\n   * @type object\n   */\n\t\t_data: null,\n\n\t\t/**\n   * The CsvImport Class that created an instance of this\n   *\n   * @private\n   * @property csvClass\n   * @type CsvImport instance\n   */\n\t\tcsvClass: null,\n\n\t\tpushData: function pushData(data) {\n\t\t\tthis.set('_data', data);\n\t\t},\n\t\tget: function get(name) {\n\t\t\tvar value = null;\n\t\t\tvar headerMap = this.csvClass.get('headerMap');\n\t\t\tvar _data = this._data;\n\t\t\tvar key = headerMap[name];\n\n\t\t\t(true && !(!Ember.isNone(key)) && Ember.assert(\"Invalid Name passed to getVal() - [\" + name + \"]\", !Ember.isNone(key)));\n\n\n\t\t\tif (!Ember.isNone(Ember.get(_data, key))) {\n\t\t\t\tvalue = Ember.get(_data, key);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\t/**\n  * `Library/CsvImport`\n  *\n  * base class extendable for specific csv imports\n  */\n\tvar CsvImport = Ember.Object.extend(Ember.Evented, {\n\t\t/**\n   * Ember store intsance passed in on load\n   *\n   * @public\n   * @property store\n   * @type object\n   */\n\t\tstore: Ember.inject.service('store'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * parsed csv models get stored here\n   * and can be accessed with instance.get('model')\n   *\n   * @public\n   * @property model\n   * @type array\n   */\n\t\tmodel: null,\n\n\t\t/**\n   * stores the raw csv headers\n   *\n   * @private\n   * @property _rawHeaders\n   * @type object\n   */\n\t\t_rawHeaders: null,\n\n\t\t/**\n   * stores the raw csv data\n   *\n   * @private\n   * @property _rawDataRows\n   * @type array\n   */\n\t\t_rawDataRows: null,\n\n\t\t/**\n   * stores the data parsed by the csv in a key:value\n   * map to prevent duplicates from being created\n   *\n   * @private\n   * @property _dataMap\n   * @type Map\n   */\n\t\t_dataMap: null,\n\n\t\t/**\n   * papaparse option for parsing a .csv file\n   * set this for the csv file delimiter\n   *\n   * @public\n   * @property delimiter\n   * @type string\n   * @default |comma|\n   */\n\t\tdelimiter: ',',\n\n\t\t/**\n   * papaparse options for parsing a .csv file\n   * set this if the csv has a header\n   *\n   * @public\n   * @property hasHeader\n   * @type boolean\n   * @default true\n   */\n\t\thasHeader: true,\n\n\t\t/**\n   * papaparse option for parsing a .csv file\n   * set this if dynamic typing should be used\n   *\n   * @public\n   * @property useDynamicTyping\n   * @type boolean\n   * @default true\n   */\n\t\tuseDynamicTyping: true,\n\n\t\t/**\n   * Key:value object for maping the headers of the csv\n   * to the headers used by default in the defaultMap property.\n   *\n   * Each row of raw csv data will be a new instance of a CsvRow object.\n   * The CsvRow object will use the headerMap to get values from the row\n   * based on the key defined in the default map and use its value\n   * to get the value from the CsvRow object.\n   *\n   * @public\n   * @property headerMap\n   * @type object\n   */\n\t\theaderMap: null,\n\n\t\t/**\n   * Default header map to define the expected rows cell value\n   * from the csv.\n   *\n   * See headerMap for more information.\n   *\n   * @public\n   * @property defaultMap\n   * @type object\n   */\n\t\tdefaultMap: Ember.computed(function () {\n\t\t\treturn {};\n\t\t}),\n\n\t\t/**\n   * The authenticated organization that represents\n   * the data being imported\n   *\n   * @public\n   * @property organization\n   * @type DS.Model\n   */\n\t\torganization: Ember.computed('auth.organization', function () {\n\t\t\treturn this.get('auth.organization');\n\t\t}),\n\n\t\t/**\n   * The authenticated organization id that represents\n   * the data being imported\n   *\n   * @public\n   * @property organizationId\n   * @type string\n   */\n\t\torganizationId: Ember.computed('organization.id', function () {\n\t\t\treturn this.get('organization.id');\n\t\t}),\n\n\t\trun: function run(file) {\n\t\t\t(true && !(!Ember.isNone(file)) && Ember.assert(\"You must provide a file before calling run.\", !Ember.isNone(file)));\n\n\n\t\t\tthis.readFile(file);\n\t\t\treturn this;\n\t\t},\n\t\treadFile: function readFile(file) {\n\t\t\tvar _this = this;\n\n\t\t\t// Get the file extension from the FileObject.name\n\t\t\tvar extension = file.name.split('.').pop().toLowerCase();\n\n\t\t\t// lists of the supported file types\n\t\t\t// for excel parse and csv parse\n\t\t\tvar isExcel = ['xlsx', 'xls'];\n\t\t\tvar isOther = ['csv'];\n\n\t\t\t// create a FileReader instance\n\t\t\tvar reader = new window.FileReader();\n\t\t\treader.onload = function (evt) {\n\t\t\t\tvar uploadedFile = void 0;\n\t\t\t\tif (evt.srcElement !== undefined && evt.srcElement.result) {\n\t\t\t\t\t// use the proper parse class for the extension\n\t\t\t\t\tuploadedFile = evt.srcElement.result;\n\t\t\t\t} else {\n\t\t\t\t\tuploadedFile = evt.target.result;\n\t\t\t\t}\n\n\t\t\t\tif (isExcel.indexOf(extension) !== -1) {\n\t\t\t\t\t_this.parseXLSFile(uploadedFile);\n\t\t\t\t} else {\n\t\t\t\t\t_this.parseCSVFile(uploadedFile);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// read the file as binary for xls types\n\t\t\tif (isExcel.indexOf(extension) !== -1) {\n\t\t\t\treader.readAsBinaryString(file);\n\t\t\t} else if (isOther.indexOf(extension) !== -1) {\n\t\t\t\treader.readAsText(file);\n\t\t\t} else {\n\t\t\t\t// throw not accepted file type error\n\t\t\t\tthis.triggerError('File type [' + extension + '] not accepted!');\n\t\t\t}\n\t\t},\n\t\tparseXLSFile: function parseXLSFile(file) {\n\t\t\tvar XLSX = window.XLSX;\n\t\t\tvar result = XLSX.read(file, { type: 'binary' });\n\t\t\tvar sheet = result.Sheets[result.SheetNames[0]];\n\t\t\tvar json = XLSX.utils.sheet_to_json(sheet);\n\n\t\t\tvar prepJSON = [];\n\t\t\tObject.keys(json).forEach(function (key) {\n\t\t\t\tvar item = Ember.get(json, key);\n\t\t\t\tvar obj = {};\n\t\t\t\tObject.keys(item).forEach(function (name) {\n\t\t\t\t\tvar value = Ember.get(item, name);\n\t\t\t\t\tEmber.set(obj, name.trim().replace(/ {2}/g, ' '), value);\n\t\t\t\t});\n\t\t\t\tprepJSON.push(obj);\n\t\t\t});\n\t\t\tthis.prepareJSON(prepJSON);\n\t\t},\n\t\tparseCSVFile: function parseCSVFile(file) {\n\t\t\t// remove empty lines\n\t\t\tfile = file.replace(/^(,,)+$/mg, function () {\n\t\t\t\treturn '';\n\t\t\t});\n\n\t\t\t// remove whitespace\n\t\t\tfile = file.replace(/((,[ ]+)|([ ]+,))/g, ',');\n\t\t\tfile = file.replace(/((\"[ ]+)|([ ]+\"))/g, '\"');\n\t\t\tfile = file.replace(/ {2}/g, ' ');\n\n\t\t\tvar options = {\n\t\t\t\tdelimiter: this.get('delimiter'),\n\t\t\t\theader: this.get('hasHeader'),\n\t\t\t\tdynamicTyping: this.get('useDynamicTyping')\n\t\t\t};\n\n\t\t\tvar result = window.Papa.parse(file, options);\n\t\t\tthis.prepareJSON(this.removeInvalid(result.data));\n\t\t},\n\t\tremoveInvalid: function removeInvalid(data) {\n\t\t\tvar res = [];\n\t\t\tvar cols = Object.keys(data[0]);\n\t\t\tEmber.$.each(data, function (k, v) {\n\t\t\t\tif (data.hasOwnProperty(k)) {\n\t\t\t\t\tvar isValid = true;\n\t\t\t\t\tEmber.$.each(cols, function (key, val) {\n\t\t\t\t\t\tif (cols.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tif (Ember.get(v, val) === undefined) {\n\t\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\tres.push(v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t},\n\t\tprepareJSON: function prepareJSON(jsonArray) {\n\t\t\tvar headers = Object.keys(jsonArray[0]);\n\t\t\tthis.set('_rawHeaders', headers);\n\t\t\tthis.set('_rawDataRows', jsonArray);\n\t\t\tthis.onFinishFileParse(headers, jsonArray);\n\t\t\treturn this;\n\t\t},\n\t\tparse: function parse() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar data = this.get('_rawDataRows');\n\t\t\tthis.set('model', []);\n\t\t\tthis._dataMap = Ember.Map.create();\n\t\t\tthis.set('hasError', false);\n\n\t\t\tvar finishedItems = 0;\n\t\t\tEmber.$.each(data, function (key, rowData) {\n\t\t\t\tif (data.hasOwnProperty(key) && !_this2.get('hasError')) {\n\t\t\t\t\tvar row = CsvRow.create({ csvClass: _this2 });\n\t\t\t\t\trow.pushData(rowData);\n\n\t\t\t\t\t_this2.extractData(row);\n\n\t\t\t\t\tfinishedItems++;\n\t\t\t\t\tif (finishedItems >= data.length) {\n\t\t\t\t\t\t_this2.onDoneParsing();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\tapplyTransform: function applyTransform(model, data, name) {\n\t\t\tvar value = data.get(name) || null;\n\n\t\t\tif (/\\u00a0/.test(value)) {\n\t\t\t\t_logger.default.warn('Non Breaking Space detected', value);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(value) && typeof value === 'string') {\n\t\t\t\tvalue = this.csvSafeString(value);\n\t\t\t}\n\n\t\t\tif (/\\u00a0/.test(value)) {\n\t\t\t\t_logger.default.warn('Non Breaking Space removed', value);\n\t\t\t}\n\n\t\t\tvar transform = this.get(name + 'Transform');\n\t\t\tif (!Ember.isNone(transform)) {\n\t\t\t\tvalue = transform.call(this, value, model);\n\t\t\t}\n\n\t\t\tmodel.set(name, value);\n\t\t\treturn value;\n\t\t},\n\t\tcsvSafeString: function csvSafeString(str) {\n\t\t\t// replace non breaking spaces with regular space\n\t\t\tstr = str.replace(/\\u00a0/g, ' ');\n\n\t\t\t// remove begining and end quotes\n\t\t\tstr = str.replace(/^\"/, '');\n\t\t\tstr = str.replace(/\"$/, '');\n\n\t\t\t// escape any quotes left inside the string\n\t\t\tstr = str.replace(/\"\"/g, '\"');\n\n\t\t\t// remove invalid char\n\t\t\tstr = str.replace(/\\uFFFD/g, '');\n\n\t\t\t// add the begining and ending quotes\n\t\t\treturn str;\n\t\t},\n\t\textractData: function extractData(data) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar model = this.createNewModel();\n\t\t\tvar _map = this.get('headerMap');\n\t\t\tEmber.$.each(_map, function (key) {\n\t\t\t\tif (_map.hasOwnProperty(key) && !_this3.get('hasError')) {\n\t\t\t\t\t_this3.applyTransform(model, data, key);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.hasModel(model) && this.modelHasData(model)) {\n\t\t\t\tthis.get('model').pushObject(model);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\thasModel: function hasModel(model) {\n\t\t\t(true && !(false) && Ember.assert(\"You must override this function to return a boolean\", false));\n\n\t\t\treturn model;\n\t\t},\n\t\tmodelHasData: function modelHasData(model) {\n\t\t\t(true && !(false) && Ember.assert(\"You must override this function to return a boolean\", false));\n\n\t\t\treturn model;\n\t\t},\n\t\tcreateNewModel: function createNewModel() {\n\t\t\t(true && !(false) && Ember.assert(\"createNewModel should be overriden to return a DS.Model instance\", false));\n\t\t},\n\t\tsetHeaderMap: function setHeaderMap(headerMap) {\n\t\t\tvar _map = this.get('defaultMap');\n\n\t\t\tif (!Ember.isNone(headerMap)) {\n\t\t\t\tEmber.$.each(headerMap, function (key, item) {\n\t\t\t\t\tif (headerMap.hasOwnProperty(key)) {\n\t\t\t\t\t\tEmber.set(_map, key, item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.set('headerMap', _map);\n\t\t\treturn _map;\n\t\t},\n\t\ttriggerError: function triggerError(error) {\n\t\t\tthis.set('hasError', true);\n\t\t\tthis.trigger('error', error);\n\t\t},\n\t\tonFinishFileParse: function onFinishFileParse(headers, data) {\n\t\t\tthis.trigger('onFinishFileParse', headers, data);\n\t\t},\n\t\tonDoneParsing: function onDoneParsing() {\n\t\t\tthis.trigger('done', this.get('model'));\n\t\t},\n\t\tsaveModel: function saveModel() {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar models = this.get('model');\n\t\t\treturn this._saveModels(models).then(function (data) {\n\t\t\t\t_this4.trigger('complete');\n\t\t\t\treturn data;\n\t\t\t});\n\t\t},\n\t\t_saveModels: function _saveModels(models) {\n\t\t\tvar _this5 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\tvar success = [];\n\n\t\t\t\t// sort the models so the batch saves\n\t\t\t\t// in the correct order\n\t\t\t\tmodels = _this5.sortForSave(models);\n\n\t\t\t\t// before save gives pre dependent models a chance to save first.\n\t\t\t\t_this5.beforeSave(models).then(function () {\n\t\t\t\t\tvar savePromise = [];\n\t\t\t\t\tmodels.forEach(function (model) {\n\t\t\t\t\t\tvar savePromiseObj = _this5.saveModelRetry(model).then(function (savedModel) {\n\t\t\t\t\t\t\t// store the savedModel\n\t\t\t\t\t\t\tsuccess.pushObject(savedModel);\n\t\t\t\t\t\t\treturn savedModel;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsavePromise.push(savePromiseObj);\n\t\t\t\t\t});\n\n\t\t\t\t\tEmber.RSVP.all(savePromise).then(function () {\n\t\t\t\t\t\tvar afterPromise = [];\n\t\t\t\t\t\tmodels.forEach(function (model) {\n\t\t\t\t\t\t\t// allow dependent models to save\n\t\t\t\t\t\t\t_this5.saveDependentModel(model);\n\n\t\t\t\t\t\t\t// call afterSave method\n\t\t\t\t\t\t\tvar afterPromiseObj = _this5.afterSave(model);\n\n\t\t\t\t\t\t\t// store the promise for later\n\t\t\t\t\t\t\tafterPromise.push(afterPromiseObj);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// after all the promises are fullfilled\n\t\t\t\t\t\t// resolve the _saveModels promise.\n\t\t\t\t\t\tEmber.RSVP.all(afterPromise).then(function () {\n\t\t\t\t\t\t\tresolve(success);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsaveModelRetry: function saveModelRetry(model) {\n\t\t\tvar _this6 = this;\n\n\t\t\treturn this.onSaveModel(model).catch(function (err) {\n\t\t\t\tif (err && err.errors) {\n\t\t\t\t\t// TODO:\n\t\t\t\t\t// change one of these to the err code that drew puts for\n\t\t\t\t\t// invalid uuid.\n\t\t\t\t\tif (err.errors[0] === 300 || err.errors[0] === 300) {\n\t\t\t\t\t\tmodel.id = _utils.UUID.generate();\n\t\t\t\t\t\treturn _this6.saveModelRetry(model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Ember.RSVP.reject(err);\n\t\t\t});\n\t\t},\n\t\tonSaveModel: function onSaveModel(model) {\n\t\t\treturn model.saveBatch(true);\n\t\t},\n\t\tbeforeSave: function beforeSave() /*model*/{\n\t\t\treturn new Ember.RSVP.resolve({});\n\t\t},\n\t\tafterSave: function afterSave() /*model*/{\n\t\t\treturn new Ember.RSVP.resolve({});\n\t\t},\n\t\tsaveDependentModel: function saveDependentModel(model) {\n\t\t\treturn model;\n\t\t},\n\t\tsortForSave: function sortForSave(models) {\n\t\t\treturn models;\n\t\t},\n\t\tprepareRequests: function prepareRequests(req) {\n\t\t\tvar requests = {};\n\t\t\tEmber.$.each(req, function (key, val) {\n\t\t\t\tif (req.hasOwnProperty(key)) {\n\t\t\t\t\tvar id = val.key;\n\t\t\t\t\tdelete val.key;\n\t\t\t\t\tEmber.set(requests, id, val);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn { requests: requests };\n\t\t},\n\t\tprepareObject: function prepareObject(type, data) {\n\t\t\tvar obj = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tdata: data,\n\t\t\t\turl: type,\n\t\t\t\tkey: type + '_' + data.id\n\t\t\t};\n\n\t\t\tif (_settings.default.get('api_version') >= 3.2) {\n\t\t\t\tobj._version = _settings.default.get('api_version');\n\t\t\t} else {\n\t\t\t\tobj.version = _settings.default.get('api_version');\n\t\t\t}\n\n\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\tobj._debug = true;\n\t\t\t}\n\t\t\treturn obj;\n\t\t},\n\t\tsendRequest: function sendRequest(data, pageSize) {\n\t\t\tthis.trigger('progress', data.length, data.length);\n\t\t\treturn this.processRequest(data, data.length, pageSize);\n\t\t},\n\t\tprocessRequest: function processRequest(data, total, pageSize) {\n\t\t\tvar _this7 = this;\n\n\t\t\tpageSize = pageSize || 20;\n\t\t\tif (data.length === 0) {\n\t\t\t\treturn Ember.RSVP.resolve(true);\n\t\t\t}\n\n\t\t\tvar processData = data.splice(0, pageSize);\n\t\t\tprocessData = this.prepareRequests(processData);\n\t\t\treturn this.get('store').rpcRequest('batch', 'batch-rest', processData).then(function () {\n\t\t\t\t_this7.trigger('progress', data.length, total);\n\t\t\t\treturn _this7.processRequest(data, total, pageSize);\n\t\t\t});\n\t\t}\n\t});\n\n\texports.default = CsvImport;\n});","define('busy-app/utils/currency-codes.js', ['exports', '@busy-web/utils/utils/currency-codes.js'], function (exports, _currencyCodes) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _currencyCodes.default;\n    }\n  });\n});","define('busy-app/utils/data-base', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = {\n\t\tname: 'busytime',\n\t\tversion: 8,\n\t\tsyncKey: 'updated_on',\n\n\t\ttables: [{\n\t\t\tname: 'member',\n\t\t\tkeyPath: 'id',\n\t\t\tindexes: [{ name: 'first_name', keyPath: '', objectParams: { unique: false } }, { name: 'last_name', keyPath: '', objectParams: { unique: false } }, { name: 'updated_on', keyPath: '', objectParams: { unique: false } }],\n\t\t\tsync: { query: {} },\n\t\t\tcleanup: { archived_on: '!null' }\n\t\t}, {\n\t\t\tname: 'wage-history',\n\t\t\tkeyPath: 'id',\n\t\t\tindexes: [{ name: 'updated_on', keyPath: '', objectParams: { unique: false } }],\n\t\t\tsync: { query: {} },\n\t\t\tcleanup: { deleted_on: '!null' }\n\t\t}]\n\t};\n});","define('busy-app/utils/date-range-pay-period', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = dateRangePayPeriod;\n\n\n\t/**\n  * EmberDateRangePicker list item for pay periods\n  *\n  * @class DateRangePayPeriod\n  */\n\tvar DateRangePayPeriod = Ember.Object.extend({\n\t\tid: null,\n\t\tname: null,\n\t\ttype: null,\n\t\tselected: false,\n\n\t\tpayPeriod: null,\n\n\t\tspan: function span(start, end, direction) {\n\t\t\tif (!Ember.isEmpty(Ember.get(this, 'payPeriod'))) {\n\t\t\t\tvar timestamp = start;\n\t\t\t\tif (direction === 1) {\n\t\t\t\t\ttimestamp = end + 2;\n\t\t\t\t} else if (direction === -1) {\n\t\t\t\t\ttimestamp = start - 2;\n\t\t\t\t}\n\n\t\t\t\tvar period = Ember.get(this, 'payPeriod').getPayPeriod(timestamp);\n\t\t\t\treturn { start: Ember.get(period, 'start'), end: Ember.get(period, 'end') };\n\t\t\t}\n\t\t\treturn { start: start, end: end };\n\t\t}\n\t}); /**\n      * @module Utils\n      *\n      */\n\tfunction dateRangePayPeriod(payPeriodService) {\n\t\tvar selected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\treturn DateRangePayPeriod.create({\n\t\t\tid: 'pay-period',\n\t\t\tname: (0, _utils.loc)('Pay Period'),\n\t\t\ttype: 'days',\n\t\t\tpayPeriod: payPeriodService,\n\t\t\tselected: selected\n\t\t});\n\t}\n});","define('busy-app/utils/db-migration', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = {\n\t\tname: 'busytime',\n\t\tversion: 7,\n\n\t\ttables: [{\n\t\t\tname: 'member',\n\t\t\tkeyPath: 'id',\n\t\t\tindexes: [{ name: 'first_name', keyPath: '', objectParams: { unique: false } }, { name: 'last_name', keyPath: '', objectParams: { unique: false } }, { name: 'updated_on', keyPath: '', objectParams: { unique: false } }]\n\t\t}, {\n\t\t\tname: 'wage-history',\n\t\t\tkeyPath: 'id',\n\t\t\tindexes: [{ name: 'updated_on', keyPath: '', objectParams: { unique: false } }]\n\t\t}]\n\t};\n});","define('busy-app/utils/debug-helper', ['exports', 'busy-app/utils/logger', 'busy-app/utils/settings'], function (exports, _logger, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _createClass = function () {\n\t\tfunction defineProperties(target, props) {\n\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\tvar descriptor = props[i];\n\t\t\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\t\t\tdescriptor.configurable = true;\n\t\t\t\tif (\"value\" in descriptor) descriptor.writable = true;\n\t\t\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t\t\t}\n\t\t}\n\n\t\treturn function (Constructor, protoProps, staticProps) {\n\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t\t\tif (staticProps) defineProperties(Constructor, staticProps);\n\t\t\treturn Constructor;\n\t\t};\n\t}();\n\n\tvar DebugHelper = function () {\n\t\tfunction DebugHelper() {\n\t\t\t_classCallCheck(this, DebugHelper);\n\n\t\t\tthis.stack = null;\n\t\t}\n\n\t\t_createClass(DebugHelper, [{\n\t\t\tkey: 'log',\n\t\t\tvalue: function log() {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\tif (_settings.default.get('log_level') >= 3) {\n\t\t\t\t\tif (Ember.isNone(Ember.get(this, 'stack'))) {\n\t\t\t\t\t\tEmber.set(this, 'stack', []);\n\t\t\t\t\t}\n\n\t\t\t\t\targs = args.map(function (item) {\n\t\t\t\t\t\tif (!Ember.isNone(item) && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object') {\n\t\t\t\t\t\t\tif (Ember.isArray(item) && !item.content) {\n\t\t\t\t\t\t\t\treturn item.slice(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn Ember.merge({}, item);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t});\n\n\t\t\t\t\tEmber.get(this, 'stack').push(args);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'post',\n\t\t\tvalue: function post() {\n\t\t\t\t(0, _logger.print)('\\nDEBUG HANDLER', Ember.get(this, 'id'), '------------------');\n\t\t\t\tEmber.get(this, 'stack').forEach(function (args, idx) {\n\t\t\t\t\t_logger.print.apply(undefined, [idx + 1].concat(_toConsumableArray(args)));\n\t\t\t\t});\n\t\t\t\t(0, _logger.print)('END DEBUG HANDLER', Ember.get(this, 'id'), '---------------\\n\\n');\n\t\t\t}\n\t\t}]);\n\n\t\treturn DebugHelper;\n\t}();\n\n\texports.default = DebugHelper;\n});","define('busy-app/utils/debug', ['exports', 'busy-app/utils/settings'], function (exports, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.component_safe_api = exports.disable_test_runner = exports.log_level = exports.debug_mode = undefined;\n\t/**\n  * @module Utils\n  *\n  */\n\tvar debug_mode = exports.debug_mode = function debug_mode(cb, defaultValue) {\n\t\treturn _settings.default.get('debug_mode') ? cb() : defaultValue;\n\t};\n\n\tvar log_level = exports.log_level = function log_level(level, cb, defaultValue) {\n\t\treturn _settings.default.get('log_level') >= level ? cb() : defaultValue;\n\t};\n\n\tvar disable_test_runner = exports.disable_test_runner = function disable_test_runner() {\n\t\tvar cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {\n\t\t\treturn false;\n\t\t};\n\t\treturn !window.runningTests ? cb() : true;\n\t};\n\n\tvar component_safe_api = exports.component_safe_api = function component_safe_api() {\n\t\tvar cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n\t\treturn !window.runningTests ? Ember.RSVP.resolve(cb()) : Ember.RSVP.resolve();\n\t};\n\n\tdebug_mode(function () {\n\t\tvar logSymbol = '•'; // bullet symbol do not erase\n\n\t\tvar level = _settings.default.get('log_level');\n\t\tvar color = function color() {\n\t\t\tswitch (level) {\n\t\t\t\tcase 3:\n\t\t\t\t\treturn 'crimson';\n\t\t\t\tcase 2:\n\t\t\t\t\treturn 'gold';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'limegreen';\n\t\t\t}\n\t\t};\n\n\t\twindow.console.log(\"%c%s %c%s %c%s %c%d\", 'color:' + color() + ';font-size:15px;', logSymbol, \"color:darkgoldenrod\", \"<utils:settings>\", \"color:grey\", 'LOG_LEVEL', \"color:indianred\", level);\n\n\t\twindow.console.log(\"%c%s %c%s %c%s %c%s\", 'color:' + color() + ';font-size:15px;', logSymbol, \"color:darkgoldenrod\", \"<utils:settings>\", \"color:grey\", 'DEBUG_MODE', \"color:indianred\", _settings.default.get('debug_mode'));\n\t});\n});","define('busy-app/utils/docs', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar Docs = Ember.Object.extend();\n\n\t/**\n  * `Util/Print`\n  *\n  */\n\t/**\n  * @module Utils\n  *\n  */\n\tDocs.reopenClass({\n\t\tprint: function print(printElement) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1);\n\n\t\t\tif (!Ember.isNone(printElement)) {\n\t\t\t\tthis.printContainer(printElement);\n\t\t\t} else {\n\t\t\t\tthis.printPage();\n\t\t\t}\n\t\t},\n\t\tprintContainer: function printContainer(printElement) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\n\t\t\tvar printContainer = Ember.$('body >  .print-container');\n\t\t\tvar pe = printElement.clone();\n\n\t\t\tprintContainer.html(pe);\n\n\t\t\tvar app = Ember.$('.ember-application > .ember-view');\n\t\t\tvar dialog = Ember.$('.ember-application > #modal-overlays');\n\n\t\t\tapp.hide();\n\t\t\tdialog.hide();\n\t\t\tprintContainer.addClass('active');\n\n\t\t\tthis.printPage();\n\n\t\t\tprintContainer.removeClass('active');\n\t\t\tprintContainer.html('');\n\t\t\tapp.show();\n\t\t\tdialog.show();\n\t\t},\n\t\tprintPage: function printPage() {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 0, true);\n\n\t\t\tif (window.print === undefined) {\n\t\t\t\tEmber.$.getScript('https://www.google.com/cloudprint/client/cpgadget.js').then(Ember.run(this, function () {\n\t\t\t\t\tvar gadget = new window.cloudprint.Gadget();\n\n\t\t\t\t\tgadget.setPrintDocument(\"url\", Ember.$('title').html(), window.location.href, \"utf-8\");\n\t\t\t\t\tgadget.openPrintDialog();\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\twindow.print();\n\t\t\t}\n\t\t},\n\t\tsetPrintable: function setPrintable() {\n\t\t\tvar isPrint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1);\n\t\t\t_utils.Assert.isBoolean(isPrint);\n\n\t\t\tif (isPrint === true) {\n\t\t\t\tEmber.$('body').addClass('printable');\n\t\t\t} else {\n\t\t\t\tEmber.$('body').removeClass('printable');\n\t\t\t}\n\t\t},\n\t\tdownload: function download(filename, contentType, body) {\n\t\t\twindow.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n\t\t\tvar blob = new window.Blob([body], { type: contentType });\n\n\t\t\tvar a = document.createElement('a');\n\t\t\ta.setAttribute('href', window.URL.createObjectURL(blob));\n\t\t\ta.setAttribute('download', filename);\n\n\t\t\ta.dataset.downloadurl = [contentType, a.download, a.href].join(':');\n\t\t\ta.draggable = true;\n\t\t\ta.classList.add('dragout');\n\n\t\t\tif (document.createEvent) {\n\t\t\t\tvar event = document.createEvent('MouseEvents');\n\t\t\t\tevent.initEvent('click', true, true);\n\t\t\t\ta.dispatchEvent(event);\n\t\t\t} else {\n\t\t\t\ta.click();\n\t\t\t}\n\t\t}\n\t});\n\n\texports.default = Docs;\n});","define('busy-app/utils/employee-csv-import', ['exports', 'busy-app/utils/csv-import', '@busy-web/utils', 'cryptojs'], function (exports, _csvImport, _utils, _cryptojs) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _csvImport.default.extend({\n    headerLists: null,\n    hasInvalidData: false,\n\n    payPeriods: Ember.inject.service('pay-period'),\n\n    defaultMap: Ember.computed(function () {\n      return {\n        memberNumber: \"Employee ID\",\n        firstName: \"First Name\",\n        lastName: \"Last Name\",\n        username: \"Username\",\n        password: \"Password\",\n        payrollRate: \"Payroll Rate\",\n        payrollType: \"Payroll Type\",\n        phone: \"Phone\",\n        email: \"Email\"\n      };\n    }),\n\n    memberNumberTransform: function memberNumberTransform(number) {\n      if (!Ember.isNone(number)) {\n        return number.toString().trim().replace(/[^\\w\\d-.!@*&$#%(),?;:]/g, '');\n      }\n      return null;\n    },\n    generateUsername: function generateUsername(firstName, lastName) {\n      if (Ember.isNone(lastName) || Ember.isNone(lastName)) {\n        this.triggerError(\"First Name and Last Name are required to import an employee!\");\n        return;\n      }\n\n      firstName = firstName.trim().charAt(0);\n      lastName = lastName.trim().replace(/[ ,.-]/g, '').slice(0, 7);\n\n      var randomNum = Math.floor(Math.random() * 10000 + 1000).toString().slice(0, 4);\n      var username = (firstName + lastName).toLowerCase() + randomNum;\n      return username.slice(0, 12);\n    },\n    generatePassword: function generatePassword() {\n      var now = _utils.Time.date();\n      var orgName = this.get('organization.organizationName').toLowerCase().slice(0, 6).trim();\n      return orgName + now.format('DDMM');\n    },\n    passwordTransform: function passwordTransform(password, model) {\n      if (!Ember.isNone(password)) {\n        if (password.length < 8) {\n          password = this.generatePassword();\n          model.set('invalidPassword', true);\n          this.set('hasInvalidData', true);\n        }\n      } else {\n        password = this.generatePassword();\n      }\n      return password;\n    },\n    usernameTransform: function usernameTransform(username, model) {\n      if (!Ember.isNone(username)) {\n        if (!/^\\S{6}\\S*$/.test(username)) {\n          username = this.generateUsername(model.get('firstName'), model.get('lastName'));\n          model.set('invalidUsername', true);\n          this.set('hasInvalidData', true);\n        }\n      } else {\n        username = this.generateUsername(model.get('firstName'), model.get('lastName'));\n      }\n      return username;\n    },\n    firstNameTransform: function firstNameTransform(name, model) {\n      if (typeof name === 'string' && !Ember.isEmpty(name)) {\n        return name;\n      } else {\n        model.set('invalidName', true);\n        this.set('hasInvalidData', true);\n        return 'InvalidName';\n      }\n    },\n    lastNameTransform: function lastNameTransform(name, model) {\n      if (typeof name === 'string' && !Ember.isEmpty(name)) {\n        return name;\n      } else {\n        model.set('invalidName', true);\n        this.set('hasInvalidData', true);\n        return 'InvalidName';\n      }\n    },\n    payrollRateTransform: function payrollRateTransform(rate, model) {\n      var payrollRate = null;\n      if (!Ember.isNone(rate)) {\n        payrollRate = parseFloat(rate.toString().replace(/[$,]/g, ''));\n        if (isNaN(payrollRate)) {\n          payrollRate = 0;\n          model.set('invalidPayrollRate', true);\n          this.set('hasInvalidData', true);\n        }\n        payrollRate = payrollRate.toString();\n      }\n      return payrollRate;\n    },\n    emailTransform: function emailTransform(email, model) {\n      if (!Ember.isNone(email)) {\n        if (typeof email === 'string' && /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(email)) {\n          return email;\n        } else {\n          model.set('invalidEmail', true);\n          this.set('hasInvalidData', true);\n        }\n      }\n      return null;\n    },\n    phoneTransform: function phoneTransform(phone, model) {\n      if (!Ember.isNone(phone)) {\n        if (typeof phone === 'string') {\n          phone = phone.replace(/\\D/g, '');\n          if (/\\d{10,}/.test(phone)) {\n            return phone;\n          } else {\n            model.set('invalidPhone', true);\n            this.set('hasInvalidData', true);\n          }\n        } else {\n          model.set('invalidPhone', true);\n          this.set('hasInvalidData', true);\n        }\n      }\n      return null;\n    },\n    payrollTypeTransform: function payrollTypeTransform(type, model) {\n      if (!Ember.isNone(type) && typeof type === 'string') {\n        var payrollType = type.toLowerCase();\n        if (/((hr)|(hour))/.test(payrollType)) {\n          return 'hourly';\n        } else if (/((wk)|(week))/.test(payrollType)) {\n          return 'weekly';\n        } else if (/((mo)|(month))/.test(payrollType)) {\n          return 'monthly';\n        } else if (/((yr)|(year)|(sal))/.test(payrollType)) {\n          return 'yearly';\n        } else {\n          model.set('invalidPayrollType', true);\n          this.set('hasInvalidData', true);\n        }\n      }\n      return null;\n    },\n    triggerParse: function triggerParse() {\n      this.parse();\n    },\n    setHeaderByListType: function setHeaderByListType(listItem) {\n      this.set('headerMap.' + listItem.get('mapKey'), listItem.get('value'));\n    },\n    buildHeaderLists: function buildHeaderLists(headers) {\n      var _this = this;\n\n      var defaultMap = this.get('defaultMap');\n      defaultMap = this.setHeaderMap(defaultMap);\n\n      var headerList = [];\n      Ember.$.each(defaultMap, function (mapKey, mapHeader) {\n        var simpleKey = mapHeader.camelize();\n        if (defaultMap.hasOwnProperty(mapKey)) {\n          var list = Ember.Object.create({ key: mapKey, label: mapHeader, value: [] });\n\n          headers.forEach(function (header) {\n            var simpleHeader = header.camelize();\n            var isSelected = simpleKey === simpleHeader;\n            var item = Ember.Object.create({ key: simpleHeader, mapKey: mapKey, value: header, _selected: isSelected });\n            if (isSelected) {\n              _this.setHeaderByListType(item);\n            }\n            list.get('value').pushObject(item);\n          });\n\n          headerList.pushObject(list);\n        }\n      });\n      this.set('headerLists', headerList);\n    },\n    createNewModel: function createNewModel() {\n      var positions = this.get('auth.positions');\n      positions.sortBy('level');\n\n      var position = positions.get('lastObject');\n      return this.get('store').createRecord('member', {\n        id: _utils.UUID.generate(),\n        organizationId: this.get('organizationId'),\n        positionId: position.get('id'),\n        position: position\n      });\n    },\n    afterSave: function afterSave(model) {\n      var wageHistory = null;\n      if (!Ember.isNone(model.get('payrollType')) && !Ember.isNone(model.get('payrollRate'))) {\n        var payrollRate = parseFloat(model.get('payrollRate').replace(/[$,]/g, ''));\n        if (isNaN(payrollRate)) {\n          payrollRate = 0;\n        }\n\n        var wageRate = null;\n        var workWeek = 40;\n        var payrollType = model.get('payrollType').toLowerCase();\n        if (/((wk)|(week))/.test(payrollType)) {\n          wageRate = 30;\n        } else if (/((mo)|(month))/.test(payrollType)) {\n          wageRate = 40;\n        } else if (/((yr)|(year)|(sal))/.test(payrollType)) {\n          wageRate = 50;\n        } else {\n          wageRate = 10;\n          workWeek = null;\n        }\n\n        if (!Ember.isNone(wageRate)) {\n          var obj = {\n            id: _utils.UUID.generate(),\n            member_id: model.id,\n            wage: model.get('payrollRate'),\n            wage_rate: wageRate,\n            effective_rate: payrollRate,\n            change_date: this.getPayPeriods(),\n            overburden: 0,\n            created_on: _utils.Time.timestamp()\n          };\n\n          if (!Ember.isNone(workWeek)) {\n            obj.work_week = workWeek;\n          }\n          wageHistory = this.prepareObject('wage-history', obj);\n        }\n      }\n      return wageHistory;\n    },\n    getPayPeriods: function getPayPeriods() {\n      var start = _utils.Time.date().endOf('day').subtract(1, 'days').unix();\n      var end = _utils.Time.date().startOf('day').subtract(88, 'days').unix();\n      var payPeriods = this.get('payPeriods').getPayPeriodDateRange(start, end, true);\n      return payPeriods.objectAt(2).get('startDate').unix();\n    },\n    onFinishFileParse: function onFinishFileParse(headers, data) {\n      this._super(headers, data);\n      this.buildHeaderLists(headers);\n    },\n    hasModel: function hasModel(model) {\n      var found = this.get('model').find(function (item) {\n        if (item.get('firstName') === model.get('firstName') && item.get('lastName') === model.get('lastName')) {\n          return true;\n        }\n        return false;\n      });\n      return !Ember.isNone(found) ? found : false;\n    },\n    modelHasData: function modelHasData(model) {\n      var firstName = (model.get('firstName') || '').trim();\n      var lastName = (model.get('lastName') || '').trim();\n      if (!Ember.isEmpty(firstName) && !Ember.isEmpty(lastName)) {\n        return true;\n      }\n      return false;\n    },\n    _saveModels: function _saveModels(models) {\n      var _this2 = this;\n\n      var dataArray = [];\n      models.forEach(function (item) {\n        var obj = {\n          id: item.id,\n          first_name: item.get('firstName'),\n          last_name: item.get('lastName'),\n          username: item.get('username'),\n          password: _cryptojs.default.SHA256(item.get('password')).toString(),\n          position_id: item.get('positionId'),\n          organization_id: item.get('organizationId'),\n          created_on: _utils.Time.timestamp()\n        };\n\n        if (!Ember.isNone(item.get('email')) && !Ember.isEmpty(item.get('email')) && /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(item.get('email'))) {\n          obj.email = item.get('email');\n        }\n\n        if (!Ember.isNone(item.get('phone')) && !Ember.isEmpty(item.get('phone'))) {\n          obj.phone = item.get('phone');\n        }\n\n        if (!Ember.isNone(item.get('memberNumber')) && !Ember.isEmpty(item.get('memberNumber'))) {\n          obj.member_number = item.get('memberNumber');\n        }\n\n        var memberData = _this2.prepareObject('member', obj);\n        dataArray.push(memberData);\n\n        var wageHistory = _this2.afterSave(item);\n        if (!Ember.isNone(wageHistory)) {\n          dataArray.push(wageHistory);\n        }\n      });\n\n      return this.sendRequest(dataArray, 5);\n    }\n  });\n});","define('busy-app/utils/error', ['exports', 'busy-app/utils/logger'], function (exports, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\t//import RSVP from 'rsvp';\n\t//import Settings from './settings';\n\n\tvar ignoreList = [\"TransitionAborted\", \"Call Aborted\", \"Not Authorized\", \"The adapter operation was aborted\", \"invalid credentials\"];\n\n\tfunction ignore() {\n\t\tvar err = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\tvar status = parseInt(err.status, 10);\n\t\tif (status && (status === 401 || status === 429)) {\n\t\t\treturn true;\n\t\t} else if (Ember.isNone(err) || ignoreList.indexOf(err.name) !== -1 || ignoreList.indexOf(err.message) !== -1) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t//function getStack(error) {\n\t//\tlet stack = error.stack;\n\t//\tlet message = error.message;\n\t//\tif (stack && stack.indexOf(message) === -1) {\n\t//\t\tstack = message + '\\n' + stack;\n\t//\t}\n\t//\treturn stack;\n\t//}\n\n\t//function logError(err) {\n\t//\tif (err instanceof Error) {\n\t//\t\tLogger.error(getStack(err));\n\t//\t} else {\n\t//\t\tLogger.error(err);\n\t//\t}\n\t//}\n\t//\n\t//function logWarn(err) {\n\t//\tif (err instanceof Error) {\n\t//\t\tLogger.warn(getStack(err));\n\t//\t} else {\n\t//\t\tLogger.warn(new Error(err));\n\t//\t}\n\t//}\n\n\texports.default = Ember.Object.extend({\n\n\t\tgraylog: Ember.inject.service('graylog'),\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t//RSVP.on('error', (err) => {\n\t\t\t//\tlogError(err);\n\t\t\t//if (err) {\n\t\t\t//\terr.isRSVP = true;\n\t\t\t//\tthis.handleError(\"ERROR_RSVP\", err);\n\t\t\t//} else {\n\t\t\t//\tLogger.warn('RSVP Error was called with no error object');\n\t\t\t//}\n\t\t\t//});\n\n\t\t\t//\t\t// pause the err to allow any RSVP errors to fire first\n\t\t\t//\t\tnext(() => {\n\t\t\t//\t\t\tif (err) {\n\t\t\t//\t\t\t\tif (!err.isRSVP) {\n\t\t\t//\t\t\t\t\tthis.handleError(\"ERROR_THROWN\", err);\n\t\t\t//\t\t\t\t}\n\t\t\t//\t\t\t} else {\n\t\t\t//\t\t\t\tLogger.warn('Error was called with no error object');\n\t\t\t//\t\t\t}\n\t\t\t//\t\t});\n\t\t\t//\t};\n\t\t},\n\t\thandleError: function handleError(type, err) {\n\t\t\tvar _this = this;\n\n\t\t\tif (err.errors) {\n\t\t\t\tif (err.errors.length) {\n\t\t\t\t\tvar showErr = false;\n\t\t\t\t\terr.errors.forEach(function (error) {\n\t\t\t\t\t\tif (!ignore(error)) {\n\t\t\t\t\t\t\tshowErr = true;\n\t\t\t\t\t\t\t_logger.default.error(error.title || type, err.message, error);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (error.status === 401) {\n\t\t\t\t\t\t\t\t_this.graylogUnauthorizedEvent();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_logger.default.warn('Ignore', error.title || type, err.message, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (showErr) {\n\t\t\t\t\t\t_logger.default.error(err);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!ignore(err.errors)) {\n\t\t\t\t\t\t_logger.default.error(err.errors.title || type, err.errors.message, err.errors);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_logger.default.warn('Ignore', err.errors.title || type, err.errors.message, err.errors);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!ignore(err)) {\n\t\t\t\t\t_logger.default.error(type, err, \"\\n\", err.stack);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.warn('Ignore', type, err, err.stack);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgraylogUnauthorizedEvent: function graylogUnauthorizedEvent() {\n\t\t\tthis.get('graylog').sendEvent({\n\t\t\t\tshort_message: 'Unauthorized User Event',\n\t\t\t\tfull_message: 'Unauthorized User Event',\n\t\t\t\tlevel: 6,\n\t\t\t\t_member_id: this.get('auth.member.id')\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/event', ['exports', '@busy-web/components/utils/event'], function (exports, _event) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'bind', {\n    enumerable: true,\n    get: function () {\n      return _event.bind;\n    }\n  });\n  Object.defineProperty(exports, 'unbind', {\n    enumerable: true,\n    get: function () {\n      return _event.unbind;\n    }\n  });\n});","define('busy-app/utils/exif', ['exports', 'busy-app/utils/settings'], function (exports, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/****/\n\tvar Exif = null;\n\tvar bDebug = _settings.default.get('debug_mode');\n\n\t/**\n  * returns the list of exif tags\n  *\n  * @private\n  * @method getExiftags\n  */\n\tfunction getExiftags() {\n\t\treturn {\n\t\t\t// version tags\n\t\t\t0x9000: \"ExifVersion\", // EXIF version\n\t\t\t0xA000: \"FlashpixVersion\", // Flashpix format version\n\n\t\t\t// colorspace tags\n\t\t\t0xA001: \"ColorSpace\", // Color space information tag\n\n\t\t\t// image configuration\n\t\t\t0xA002: \"PixelXDimension\", // Valid width of meaningful image\n\t\t\t0xA003: \"PixelYDimension\", // Valid height of meaningful image\n\t\t\t0x9101: \"ComponentsConfiguration\", // Information about channels\n\t\t\t0x9102: \"CompressedBitsPerPixel\", // Compressed bits per pixel\n\n\t\t\t// user information\n\t\t\t0x927C: \"MakerNote\", // Any desired information written by the manufacturer\n\t\t\t0x9286: \"UserComment\", // Comments by user\n\n\t\t\t// related file\n\t\t\t0xA004: \"RelatedSoundFile\", // Name of related sound file\n\n\t\t\t// date and time\n\t\t\t0x9003: \"DateTimeOriginal\", // Date and time when the original image was generated\n\t\t\t0x9004: \"DateTimeDigitized\", // Date and time when the image was stored digitally\n\t\t\t0x9290: \"SubsecTime\", // Fractions of seconds for DateTime\n\t\t\t0x9291: \"SubsecTimeOriginal\", // Fractions of seconds for DateTimeOriginal\n\t\t\t0x9292: \"SubsecTimeDigitized\", // Fractions of seconds for DateTimeDigitized\n\n\t\t\t// picture-taking conditions\n\t\t\t0x829A: \"ExposureTime\", // Exposure time (in seconds)\n\t\t\t0x829D: \"FNumber\", // F number\n\t\t\t0x8822: \"ExposureProgram\", // Exposure program\n\t\t\t0x8824: \"SpectralSensitivity\", // Spectral sensitivity\n\t\t\t0x8827: \"ISOSpeedRatings\", // ISO speed rating\n\t\t\t0x8828: \"OECF\", // Optoelectric conversion factor\n\t\t\t0x9201: \"ShutterSpeedValue\", // Shutter speed\n\t\t\t0x9202: \"ApertureValue\", // Lens aperture\n\t\t\t0x9203: \"BrightnessValue\", // Value of brightness\n\t\t\t0x9204: \"ExposureBias\", // Exposure bias\n\t\t\t0x9205: \"MaxApertureValue\", // Smallest F number of lens\n\t\t\t0x9206: \"SubjectDistance\", // Distance to subject in meters\n\t\t\t0x9207: \"MeteringMode\", // Metering mode\n\t\t\t0x9208: \"LightSource\", // Kind of light source\n\t\t\t0x9209: \"Flash\", // Flash status\n\t\t\t0x9214: \"SubjectArea\", // Location and area of main subject\n\t\t\t0x920A: \"FocalLength\", // Focal length of the lens in mm\n\t\t\t0xA20B: \"FlashEnergy\", // Strobe energy in BCPS\n\t\t\t0xA20C: \"SpatialFrequencyResponse\", //\n\t\t\t0xA20E: \"FocalPlaneXResolution\", // Number of pixels in width direction per FocalPlaneResolutionUnit\n\t\t\t0xA20F: \"FocalPlaneYResolution\", // Number of pixels in height direction per FocalPlaneResolutionUnit\n\t\t\t0xA210: \"FocalPlaneResolutionUnit\", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution\n\t\t\t0xA214: \"SubjectLocation\", // Location of subject in image\n\t\t\t0xA215: \"ExposureIndex\", // Exposure index selected on camera\n\t\t\t0xA217: \"SensingMethod\", // Image sensor type\n\t\t\t0xA300: \"FileSource\", // Image source (3 == DSC)\n\t\t\t0xA301: \"SceneType\", // Scene type (1 == directly photographed)\n\t\t\t0xA302: \"CFAPattern\", // Color filter array geometric pattern\n\t\t\t0xA401: \"CustomRendered\", // Special processing\n\t\t\t0xA402: \"ExposureMode\", // Exposure mode\n\t\t\t0xA403: \"WhiteBalance\", // 1 = auto white balance, 2 = manual\n\t\t\t0xA404: \"DigitalZoomRation\", // Digital zoom ratio\n\t\t\t0xA405: \"FocalLengthIn35mmFilm\", // Equivalent foacl length assuming 35mm film camera (in mm)\n\t\t\t0xA406: \"SceneCaptureType\", // Type of scene\n\t\t\t0xA407: \"GainControl\", // Degree of overall image gain adjustment\n\t\t\t0xA408: \"Contrast\", // Direction of contrast processing applied by camera\n\t\t\t0xA409: \"Saturation\", // Direction of saturation processing applied by camera\n\t\t\t0xA40A: \"Sharpness\", // Direction of sharpness processing applied by camera\n\t\t\t0xA40B: \"DeviceSettingDescription\", //\n\t\t\t0xA40C: \"SubjectDistanceRange\", // Distance to subject\n\n\t\t\t// other tags\n\t\t\t0xA005: \"InteroperabilityIFDPointer\", //\n\t\t\t0xA420: \"ImageUniqueID\" // Identifier assigned uniquely to each image\n\t\t};\n\t}\n\n\t/**\n  * returns the exif .tiff tags\n  *\n  * @private\n  * @method getTiffTags\n  */\n\tfunction getTiffTags() {\n\t\treturn {\n\t\t\t0x0100: \"ImageWidth\",\n\t\t\t0x0101: \"ImageHeight\",\n\t\t\t0x8769: \"ExifIFDPointer\",\n\t\t\t0x8825: \"GPSInfoIFDPointer\",\n\t\t\t0xA005: \"InteroperabilityIFDPointer\",\n\t\t\t0x0102: \"BitsPerSample\",\n\t\t\t0x0103: \"Compression\",\n\t\t\t0x0106: \"PhotometricInterpretation\",\n\t\t\t0x0112: \"Orientation\",\n\t\t\t0x0115: \"SamplesPerPixel\",\n\t\t\t0x011C: \"PlanarConfiguration\",\n\t\t\t0x0212: \"YCbCrSubSampling\",\n\t\t\t0x0213: \"YCbCrPositioning\",\n\t\t\t0x011A: \"XResolution\",\n\t\t\t0x011B: \"YResolution\",\n\t\t\t0x0128: \"ResolutionUnit\",\n\t\t\t0x0111: \"StripOffsets\",\n\t\t\t0x0116: \"RowsPerStrip\",\n\t\t\t0x0117: \"StripByteCounts\",\n\t\t\t0x0201: \"JPEGInterchangeFormat\",\n\t\t\t0x0202: \"JPEGInterchangeFormatLength\",\n\t\t\t0x012D: \"TransferFunction\",\n\t\t\t0x013E: \"WhitePoint\",\n\t\t\t0x013F: \"PrimaryChromaticities\",\n\t\t\t0x0211: \"YCbCrCoefficients\",\n\t\t\t0x0214: \"ReferenceBlackWhite\",\n\t\t\t0x0132: \"DateTime\",\n\t\t\t0x010E: \"ImageDescription\",\n\t\t\t0x010F: \"Make\",\n\t\t\t0x0110: \"Model\",\n\t\t\t0x0131: \"Software\",\n\t\t\t0x013B: \"Artist\",\n\t\t\t0x8298: \"Copyright\"\n\t\t};\n\t}\n\n\t/**\n  * returns the exit gps tags\n  *\n  * @private\n  * @method getGPSTags\n  */\n\tfunction getGPSTags() {\n\t\treturn {\n\t\t\t0x0000: \"GPSVersionID\",\n\t\t\t0x0001: \"GPSLatitudeRef\",\n\t\t\t0x0002: \"GPSLatitude\",\n\t\t\t0x0003: \"GPSLongitudeRef\",\n\t\t\t0x0004: \"GPSLongitude\",\n\t\t\t0x0005: \"GPSAltitudeRef\",\n\t\t\t0x0006: \"GPSAltitude\",\n\t\t\t0x0007: \"GPSTimeStamp\",\n\t\t\t0x0008: \"GPSSatellites\",\n\t\t\t0x0009: \"GPSStatus\",\n\t\t\t0x000A: \"GPSMeasureMode\",\n\t\t\t0x000B: \"GPSDOP\",\n\t\t\t0x000C: \"GPSSpeedRef\",\n\t\t\t0x000D: \"GPSSpeed\",\n\t\t\t0x000E: \"GPSTrackRef\",\n\t\t\t0x000F: \"GPSTrack\",\n\t\t\t0x0010: \"GPSImgDirectionRef\",\n\t\t\t0x0011: \"GPSImgDirection\",\n\t\t\t0x0012: \"GPSMapDatum\",\n\t\t\t0x0013: \"GPSDestLatitudeRef\",\n\t\t\t0x0014: \"GPSDestLatitude\",\n\t\t\t0x0015: \"GPSDestLongitudeRef\",\n\t\t\t0x0016: \"GPSDestLongitude\",\n\t\t\t0x0017: \"GPSDestBearingRef\",\n\t\t\t0x0018: \"GPSDestBearing\",\n\t\t\t0x0019: \"GPSDestDistanceRef\",\n\t\t\t0x001A: \"GPSDestDistance\",\n\t\t\t0x001B: \"GPSProcessingMethod\",\n\t\t\t0x001C: \"GPSAreaInformation\",\n\t\t\t0x001D: \"GPSDateStamp\",\n\t\t\t0x001E: \"GPSDifferential\"\n\t\t};\n\t}\n\n\t/**\n  * returns an object of string lookup values\n  *\n  * @private\n  * @method getStrings\n  */\n\tfunction getStrings() {\n\t\treturn {\n\t\t\tExposureProgram: {\n\t\t\t\t0: \"Not defined\",\n\t\t\t\t1: \"Manual\",\n\t\t\t\t2: \"Normal program\",\n\t\t\t\t3: \"Aperture priority\",\n\t\t\t\t4: \"Shutter priority\",\n\t\t\t\t5: \"Creative program\",\n\t\t\t\t6: \"Action program\",\n\t\t\t\t7: \"Portrait mode\",\n\t\t\t\t8: \"Landscape mode\"\n\t\t\t},\n\t\t\tMeteringMode: {\n\t\t\t\t0: \"Unknown\",\n\t\t\t\t1: \"Average\",\n\t\t\t\t2: \"CenterWeightedAverage\",\n\t\t\t\t3: \"Spot\",\n\t\t\t\t4: \"MultiSpot\",\n\t\t\t\t5: \"Pattern\",\n\t\t\t\t6: \"Partial\",\n\t\t\t\t255: \"Other\"\n\t\t\t},\n\t\t\tLightSource: {\n\t\t\t\t0: \"Unknown\",\n\t\t\t\t1: \"Daylight\",\n\t\t\t\t2: \"Fluorescent\",\n\t\t\t\t3: \"Tungsten (incandescent light)\",\n\t\t\t\t4: \"Flash\",\n\t\t\t\t9: \"Fine weather\",\n\t\t\t\t10: \"Cloudy weather\",\n\t\t\t\t11: \"Shade\",\n\t\t\t\t12: \"Daylight fluorescent (D 5700 - 7100K)\",\n\t\t\t\t13: \"Day white fluorescent (N 4600 - 5400K)\",\n\t\t\t\t14: \"Cool white fluorescent (W 3900 - 4500K)\",\n\t\t\t\t15: \"White fluorescent (WW 3200 - 3700K)\",\n\t\t\t\t17: \"Standard light A\",\n\t\t\t\t18: \"Standard light B\",\n\t\t\t\t19: \"Standard light C\",\n\t\t\t\t20: \"D55\",\n\t\t\t\t21: \"D65\",\n\t\t\t\t22: \"D75\",\n\t\t\t\t23: \"D50\",\n\t\t\t\t24: \"ISO studio tungsten\",\n\t\t\t\t255: \"Other\"\n\t\t\t},\n\t\t\tFlash: {\n\t\t\t\t0x0000: \"Flash did not fire\",\n\t\t\t\t0x0001: \"Flash fired\",\n\t\t\t\t0x0005: \"Strobe return light not detected\",\n\t\t\t\t0x0007: \"Strobe return light detected\",\n\t\t\t\t0x0009: \"Flash fired, compulsory flash mode\",\n\t\t\t\t0x000D: \"Flash fired, compulsory flash mode, return light not detected\",\n\t\t\t\t0x000F: \"Flash fired, compulsory flash mode, return light detected\",\n\t\t\t\t0x0010: \"Flash did not fire, compulsory flash mode\",\n\t\t\t\t0x0018: \"Flash did not fire, auto mode\",\n\t\t\t\t0x0019: \"Flash fired, auto mode\",\n\t\t\t\t0x001D: \"Flash fired, auto mode, return light not detected\",\n\t\t\t\t0x001F: \"Flash fired, auto mode, return light detected\",\n\t\t\t\t0x0020: \"No flash function\",\n\t\t\t\t0x0041: \"Flash fired, red-eye reduction mode\",\n\t\t\t\t0x0045: \"Flash fired, red-eye reduction mode, return light not detected\",\n\t\t\t\t0x0047: \"Flash fired, red-eye reduction mode, return light detected\",\n\t\t\t\t0x0049: \"Flash fired, compulsory flash mode, red-eye reduction mode\",\n\t\t\t\t0x004D: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",\n\t\t\t\t0x004F: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",\n\t\t\t\t0x0059: \"Flash fired, auto mode, red-eye reduction mode\",\n\t\t\t\t0x005D: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\",\n\t\t\t\t0x005F: \"Flash fired, auto mode, return light detected, red-eye reduction mode\"\n\t\t\t},\n\t\t\tSensingMethod: {\n\t\t\t\t1: \"Not defined\",\n\t\t\t\t2: \"One-chip color area sensor\",\n\t\t\t\t3: \"Two-chip color area sensor\",\n\t\t\t\t4: \"Three-chip color area sensor\",\n\t\t\t\t5: \"Color sequential area sensor\",\n\t\t\t\t7: \"Trilinear sensor\",\n\t\t\t\t8: \"Color sequential linear sensor\"\n\t\t\t},\n\t\t\tSceneCaptureType: {\n\t\t\t\t0: \"Standard\",\n\t\t\t\t1: \"Landscape\",\n\t\t\t\t2: \"Portrait\",\n\t\t\t\t3: \"Night scene\"\n\t\t\t},\n\t\t\tSceneType: {\n\t\t\t\t1: \"Directly photographed\"\n\t\t\t},\n\t\t\tCustomRendered: {\n\t\t\t\t0: \"Normal process\",\n\t\t\t\t1: \"Custom process\"\n\t\t\t},\n\t\t\tWhiteBalance: {\n\t\t\t\t0: \"Auto white balance\",\n\t\t\t\t1: \"Manual white balance\"\n\t\t\t},\n\t\t\tGainControl: {\n\t\t\t\t0: \"None\",\n\t\t\t\t1: \"Low gain up\",\n\t\t\t\t2: \"High gain up\",\n\t\t\t\t3: \"Low gain down\",\n\t\t\t\t4: \"High gain down\"\n\t\t\t},\n\t\t\tContrast: {\n\t\t\t\t0: \"Normal\",\n\t\t\t\t1: \"Soft\",\n\t\t\t\t2: \"Hard\"\n\t\t\t},\n\t\t\tSaturation: {\n\t\t\t\t0: \"Normal\",\n\t\t\t\t1: \"Low saturation\",\n\t\t\t\t2: \"High saturation\"\n\t\t\t},\n\t\t\tSharpness: {\n\t\t\t\t0: \"Normal\",\n\t\t\t\t1: \"Soft\",\n\t\t\t\t2: \"Hard\"\n\t\t\t},\n\t\t\tSubjectDistanceRange: {\n\t\t\t\t0: \"Unknown\",\n\t\t\t\t1: \"Macro\",\n\t\t\t\t2: \"Close view\",\n\t\t\t\t3: \"Distant view\"\n\t\t\t},\n\t\t\tFileSource: {\n\t\t\t\t3: \"DSC\"\n\t\t\t},\n\t\t\tComponents: {\n\t\t\t\t0: \"\",\n\t\t\t\t1: \"Y\",\n\t\t\t\t2: \"Cb\",\n\t\t\t\t3: \"Cr\",\n\t\t\t\t4: \"R\",\n\t\t\t\t5: \"G\",\n\t\t\t\t6: \"B\"\n\t\t\t}\n\t\t};\n\t}\n\n\t//function addEvent(oElement, strEvent, fncHandler)\n\t//{\n\t//\tif (oElement.addEventListener) {\n\t//\t\toElement.addEventListener(strEvent, fncHandler, false);\n\t//\t} else if (oElement.attachEvent) {\n\t//\t\toElement.attachEvent(\"on\" + strEvent, fncHandler);\n\t//\t}\n\t//}\n\n\n\tfunction imageHasData(oImg) {\n\t\treturn !!oImg.exifdata;\n\t}\n\n\tfunction readTagValue(oFile, iEntryOffset, iTIFFStart, iDirStart, bBigEnd) {\n\t\tvar iType = oFile.getShortAt(iEntryOffset + 2, bBigEnd);\n\t\tvar iNumValues = oFile.getLongAt(iEntryOffset + 4, bBigEnd);\n\t\tvar iValueOffset = oFile.getLongAt(iEntryOffset + 8, bBigEnd) + iTIFFStart;\n\t\tvar iValOffset, aVals, n;\n\n\t\tswitch (iType) {\n\t\t\tcase 1: // byte, 8-bit unsigned int\n\t\t\tcase 7:\n\t\t\t\t// undefined, 8-bit byte, value depending on field\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getByteAt(iEntryOffset + 8, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\tiValOffset = iNumValues > 4 ? iValueOffset : iEntryOffset + 8;\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getByteAt(iValOffset + n);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\t// ascii, 8-bit byte\n\t\t\t\tvar iStringOffset = iNumValues > 4 ? iValueOffset : iEntryOffset + 8;\n\t\t\t\treturn oFile.getStringAt(iStringOffset, iNumValues - 1);\n\t\t\tcase 3:\n\t\t\t\t// short, 16 bit int\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getShortAt(iEntryOffset + 8, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\tiValOffset = iNumValues > 2 ? iValueOffset : iEntryOffset + 8;\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getShortAt(iValOffset + 2 * n, bBigEnd);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\t// long, 32 bit int\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getLongAt(iEntryOffset + 8, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getLongAt(iValueOffset + 4 * n, bBigEnd);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\t// rational = two long values, first is numerator, second is denominator\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getLongAt(iValueOffset, bBigEnd) / oFile.getLongAt(iValueOffset + 4, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getLongAt(iValueOffset + 8 * n, bBigEnd) / oFile.getLongAt(iValueOffset + 4 + 8 * n, bBigEnd);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t\tcase 9:\n\t\t\t\t// slong, 32 bit signed int\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getSLongAt(iEntryOffset + 8, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getSLongAt(iValueOffset + 4 * n, bBigEnd);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t\tcase 10:\n\t\t\t\t// signed rational, two slongs, first is numerator, second is denominator\n\t\t\t\tif (iNumValues === 1) {\n\t\t\t\t\treturn oFile.getSLongAt(iValueOffset, bBigEnd) / oFile.getSLongAt(iValueOffset + 4, bBigEnd);\n\t\t\t\t} else {\n\t\t\t\t\taVals = [];\n\t\t\t\t\tfor (n = 0; n < iNumValues; n++) {\n\t\t\t\t\t\taVals[n] = oFile.getSLongAt(iValueOffset + 8 * n, bBigEnd) / oFile.getSLongAt(iValueOffset + 4 + 8 * n, bBigEnd);\n\t\t\t\t\t}\n\t\t\t\t\treturn aVals;\n\t\t\t\t}\n\t\t}\n\t}\n\n\tfunction readTags(oFile, iTIFFStart, iDirStart, oStrings, bBigEnd) {\n\t\tvar iEntries = oFile.getShortAt(iDirStart, bBigEnd);\n\t\tvar oTags = {};\n\t\tfor (var i = 0; i < iEntries; i++) {\n\t\t\tvar iEntryOffset = iDirStart + i * 12 + 2;\n\t\t\tvar strTag = oStrings[oFile.getShortAt(iEntryOffset, bBigEnd)];\n\t\t\tif (!strTag && bDebug) {\n\t\t\t\t(true && Ember.warn(\"Unknown tag: \" + oFile.getShortAt(iEntryOffset, bBigEnd)));\n\t\t\t}\n\t\t\toTags[strTag] = readTagValue(oFile, iEntryOffset, iTIFFStart, iDirStart, bBigEnd);\n\t\t}\n\t\treturn oTags;\n\t}\n\n\tfunction readEXIFData(oFile, iStart) {\n\t\tif (oFile.getStringAt(iStart, 4) !== \"Exif\") {\n\t\t\tif (bDebug) {\n\t\t\t\t(true && Ember.warn(\"Not valid EXIF data! \" + oFile.getStringAt(iStart, 4)));\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tvar bBigEnd, strTag;\n\t\tvar iTIFFOffset = iStart + 6;\n\n\t\t// test for TIFF validity and endianness\n\t\tif (oFile.getShortAt(iTIFFOffset) === 0x4949) {\n\t\t\tbBigEnd = false;\n\t\t} else if (oFile.getShortAt(iTIFFOffset) === 0x4D4D) {\n\t\t\tbBigEnd = true;\n\t\t} else {\n\t\t\tif (bDebug) {\n\t\t\t\t(true && Ember.warn(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\"));\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tif (oFile.getShortAt(iTIFFOffset + 2, bBigEnd) !== 0x002A) {\n\t\t\tif (bDebug) {\n\t\t\t\t(true && Ember.warn(\"Not valid TIFF data! (no 0x002A)\"));\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tif (oFile.getLongAt(iTIFFOffset + 4, bBigEnd) !== 0x00000008) {\n\t\t\tif (bDebug) {\n\t\t\t\t(true && Ember.warn(\"Not valid TIFF data! (First offset not 8)\", oFile.getShortAt(iTIFFOffset + 4, bBigEnd)));\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tvar oTags = readTags(oFile, iTIFFOffset, iTIFFOffset + 8, Exif.TiffTags(), bBigEnd);\n\t\tif (oTags.ExifIFDPointer) {\n\t\t\tvar oEXIFTags = readTags(oFile, iTIFFOffset, iTIFFOffset + oTags.ExifIFDPointer, Exif.Tags(), bBigEnd);\n\t\t\tfor (strTag in oEXIFTags) {\n\t\t\t\tif (oEXIFTags.hasOwnProperty(strTag)) {\n\t\t\t\t\tswitch (strTag) {\n\t\t\t\t\t\tcase \"LightSource\":\n\t\t\t\t\t\tcase \"Flash\":\n\t\t\t\t\t\tcase \"MeteringMode\":\n\t\t\t\t\t\tcase \"ExposureProgram\":\n\t\t\t\t\t\tcase \"SensingMethod\":\n\t\t\t\t\t\tcase \"SceneCaptureType\":\n\t\t\t\t\t\tcase \"SceneType\":\n\t\t\t\t\t\tcase \"CustomRendered\":\n\t\t\t\t\t\tcase \"WhiteBalance\":\n\t\t\t\t\t\tcase \"GainControl\":\n\t\t\t\t\t\tcase \"Contrast\":\n\t\t\t\t\t\tcase \"Saturation\":\n\t\t\t\t\t\tcase \"Sharpness\":\n\t\t\t\t\t\tcase \"SubjectDistanceRange\":\n\t\t\t\t\t\tcase \"FileSource\":\n\t\t\t\t\t\t\toEXIFTags[strTag] = Exif.StringValues()[strTag][oEXIFTags[strTag]];\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"ExifVersion\":\n\t\t\t\t\t\tcase \"FlashpixVersion\":\n\t\t\t\t\t\t\toEXIFTags[strTag] = String.fromCharCode(oEXIFTags[strTag][0], oEXIFTags[strTag][1], oEXIFTags[strTag][2], oEXIFTags[strTag][3]);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"ComponentsConfiguration\":\n\t\t\t\t\t\t\toEXIFTags[strTag] = Exif.StringValues().Components[oEXIFTags[strTag][0]] + Exif.StringValues().Components[oEXIFTags[strTag][1]];\n\t\t\t\t\t\t\toEXIFTags[strTag] += Exif.StringValues().Components[oEXIFTags[strTag][2]] + Exif.StringValues().Components[oEXIFTags[strTag][3]];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\toTags[strTag] = oEXIFTags[strTag];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (oTags.GPSInfoIFDPointer) {\n\t\t\tvar oGPSTags = readTags(oFile, iTIFFOffset, iTIFFOffset + oTags.GPSInfoIFDPointer, Exif.GPSTags(), bBigEnd);\n\t\t\tfor (strTag in oGPSTags) {\n\t\t\t\tif (oGPSTags.hasOwnProperty(strTag)) {\n\t\t\t\t\tswitch (strTag) {\n\t\t\t\t\t\tcase \"GPSVersionID\":\n\t\t\t\t\t\t\toGPSTags[strTag] = oGPSTags[strTag][0] + \".\" + oGPSTags[strTag][1] + \".\" + oGPSTags[strTag][2] + \".\" + oGPSTags[strTag][3];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\toTags[strTag] = oGPSTags[strTag];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn oTags;\n\t}\n\n\tfunction findEXIFinJPEG(oFile) {\n\t\tif (oFile.getByteAt(0) !== 0xFF || oFile.getByteAt(1) !== 0xD8) {\n\t\t\treturn false; // not a valid jpeg\n\t\t}\n\n\t\tvar iOffset = 2;\n\t\tvar iLength = oFile.getLength();\n\t\twhile (iOffset < iLength) {\n\t\t\tif (oFile.getByteAt(iOffset) !== 0xFF) {\n\t\t\t\tif (bDebug) {\n\t\t\t\t\t(true && Ember.warn(\"Not a valid marker at offset \" + iOffset + \", found: \" + oFile.getByteAt(iOffset)));\n\t\t\t\t}\n\t\t\t\treturn false; // not a valid marker, something is wrong\n\t\t\t}\n\n\t\t\tvar iMarker = oFile.getByteAt(iOffset + 1);\n\n\t\t\t// we could implement handling for other markers here,\n\t\t\t// but we're only looking for 0xFFE1 for EXIF data\n\t\t\tif (iMarker === 22400) {\n\t\t\t\tif (bDebug) {\n\t\t\t\t\t(true && Ember.warn(\"Found 0xFFE1 marker\"));\n\t\t\t\t}\n\t\t\t\tiOffset += 2 + oFile.getShortAt(iOffset + 2, true);\n\t\t\t\treturn readEXIFData(oFile, iOffset + 4, oFile.getShortAt(iOffset + 2, true) - 2);\n\t\t\t} else if (iMarker === 225) {\n\t\t\t\t// 0xE1 = Application-specific 1 (for EXIF)\n\t\t\t\tif (bDebug) {\n\t\t\t\t\t(true && Ember.warn(\"Found 0xFFE1 marker\"));\n\t\t\t\t}\n\t\t\t\treturn readEXIFData(oFile, iOffset + 4, oFile.getShortAt(iOffset + 2, true) - 2);\n\t\t\t} else {\n\t\t\t\tiOffset += 2 + oFile.getShortAt(iOffset + 2, true);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getImageData(oImg, fncCallback) {\n\t\twindow.BinaryAjax(oImg.src, function (oHTTP) {\n\t\t\tvar oEXIF = findEXIFinJPEG(oHTTP.binaryResponse);\n\t\t\toImg.exifdata = oEXIF || {};\n\t\t\tif (fncCallback) {\n\t\t\t\tfncCallback();\n\t\t\t}\n\t\t});\n\t}\n\n\t//function loadAllImages() {\n\t//\tvar callback = function() {Exif.getData(this);};\n\t//\tvar aImages = document.getElementsByTagName(\"img\");\n\t//\tfor (var i=0;i<aImages.length;i++) {\n\t//\t\tif (aImages[i].getAttribute(\"exif\") === \"true\") {\n\t//\t\t\tif (!aImages[i].complete) {\n\t//\t\t\t\taddEvent(aImages[i], \"load\", callback);\n\t//\t\t\t} else {\n\t//\t\t\t\tExif.getData(aImages[i]);\n\t//\t\t\t}\n\t//\t\t}\n\t//\t}\n\t//}\n\t//window.loadAllImages = loadAllImages;\n\n\t//addEvent(window, \"load\", loadAllImages);\n\n\tfunction getBinaryFile(strData) {\n\t\tthis._data = strData;\n\t\tthis.getRawData = function () {\n\t\t\treturn this._data;\n\t\t};\n\n\t\tif (typeof strData === \"string\") {\n\t\t\tthis.getByteAt = function (iOffset) {\n\t\t\t\treturn this._data.charCodeAt(iOffset) & 0xFF;\n\t\t\t};\n\n\t\t\tthis.getLength = function () {\n\t\t\t\treturn this._data.length;\n\t\t\t};\n\t\t} else if (typeof strData === \"undefined\") {\n\t\t\tthis.getByteAt = function (iOffset) {\n\t\t\t\treturn window.IEBinary_getByteAt(this._data, iOffset);\n\t\t\t};\n\n\t\t\tthis.getLength = function () {\n\t\t\t\treturn window.IEBinary_getLength(this._data);\n\t\t\t};\n\t\t}\n\n\t\tthis.getSByteAt = function (iOffset) {\n\t\t\tvar iByte = this.getByteAt(iOffset);\n\t\t\tif (iByte > 127) {\n\t\t\t\treturn iByte - 256;\n\t\t\t} else {\n\t\t\t\treturn iByte;\n\t\t\t}\n\t\t};\n\n\t\tthis.getShortAt = function (iOffset, bBigEndian) {\n\t\t\treturn bBigEndian ? (this.getByteAt(iOffset) << 8) + this.getByteAt(iOffset + 1) : (this.getByteAt(iOffset + 1) << 8) + this.getByteAt(iOffset);\n\t\t};\n\n\t\tthis.getSShortAt = function (iOffset, bBigEndian) {\n\t\t\tvar iUShort = this.getShortAt(iOffset, bBigEndian);\n\t\t\tif (iUShort > 32767) {\n\t\t\t\treturn iUShort - 65536;\n\t\t\t} else {\n\t\t\t\treturn iUShort;\n\t\t\t}\n\t\t};\n\n\t\tthis.getLongAt = function (iOffset, bBigEndian) {\n\t\t\tvar iByte1 = this.getByteAt(iOffset),\n\t\t\t    iByte2 = this.getByteAt(iOffset + 1),\n\t\t\t    iByte3 = this.getByteAt(iOffset + 2),\n\t\t\t    iByte4 = this.getByteAt(iOffset + 3);\n\t\t\treturn bBigEndian ? (((iByte1 << 8) + iByte2 << 8) + iByte3 << 8) + iByte4 : (((iByte4 << 8) + iByte3 << 8) + iByte2 << 8) + iByte1;\n\t\t};\n\n\t\tthis.getSLongAt = function (iOffset, bBigEndian) {\n\t\t\tvar iULong = this.getLongAt(iOffset, bBigEndian);\n\t\t\tif (iULong > 2147483647) {\n\t\t\t\treturn iULong - 4294967296;\n\t\t\t} else {\n\t\t\t\treturn iULong;\n\t\t\t}\n\t\t};\n\n\t\tthis.getStringAt = function (iOffset, iLength) {\n\t\t\tvar aStr = [];\n\t\t\tfor (var i = iOffset, j = 0; i < iOffset + iLength; i++, j++) {\n\t\t\t\taStr[j] = String.fromCharCode(this.getByteAt(i));\n\t\t\t}\n\t\t\treturn aStr.join(\"\");\n\t\t};\n\n\t\tthis.getCharAt = function (iOffset) {\n\t\t\treturn String.fromCharCode(this.getByteAt(iOffset));\n\t\t};\n\n\t\tthis.toBase64 = function () {\n\t\t\treturn window.btoa(this._data);\n\t\t};\n\n\t\tthis.fromBase64 = function (strBase64) {\n\t\t\tthis._data = window.atob(strBase64);\n\t\t};\n\t}\n\n\t/**\n  * 'Util/Exif'\n  *\n  * @class Exif\n  * @extends EmberObject\n  */\n\tExif = Ember.Object.extend().reopenClass({\n\t\tBinaryFile: getBinaryFile,\n\n\t\tTags: function Tags() {\n\t\t\treturn getExiftags();\n\t\t},\n\t\tTiffTags: function TiffTags() {\n\t\t\treturn getTiffTags();\n\t\t},\n\t\tGPSTags: function GPSTags() {\n\t\t\treturn getGPSTags();\n\t\t},\n\t\tStringValues: function StringValues() {\n\t\t\treturn getStrings();\n\t\t},\n\t\tgetData: function getData(oImg, fncCallback) {\n\t\t\tif (!oImg.complete) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!imageHasData(oImg)) {\n\t\t\t\tgetImageData(this, oImg, fncCallback);\n\t\t\t} else {\n\t\t\t\tif (fncCallback) {\n\t\t\t\t\tfncCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tgetTag: function getTag(oImg, strTag) {\n\t\t\tif (!imageHasData(oImg)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn oImg.exifdata[strTag];\n\t\t},\n\t\tgetAllTags: function getAllTags(oImg) {\n\t\t\tif (!imageHasData(oImg)) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tvar oData = oImg.exifdata;\n\t\t\tvar oAllTags = {};\n\t\t\tfor (var a in oData) {\n\t\t\t\tif (oData.hasOwnProperty(a)) {\n\t\t\t\t\toAllTags[a] = oData[a];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn oAllTags;\n\t\t},\n\t\tpretty: function pretty(oImg) {\n\t\t\tif (!imageHasData(oImg)) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tvar oData = oImg.exifdata;\n\t\t\tvar strPretty = \"\";\n\t\t\tfor (var a in oData) {\n\t\t\t\tif (oData.hasOwnProperty(a)) {\n\t\t\t\t\tif (_typeof(oData[a]) === \"object\") {\n\t\t\t\t\t\tstrPretty += a + \" : [\" + oData[a].length + \" values]\\r\\n\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstrPretty += a + \" : \" + oData[a] + \"\\r\\n\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn strPretty;\n\t\t},\n\t\treadFromBinaryFile: function readFromBinaryFile(oFile) {\n\t\t\treturn findEXIFinJPEG(oFile);\n\t\t}\n\t});\n\n\texports.default = Exif;\n});","define('busy-app/utils/export-csv', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Object.extend({\n\t\tdata: null,\n\t\tdataMap: null,\n\n\t\tsetDataMap: function setDataMap(dataMap) {\n\t\t\t(true && !(Ember.typeOf(dataMap) === 'object') && Ember.assert('setDataMap requires an key:value object where key is the data mapped path and value is the header title', Ember.typeOf(dataMap) === 'object'));\n\n\n\t\t\tvar _map = Ember.Map.create();\n\t\t\tEmber.$.each(dataMap, function (key, value) {\n\t\t\t\tif (dataMap.hasOwnProperty(key)) {\n\t\t\t\t\t_map.set(key, value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.set('dataMap', _map);\n\t\t},\n\t\tsetData: function setData(data) {\n\t\t\t(true && !(Ember.typeOf(data) === 'array') && Ember.assert('setData requires an array of objects', Ember.typeOf(data) === 'array'));\n\n\t\t\tthis.set('data', data);\n\t\t},\n\t\tbuildHeader: function buildHeader(dataMap) {\n\t\t\tvar header = [];\n\t\t\tdataMap.forEach(function (value) {\n\t\t\t\theader.push(value);\n\t\t\t});\n\t\t\theader.join(',');\n\t\t\treturn header + '\\n';\n\t\t},\n\t\tbuildContent: function buildContent(dataMap, data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar line = [];\n\t\t\tdataMap.forEach(function (value, key) {\n\t\t\t\tvar val = Ember.get(data, key) || \"\";\n\t\t\t\tline.push(_this.csvSafeString(val));\n\t\t\t});\n\t\t\tline.join(',');\n\t\t\treturn line + '\\n';\n\t\t},\n\t\tcsvSafeString: function csvSafeString(str) {\n\t\t\t// replace non breaking spaces with regular space\n\t\t\tstr = str.replace(/\\u00a0/g, ' ');\n\n\t\t\t// remove begining and end quotes\n\t\t\tstr = str.replace(/^\"/, '');\n\t\t\tstr = str.replace(/\"$/, '');\n\n\t\t\t// escape any quotes left inside the string\n\t\t\tstr = str.replace(/\"/g, '\"\"');\n\n\t\t\t// add the begining and ending quotes\n\t\t\treturn '\"' + str + '\"';\n\t\t},\n\t\tbuildContentString: function buildContentString() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar data = this.get('data');\n\t\t\tvar dataMap = this.get('dataMap');\n\t\t\tvar content = '';\n\t\t\tcontent += this.buildHeader(dataMap);\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tcontent += _this2.buildContent(dataMap, item);\n\t\t\t});\n\t\t\treturn content;\n\t\t},\n\t\tgenerate: function generate(name) {\n\t\t\tvar date = _utils.Time.date().format('MM-DD-YYYY');\n\t\t\tvar content = this.buildContentString();\n\t\t\tvar filename = name + '_' + date + '.csv';\n\t\t\tthis.triggerDownload(content, filename);\n\t\t},\n\t\ttriggerDownload: function triggerDownload(content, filename) {\n\t\t\tvar type = filename.split('.')[1];\n\n\t\t\t(true && !(typeof content === 'string') && Ember.assert('content must be string', typeof content === 'string'));\n\t\t\t(true && !(!Ember.isNone(type)) && Ember.assert(\"filename must include the file extension\", !Ember.isNone(type)));\n\n\n\t\t\tif (window.navigator.msSaveOrOpenBlob) {\n\t\t\t\tvar blob = new window.Blob([decodeURIComponent(encodeURI(content))], {\n\t\t\t\t\ttype: 'text/' + type + ';charset=utf-8;'\n\t\t\t\t});\n\t\t\t\twindow.navigator.msSaveBlob(blob, filename);\n\t\t\t} else {\n\t\t\t\tvar fileContent = \"data:application/octet-stream;base64,\";\n\t\t\t\tfileContent += this.encodeBase64(content);\n\n\t\t\t\tvar link = document.createElement('a');\n\t\t\t\tdocument.body.appendChild(link);\n\t\t\t\tlink.setAttribute('href', fileContent);\n\t\t\t\tlink.setAttribute('download', filename);\n\n\t\t\t\tlink.click();\n\t\t\t}\n\t\t},\n\t\tencodeBase64: function encodeBase64(str) {\n\t\t\treturn window.btoa(this.encodeUTF8(str));\n\t\t},\n\t\tencodeUTF8: function encodeUTF8(str) {\n\t\t\treturn window.unescape(encodeURIComponent(str));\n\t\t}\n\t});\n});","define(\"busy-app/utils/features\", [\"exports\", \"busy-app/config/environment\"], function (exports, _environment) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar featureFlags = _environment.default.featureFlags;\n\n\tvar kProFeatures = [\"activity-report\", \"conflict-resolution\", \"custom-roles\", \"entry-history\", \"export\", \"labor-budgets\", \"member-gps-setting\", \"notes\", \"payroll-report\", \"photos\", \"photos-react\", \"procore\", \"quickbooks\", \"safety-sign-off\", \"scheduling\", \"daily-reports\", \"daily-reports-prompts\", \"busy-sign-in\"];\n\n\tvar kFreeFeatures = [\"cost-codes\", \"equipment\", \"gps-tracking\", \"projects\", \"signatures\", \"location-based-reminders\", \"phone-number-in-onboarding\", \"report-labor-burden\", \"export-macro-csv\", \"react-main-app\", \"server-outage\", \"deprecate-legacy-reports\"];\n\n\tvar Features = Ember.Object.extend();\n\n\tFeatures.reopenClass({\n\t\tget: function get(key) {\n\t\t\treturn Ember.get(this.getList(), key);\n\t\t},\n\t\tgetList: function getList() {\n\t\t\treturn featureFlags;\n\t\t},\n\t\tisProFeature: function isProFeature(key) {\n\t\t\treturn kProFeatures.indexOf(key) !== -1;\n\t\t},\n\t\tisFreeFeature: function isFreeFeature(key) {\n\t\t\treturn kFreeFeatures.indexOf(key) !== -1;\n\t\t},\n\t\tgetFlags: function getFlags(state) {\n\t\t\tvar list = {};\n\t\t\t// set pro features\n\t\t\tkProFeatures.forEach(function (key) {\n\t\t\t\tEmber.set(list, key, state === \"pro\");\n\t\t\t});\n\n\t\t\t// set free features\n\t\t\tkFreeFeatures.forEach(function (key) {\n\t\t\t\tEmber.set(list, key, true);\n\t\t\t});\n\t\t\treturn list;\n\t\t}\n\t});\n\n\texports.default = Features;\n});","define('busy-app/utils/format', ['exports', '@busy-web/ember-date-time/utils/format'], function (exports, _format) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tObject.defineProperty(exports, 'longFormatDate', {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\treturn _format.longFormatDate;\n\t\t}\n\t});\n\tObject.defineProperty(exports, 'splitFormat', {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\treturn _format.splitFormat;\n\t\t}\n\t});\n\tObject.defineProperty(exports, 'getCursorPosition', {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\treturn _format.getCursorPosition;\n\t\t}\n\t});\n\tObject.defineProperty(exports, 'getFormatSection', {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\treturn _format.getFormatSection;\n\t\t}\n\t});\n\tObject.defineProperty(exports, 'findSectionIndex', {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\treturn _format.findSectionIndex;\n\t\t}\n\t});\n});","define('busy-app/utils/geo', ['exports', 'ember-i18n-iso-countries'], function (exports, _emberI18nIsoCountries) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.getCountries = getCountries;\n\texports.getStates = getStates;\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tfunction _possibleConstructorReturn(self, call) {\n\t\tif (!self) {\n\t\t\tthrow new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\t\t}\n\n\t\treturn call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n\t}\n\n\tfunction _inherits(subClass, superClass) {\n\t\tif (typeof superClass !== \"function\" && superClass !== null) {\n\t\t\tthrow new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n\t\t}\n\n\t\tsubClass.prototype = Object.create(superClass && superClass.prototype, {\n\t\t\tconstructor: {\n\t\t\t\tvalue: subClass,\n\t\t\t\tenumerable: false,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t}\n\t\t});\n\t\tif (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n\t}\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar Geo = function Geo(_ref) {\n\t\tvar code = _ref.code,\n\t\t    name = _ref.name;\n\n\t\t_classCallCheck(this, Geo);\n\n\t\tthis.code = code;\n\t\tthis.name = name;\n\t};\n\n\tvar Country = function (_Geo) {\n\t\t_inherits(Country, _Geo);\n\n\t\tfunction Country() {\n\t\t\t_classCallCheck(this, Country);\n\n\t\t\treturn _possibleConstructorReturn(this, (Country.__proto__ || Object.getPrototypeOf(Country)).apply(this, arguments));\n\t\t}\n\n\t\treturn Country;\n\t}(Geo);\n\n\tvar State = function (_Geo2) {\n\t\t_inherits(State, _Geo2);\n\n\t\tfunction State() {\n\t\t\t_classCallCheck(this, State);\n\n\t\t\treturn _possibleConstructorReturn(this, (State.__proto__ || Object.getPrototypeOf(State)).apply(this, arguments));\n\t\t}\n\n\t\treturn State;\n\t}(Geo);\n\n\t/***/\n\t// ISO 3166-2\n\tvar kStates = [new State({ code: \"AL\", type: \"state\", name: \"Alabama\" }), new State({ code: \"AK\", type: \"state\", name: \"Alaska\" }), new State({ code: \"AZ\", type: \"state\", name: \"Arizona\" }), new State({ code: \"AR\", type: \"state\", name: \"Arkansas\" }), new State({ code: \"CA\", type: \"state\", name: \"California\" }), new State({ code: \"CO\", type: \"state\", name: \"Colorado\" }), new State({ code: \"CT\", type: \"state\", name: \"Connecticut\" }), new State({ code: \"DE\", type: \"state\", name: \"Delaware\" }), new State({ code: \"DC\", type: \"district\", name: \"District of Columbia\" }), new State({ code: \"FL\", type: \"state\", name: \"Florida\" }), new State({ code: \"GA\", type: \"state\", name: \"Georgia\" }), new State({ code: \"HI\", type: \"state\", name: \"Hawaii\" }), new State({ code: \"ID\", type: \"state\", name: \"Idaho\" }), new State({ code: \"IL\", type: \"state\", name: \"Illinois\" }), new State({ code: \"IN\", type: \"state\", name: \"Indiana\" }), new State({ code: \"IA\", type: \"state\", name: \"Iowa\" }), new State({ code: \"KS\", type: \"state\", name: \"Kansas\" }), new State({ code: \"KY\", type: \"state\", name: \"Kentucky\" }), new State({ code: \"LA\", type: \"state\", name: \"Louisiana\" }), new State({ code: \"ME\", type: \"state\", name: \"Maine\" }), new State({ code: \"MD\", type: \"state\", name: \"Maryland\" }), new State({ code: \"MA\", type: \"state\", name: \"Massachusetts\" }), new State({ code: \"MI\", type: \"state\", name: \"Michigan\" }), new State({ code: \"MN\", type: \"state\", name: \"Minnesota\" }), new State({ code: \"MS\", type: \"state\", name: \"Mississippi\" }), new State({ code: \"MO\", type: \"state\", name: \"Missouri\" }), new State({ code: \"MT\", type: \"state\", name: \"Montana\" }), new State({ code: \"NE\", type: \"state\", name: \"Nebraska\" }), new State({ code: \"NV\", type: \"state\", name: \"Nevada\" }), new State({ code: \"NH\", type: \"state\", name: \"New Hampshire\" }), new State({ code: \"NJ\", type: \"state\", name: \"New Jersey\" }), new State({ code: \"NM\", type: \"state\", name: \"New Mexico\" }), new State({ code: \"NY\", type: \"state\", name: \"New York\" }), new State({ code: \"NC\", type: \"state\", name: \"North Carolina\" }), new State({ code: \"ND\", type: \"state\", name: \"North Dakota\" }), new State({ code: \"OH\", type: \"state\", name: \"Ohio\" }), new State({ code: \"OK\", type: \"state\", name: \"Oklahoma\" }), new State({ code: \"OR\", type: \"state\", name: \"Oregon\" }), new State({ code: \"PA\", type: \"state\", name: \"Pennsylvania\" }), new State({ code: \"RI\", type: \"state\", name: \"Rhode Island\" }), new State({ code: \"SC\", type: \"state\", name: \"South Carolina\" }), new State({ code: \"SD\", type: \"state\", name: \"South Dakota\" }), new State({ code: \"TN\", type: \"state\", name: \"Tennessee\" }), new State({ code: \"TX\", type: \"state\", name: \"Texas\" }), new State({ code: \"UT\", type: \"state\", name: \"Utah\" }), new State({ code: \"VT\", type: \"state\", name: \"Vermont\" }), new State({ code: \"VA\", type: \"state\", name: \"Virginia\" }), new State({ code: \"WA\", type: \"state\", name: \"Washington\" }), new State({ code: \"WV\", type: \"state\", name: \"West Virginia\" }), new State({ code: \"WI\", type: \"state\", name: \"Wisconsin\" }), new State({ code: \"WY\", type: \"state\", name: \"Wyoming\" }), new State({ code: \"AS\", type: \"outlying area\", name: \"American Samoa\" }), new State({ code: \"GU\", type: \"outlying area\", name: \"Guam\" }), new State({ code: \"MP\", type: \"outlying area\", name: \"Northern Mariana Islands\" }), new State({ code: \"PR\", type: \"outlying area\", name: \"Puerto Rico\" }), new State({ code: \"UM\", type: \"outlying area\", name: \"United States Minor Outlying Islands\" }), new State({ code: \"VI\", type: \"outlying area\", name: \"Virgin Islands, U.S.\" })];\n\n\t/*\n \tPUBLIC exports\n  */\n\n\t/**\n  * Retrieve a sorted collection of Country objects\n  *\n  * Example result:\n  *\n  *\t`[{code: 'AF', name: 'Afghanistan'}, {code: 'AL', name: 'Albania'}, [...], {code: 'ZM', name: 'Zambia'}, {code: 'ZW': name: 'Zimbabwe'}]`\n  *\n  * @public\n  * @method getCountries\n  * @param [lang=getBrowserLang()] {string} 2 letter key indicating the language to use, see Supported Languages at top of utility\n  * @return Country[]\n  */\n\tfunction getCountries() {\n\t\tvar lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getBrowserLang();\n\n\t\tvar hash = getIsoCountries(lang);\n\n\t\tvar collection = Object.keys(hash).map(function (code) {\n\t\t\treturn new Country({ code: code, name: hash[code] });\n\t\t}).sort(function (a, b) {\n\t\t\treturn sortAlphaByKey('name', a, b);\n\t\t});\n\n\t\treturn collection;\n\t}\n\n\t/**\n  * Retrieve a sorted collection of State objectes\n  *\n  * Example result:\n  *\n  * \t`[{code: 'AF', name: 'Afghanistan'}, {code: 'AL', name: 'Albania'}, [...], {code: 'ZM', name: 'Zambia'}, {code: 'ZW': name: 'Zimbabwe'}]`\n  *\n  * @public\n  * @method getStates\n  * @return State[]\n  */\n\tfunction getStates() {\n\t\treturn kStates;\n\t}\n\n\t/*\n \tPRIVATE\n  */\n\n\t/**\n  * Array sort algorithm wrapper, use sortAlphaByKeyLocale is locale is supported, otherwise fallback to sortAlphaByKeyLegacy\n  *\n  * @private\n  * @method sortAlphaByKey\n  * @param key {string}\n  * @param a {object}\n  * @param b {object}\n  * @return Integer\n  */\n\tvar sortAlphaByKey = localeCompareSupportsLocales() ? sortAlphaByKeyLocale : sortAlphaByKeyLegacy;\n\n\t/**\n  * Array sort algorithm for an array of objects on the specified key using localeCompare\n  *\n  * @private\n  * @method sortAlphaByKeyLocale\n  * @param key {string}\n  * @param a {object}\n  * @param b {object}\n  * @return Integer\n  */\n\tfunction sortAlphaByKeyLocale(key, a, b) {\n\t\treturn a[key].localeCompare(b[key]);\n\t}\n\n\t/**\n  * Array sort algorithm for an array of objects on the specified key using standard string comparison\n  *\n  * @private\n  * @method sortAlphaByKeyLegacy\n  * @param key {string}\n  * @param a {object}\n  * @param b {object}\n  * @return Integer\n  */\n\tfunction sortAlphaByKeyLegacy(key, a, b) {\n\t\treturn a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : 0;\n\t}\n\n\t/**\n  * Determine if localeCompare is supported in the current browser\n  *\n  * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#Check_browser_support_for_extended_arguments\n  *\n  * @private\n  * @method localeCompareSupportsLocales\n  * @return Boolean\n  */\n\tfunction localeCompareSupportsLocales() {\n\t\ttry {\n\t\t\t'foo'.localeCompare('bar', 'i');\n\t\t} catch (e) {\n\t\t\treturn e.name === 'RangeError';\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n  * pass through to ember-i18n-iso-countries\n  *\n  * Example result:\n  *\n  *\t`{ 'AF': 'Afghanistan', 'AL': 'Albania', [...], 'ZM': 'Zambia', 'ZW': 'Zimbabwe' }`\n  *\n  * @private\n  * @method getIsoCountries\n  * @return String\n  */\n\tfunction getIsoCountries(lang) {\n\t\treturn (0, _emberI18nIsoCountries.getNames)(lang);\n\t}\n\n\t/**\n  * determine what language the user browser is using\n  *\n  * @private\n  * @method getBrowserLang\n  * @return String\n  */\n\tfunction getBrowserLang() {\n\t\tvar supportedLanguages = 'en,es'.split(); //,de,nl,fr,sv,pt,fi,ru\n\n\t\t// setup language\n\t\tvar lang = null;\n\n\t\t// get the users chosen languages\n\t\tvar allLanguages = window.navigator.languages;\n\t\tif (Ember.isNone(allLanguages)) {\n\t\t\tallLanguages = [window.navigator.language];\n\t\t}\n\n\t\tallLanguages = [].concat(_toConsumableArray(allLanguages)).map(function (l) {\n\t\t\treturn l.split('-')[0].toLowerCase();\n\t\t}); // \"en\" isntead of \"en-US\"\n\n\t\tallLanguages.forEach(function (language) {\n\t\t\tif (typeof language === 'string' && supportedLanguages.indexOf(language) !== -1 && Ember.isNone(lang)) {\n\t\t\t\tlang = language;\n\t\t\t}\n\t\t});\n\n\t\tif (Ember.isNone(lang)) {\n\t\t\tlang = 'en';\n\t\t}\n\n\t\treturn lang;\n\t}\n\n\t/*\n \tDEFAULT EXPORT\n  */\n\n\texports.default = {\n\t\tgetCountries: getCountries,\n\t\tgetStates: getStates\n\t};\n});","define('busy-app/utils/helpers', ['exports', 'ember-google-maps/utils/helpers'], function (exports, _helpers) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'computedPromise', {\n    enumerable: true,\n    get: function () {\n      return _helpers.computedPromise;\n    }\n  });\n  Object.defineProperty(exports, 'position', {\n    enumerable: true,\n    get: function () {\n      return _helpers.position;\n    }\n  });\n});","define('busy-app/utils/integrations/appcues', ['exports', '@busy-web/utils', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _utils, _base, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tfeatureName: 'integrations/appcues',\n\n\t\tisLoadReady: function isLoadReady() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\treturn !Ember.$('#inject-appcues').length;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tisRunReady: function isRunReady() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\treturn window.Appcues && typeof window.Appcues.identify === 'function' && !Ember.isNone(this.get('auth.organization.id')) && !Ember.isNone(this.get('subscription.subscriptionStatus.id'));\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tload: function load(callback) {\n\t\t\tif (this.isAuth()) {\n\t\t\t\tvar script = document.createElement('script');\n\t\t\t\tscript.id = 'inject-appcues';\n\t\t\t\tscript.type = 'text/javascript';\n\t\t\t\tscript.src = 'https://fast.appcues.com/19912.js';\n\n\t\t\t\tEmber.$('body').append(script);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\trun: function run() {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.isAuth()) {\n\t\t\t\tEmber.RSVP.resolve(this.getWithDefault('auth.memberCount', 1)).then(function (memberCount) {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tmemberId: _this.get('auth.member.id'),\n\t\t\t\t\t\tmemberEmail: _this.getWithDefault('auth.member.email', null),\n\t\t\t\t\t\tmemberPhone: _this.getWithDefault('auth.member.phone', null),\n\t\t\t\t\t\tmemberFirstName: _this.getWithDefault('auth.member.firstName', null),\n\t\t\t\t\t\tmemberLastName: _this.getWithDefault('auth.member.lastName', null),\n\t\t\t\t\t\tmemberFullName: _this.getWithDefault('auth.member.fullName', null),\n\t\t\t\t\t\tmemberImageUrl: _this.getWithDefault('auth.member.imageUrl', null),\n\t\t\t\t\t\tmemberImageThumbUrl: _this.getWithDefault('auth.member.imageThumbUrl', null),\n\t\t\t\t\t\tmemberUserName: _this.getWithDefault('auth.member.username', null),\n\t\t\t\t\t\tmemberNumber: _this.getWithDefault('auth.member.memberNumber', null),\n\t\t\t\t\t\tmemberCreatedOn: _this.get('auth.member.createdOn'),\n\t\t\t\t\t\tmemberCreatedOnDate: _utils.Time.date(_this.get('auth.member.createdOn')).format('YYYY-MM-DD'),\n\n\t\t\t\t\t\tmemberPosition: _this.getWithDefault('auth.member.positionName', null),\n\t\t\t\t\t\tmemberEmailVerificationRequired: _this.getWithDefault('auth.member.emailVerificationRequired', false),\n\t\t\t\t\t\tmemberIsOwner: _this.get('auth.organization.ownedBy') === _this.get('auth.member.id'),\n\n\t\t\t\t\t\torgId: _this.get('auth.organization.id'),\n\t\t\t\t\t\torgName: _this.getWithDefault('auth.organization.organizationName', null),\n\t\t\t\t\t\torgImageUrl: _this.getWithDefault('auth.organization.imageUrl', null),\n\t\t\t\t\t\torgImageThumbUrl: _this.getWithDefault('auth.organization.imageThumbUrl', null),\n\t\t\t\t\t\torgCreatedOn: _this.get('auth.organization.createdOn'),\n\n\t\t\t\t\t\torgCreatedOnDate: _utils.Time.date(_this.get('auth.organization.createdOn')).format('YYYY-MM-DD'),\n\t\t\t\t\t\torgSubscriptionId: _this.get('subscription.subscriptionStatus.subscriptionId'),\n\t\t\t\t\t\torgCustomerId: _this.get('subscription.subscriptionStatus.customerId'),\n\n\t\t\t\t\t\torgTrackCostCode: _this.get('auth.organization.trackCostCode'),\n\t\t\t\t\t\torgTrackProject: _this.get('auth.organization.trackProject'),\n\t\t\t\t\t\torgTrackPaidBreak: _this.get('auth.organization.trackPaidBreak'),\n\t\t\t\t\t\torgTrackBudgets: _this.get('auth.organization.trackBudgets'),\n\t\t\t\t\t\torgTrackEquipment: _this.get('auth.organization.trackEquipment'),\n\t\t\t\t\t\torgIsSignaturesEnabled: _this.get('auth.organization.isSignaturesEnabled'),\n\t\t\t\t\t\torgSignatureDateTime: _this.getWithDefault('auth.organization.signatureDateTime', null),\n\t\t\t\t\t\torgNumEmployees: memberCount - 1, // don't include owner\n\n\t\t\t\t\t\tsubFreeAccount: _this.get('subscription.subscriptionStatus.isFreeAccount'),\n\t\t\t\t\t\tsubProAccount: _this.get('subscription.subscriptionStatus.isProAccount'),\n\t\t\t\t\t\tsubFreeTrial: _this.get('subscription.subscriptionStatus.isTrialAccount'),\n\t\t\t\t\t\tsubEnterpriseAccount: _this.get('subscription.subscriptionStatus.isEnterpriseAccount'),\n\n\t\t\t\t\t\tappVersion: _settings.default.get('version')\n\t\t\t\t\t};\n\n\t\t\t\t\twindow.Appcues.identify(data.memberId, data);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tstart: function start() {\n\t\t\tif (this.isEnabled() && this.isReady()) {\n\t\t\t\tif (window.Appcues && typeof window.Appcues.start === 'function') {\n\t\t\t\t\twindow.Appcues.start();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/integrations/base', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = Ember.Object.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\t\tsession: Ember.inject.service('session'),\n\n\t\tfeatureName: null,\n\t\tisInitialized: false,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\n\t\t\t_utils.Assert.test(\"<featureName::string> must be set to a the feature name for this integration\", !Ember.isNone(this.get('featureName')));\n\n\t\t\tthis.set('isInitialized', false);\n\n\t\t\t//Logger.info('Integrations:', this.get('featureName'), ' - Enabled:', this.isEnabled());\n\n\t\t\t// require that the feature flag is enabled\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tthis._initializeLoad();\n\t\t\t}\n\t\t},\n\t\tisAuth: function isAuth() {\n\t\t\treturn this.get('session.isAuthenticated');\n\t\t},\n\t\tisEnabled: function isEnabled() {\n\t\t\treturn !Ember.isNone(this.get('featureName')) && this.get('features').isEnabled(this.get('featureName'));\n\t\t},\n\t\tisReady: function isReady() {\n\t\t\treturn this.get('isInitialized');\n\t\t},\n\t\t_initializeLoad: function _initializeLoad() {\n\t\t\tvar _this = this;\n\n\t\t\tvar ready = this.isLoadReady();\n\t\t\tif (ready) {\n\t\t\t\tthis.load(function () {\n\t\t\t\t\treturn _this._initializeRun();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis._initializeLoad();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t},\n\t\t_initializeRun: function _initializeRun() {\n\t\t\tif (this.isRunReady()) {\n\t\t\t\tthis.set('isInitialized', true);\n\t\t\t\tthis.run();\n\t\t\t} else {\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis._initializeRun();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t},\n\t\tisLoadReady: function isLoadReady() {\n\t\t\treturn true;\n\t\t},\n\t\tisRunReady: function isRunReady() {\n\t\t\treturn true;\n\t\t},\n\n\n\t\t/**\n   * Called on init to auto load and libraries for an integration and on isLoadReady === true\n   *\n   * this method is only called if the featureName is enableded in config/features.js\n   *\n   * this method expects a callback function to be called when the integration is done loading\n   *\n   * @private\n   * @method load\n   * @param callback {function}\n   */\n\t\tload: function load(callback) {\n\t\t\tcallback();\n\t\t},\n\n\n\t\t/**\n   * Called on init to run the setup for an integration after load and on isRunReady === true\n   *\n   * this method is only called if the featureName is enableded in config/features.json\n   *\n   * @private\n   * @method run\n   */\n\t\trun: function run() {}\n\t});\n});","define('busy-app/utils/integrations/busy-event', ['exports', '@busy-web/utils', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _utils, _base, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tfeatureName: 'integrations/analytics',\n\n\t\tkPageViewType: 48,\n\n\t\tpageView: function pageView() {\n\t\t\tvar title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tvar path = window.location.pathname;\n\t\t\t\ttitle = (this.generateTitle(path) + '-' + title).classify();\n\t\t\t\tthis.send(this.kPageViewType, { view: path, title: title });\n\t\t\t}\n\t\t},\n\t\tgenerateTitle: function generateTitle(path) {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tvar titleParts = path.replace(/^\\//, '').split('/');\n\t\t\t\tvar title = \"\";\n\t\t\t\tif (titleParts.length === 1) {\n\t\t\t\t\ttitle = titleParts.objectAt(0);\n\t\t\t\t\tif (Ember.isEmpty(title)) {\n\t\t\t\t\t\ttitle = 'Dashboard';\n\t\t\t\t\t}\n\t\t\t\t} else if (titleParts.length === 2) {\n\t\t\t\t\ttitle = titleParts.objectAt(1);\n\t\t\t\t} else {\n\t\t\t\t\ttitle = titleParts.objectAt(2);\n\t\t\t\t\tif (/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(title)) {\n\t\t\t\t\t\ttitle = titleParts.objectAt(1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn title;\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\tsend: function send(type, params) {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tif (!Ember.isNone(this.get('auth.organization.id')) && !Ember.isNone(this.get('auth.member.id'))) {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tcreated_on: _utils.Time.timestamp(),\n\t\t\t\t\t\tsource_device_type_id: 3,\n\t\t\t\t\t\tversion: _settings.default.get('version'),\n\t\t\t\t\t\tevent_type: type,\n\t\t\t\t\t\tmember_id: this.get('auth.member.id'),\n\t\t\t\t\t\torganization_id: this.get('auth.organization.id'),\n\t\t\t\t\t\tcontent: JSON.stringify(params)\n\t\t\t\t\t};\n\t\t\t\t\treturn this.ajax(data);\n\t\t\t\t} else {\n\t\t\t\t\treturn Ember.RSVP.resolve({});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Ember.RSVP.resolve({});\n\t\t\t}\n\t\t},\n\t\tajax: function ajax(data) {\n\t\t\tvar _this = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve, reject) {\n\t\t\t\tvar authUser = _this.get('session.session.authenticated');\n\t\t\t\tif (!Ember.isNone(authUser.public_key) || !Ember.isNone(authUser.auth_hash)) {\n\t\t\t\t\tvar hash = {};\n\t\t\t\t\thash.url = _settings.default.get('api_url') + '/busy-event';\n\t\t\t\t\tif (_settings.default.get('api_version') > 3.1) {\n\t\t\t\t\t\thash.url += '?_version=' + _settings.default.get('api_version');\n\t\t\t\t\t} else {\n\t\t\t\t\t\thash.url += '?version=' + _settings.default.get('api_version');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_settings.default.get('debug_mode')) {\n\t\t\t\t\t\thash.url += '&_debug=true';\n\t\t\t\t\t}\n\n\t\t\t\t\thash.type = 'POST';\n\t\t\t\t\thash.dataType = 'json';\n\t\t\t\t\thash.data = data;\n\n\t\t\t\t\thash.onSuccess = function (result) {\n\t\t\t\t\t\tEmber.run(null, resolve, result);\n\t\t\t\t\t};\n\n\t\t\t\t\thash.onError = function (error) {\n\t\t\t\t\t\tEmber.Error(error);\n\t\t\t\t\t\tEmber.run(null, reject, error);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar headers = {};\n\t\t\t\t\tif (authUser.public_key !== undefined) {\n\t\t\t\t\t\theaders['Key-Authorization'] = authUser.public_key;\n\t\t\t\t\t} else if (authUser.auth_hash !== undefined) {\n\t\t\t\t\t\theaders.Authorization = 'Basic ' + authUser.auth_hash;\n\t\t\t\t\t}\n\n\t\t\t\t\thash.beforeSend = function (xhr) {\n\t\t\t\t\t\tObject.keys(headers).forEach(function (key) {\n\t\t\t\t\t\t\txhr.setRequestHeader(key, headers[key]);\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tEmber.$.ajax(hash);\n\t\t\t\t} else {\n\t\t\t\t\tEmber.run(null, resolve, {});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/integrations/full-story', ['exports', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _base, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tfeatureName: 'integrations/fullStory',\n\n\t\tisRunReady: function isRunReady() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\treturn window.FS && !Ember.isNone(this.get('auth.organization.id'));\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\trun: function run() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\twindow.FS.identify(this.get('auth.member.id'), {\n\t\t\t\t\tdisplayName: this.get('auth.member.fullName'),\n\t\t\t\t\temail: this.get('auth.member.email'),\n\t\t\t\t\tusername_str: this.get('auth.member.username'),\n\t\t\t\t\tpermission_str: this.get('auth.authMemberPosition.title'),\n\t\t\t\t\tcompany_str: this.get('auth.organization.organizationName'),\n\t\t\t\t\tversion_str: _settings.default.get('version'),\n\t\t\t\t\tapp_str: _settings.default.get('build')\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/integrations/google-maps', ['exports', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _base, _settings) {\n\t\t'use strict';\n\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n\t\t});\n\t\texports.default = _base.default.extend({\n\t\t\t\tfeatureName: 'integrations/google-maps',\n\n\t\t\t\tload: function load(callback) {\n\n\t\t\t\t\t\t/**\n       * google maps api\n       */\n\t\t\t\t\t\tvar firstSript = document.getElementsByTagName('script')[0];\n\n\t\t\t\t\t\t//<script async defer src=\"https://maps.googleapis.com/maps/api/js?key=AIzaSyA9l6NtNAfY-MyplNr9zELO2NPx8b8yX5U&libraries=places\"></script>\n\t\t\t\t\t\tvar gmaps = document.createElement('script');\n\t\t\t\t\t\tgmaps.async = true;\n\t\t\t\t\t\tgmaps.src = 'https://maps.googleapis.com/maps/api/js?key=' + _settings.default.get('google_maps_key') + '&libraries=places';\n\n\t\t\t\t\t\t// append google maps\n\t\t\t\t\t\tfirstSript.parentNode.insertBefore(gmaps, firstSript);\n\n\t\t\t\t\t\t// (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n\t\t\t\t\t\t// new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n\t\t\t\t\t\t// j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n\t\t\t\t\t\t// '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n\t\t\t\t\t\t// })(window,document,'script','dataLayer', Settings.get('google_tag_id'));\n\n\t\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t});\n});","define('busy-app/utils/integrations/google-tag-manager', ['exports', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _base, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tfeatureName: 'integrations/analytics',\n\n\t\tload: function load(callback) {\n\t\t\t/*jshint ignore:start */\n\t\t\t/**\n    * google tag manager\n    */\n\t\t\t(function (w, d, s, l, i) {\n\t\t\t\tw[l] = w[l] || [];w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });var f = d.getElementsByTagName(s)[0],\n\t\t\t\t    j = d.createElement(s),\n\t\t\t\t    dl = l != 'dataLayer' ? '&l=' + l : '';j.async = true;j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;f.parentNode.insertBefore(j, f);\n\t\t\t})(window, document, 'script', 'dataLayer', _settings.default.get('google_tag_id'));\n\t\t\t/*jshint ignore:end */\n\n\t\t\tcallback();\n\t\t},\n\t\tupdate: function update() {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\twindow.dataLayer.push({\n\t\t\t\t\t'event': 'Page View',\n\t\t\t\t\t'url': window.location.href,\n\t\t\t\t\t'url hostname': window.location.hostname,\n\t\t\t\t\t'url path': window.location.pathname,\n\t\t\t\t\t'Page Url': window.location.href,\n\t\t\t\t\t'Page Hostname': window.location.hostname,\n\t\t\t\t\t'Page Path': window.location.pathname\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/integrations/intercom', ['exports', '@busy-web/utils', 'busy-app/utils/settings', 'cryptojs', 'busy-app/utils/integrations/base'], function (exports, _utils, _settings, _cryptojs, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsession: Ember.inject.service('session'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tfeatureName: 'integrations/analytics',\n\n\t\tisLoadReady: function isLoadReady() {\n\t\t\treturn typeof window.Intercom === 'function';\n\t\t},\n\t\tisRunReady: function isRunReady() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\treturn !Ember.isNone(this.get('auth.organizationInfo.id')) && !Ember.isNone(this.get('subscription.subscriptionStatus.id'));\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tload: function load(callback) {\n\t\t\tvar _this = this;\n\n\t\t\tif (this.isAuth()) {\n\t\t\t\tvar script = document.createElement('script');\n\t\t\t\tscript.type = 'text/javascript';\n\t\t\t\tscript.async = true;\n\t\t\t\tscript.id = 'intercom-loader';\n\t\t\t\tscript.src = 'https://widget.intercom.io/widget/' + _settings.default.get('intercom_app_key');\n\n\t\t\t\tvar node = document.getElementsByTagName('script')[0];\n\t\t\t\tnode.parentNode.insertBefore(script, node);\n\n\t\t\t\t// reattach intercom messenger\n\t\t\t\twindow.Intercom('reattach_activator');\n\n\t\t\t\t// set up hide listener event for intercom.\n\t\t\t\twindow.Intercom('onHide', function () {\n\t\t\t\t\tvar $intercom = Ember.$('#intercom-container, .intercom-lightweight-app');\n\t\t\t\t\tif ($intercom) {\n\t\t\t\t\t\t$intercom.removeClass('show');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\twindow.Intercom('onShow', function () {\n\t\t\t\t\t// ensure the .show class gets added\n\t\t\t\t\t_this.showRecursive();\n\t\t\t\t});\n\n\t\t\t\twindow.Intercom('onUnreadCountChange', function (unreadCount) {\n\t\t\t\t\tif (unreadCount > 0) {\n\t\t\t\t\t\twindow.Intercom('show');\n\t\t\t\t\t\t_this.showRecursive();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\n\n\t\t// wait for the container element to be inserted to the dom, then add the .show className\n\t\t// by default it will look for the element 100 times, waiting 100ms between each attempt\n\t\tshowRecursive: function showRecursive() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { attempt: 0, limit: 100, wait: 100 },\n\t\t\t    attempt = _ref.attempt,\n\t\t\t    limit = _ref.limit,\n\t\t\t    wait = _ref.wait;\n\n\t\t\tvar $intercom = Ember.$('#intercom-container, .intercom-lightweight-app');\n\t\t\tvar $container = Ember.$('#intercom-container');\n\n\t\t\tif (!$container.length && attempt < limit) {\n\t\t\t\tattempt++;\n\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\treturn _this2.showRecursive({ attempt: attempt, limit: limit, wait: wait });\n\t\t\t\t}, wait);\n\t\t\t}\n\n\t\t\treturn $intercom.addClass('show');\n\t\t},\n\t\trun: function run() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\t// update intercom\n\t\t\t\tthis.updateCompany({}, 'boot');\n\t\t\t} else {\n\t\t\t\twindow.Intercom('boot', {\n\t\t\t\t\tapp_id: _settings.default.get('intercom_app_key'),\n\t\t\t\t\tapp_version: _settings.default.get('version')\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\trestart: function restart() {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\t// hide open intercom messages\n\t\t\t\twindow.Intercom('hide');\n\n\t\t\t\t// shutdown intercom\n\t\t\t\tthis.shutdown();\n\n\t\t\t\t// pause and restart Intercom\n\t\t\t\tEmber.run.later(this, function () {\n\t\t\t\t\tthis._initializeRun();\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t},\n\t\tupdate: function update() {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tif (this.isReady()) {\n\t\t\t\t\twindow.Intercom('update', {\n\t\t\t\t\t\tapp_id: _settings.default.get('intercom_app_key'),\n\t\t\t\t\t\tapp_version: _settings.default.get('version')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n   * Updates intercom with the company information provided\n   * @public\n   * @method updateIntercom\n   * @param companyInfo {object} Other company data to send\n   */\n\t\tupdateCompany: function updateCompany(companyInfo) {\n\t\t\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'update';\n\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tif (this.isReady()) {\n\t\t\t\t\t// survicate integration --------------\n\t\t\t\t\tvar survicateId = this.get('auth.member.id');\n\t\t\t\t\t(function (opts) {\n\t\t\t\t\t\topts.intercom = { user_id: survicateId };\n\t\t\t\t\t})(window.__sv = window.__sv || {});\n\n\t\t\t\t\tvar publicKeyUrl = 'https://' + window.location.hostname + '?authorize=' + window.btoa(this.get('session.data.authenticated.token') + ':' + this.get('session.data.authenticated.id'));\n\n\t\t\t\t\t// -----------------\n\t\t\t\t\tvar params = {\n\t\t\t\t\t\tapp_id: _settings.default.get('intercom_app_key'),\n\t\t\t\t\t\tuser_hash: _cryptojs.default.HmacSHA256(this.get('auth.member.id'), _settings.default.get('intercom_secret')).toString(),\n\t\t\t\t\t\tuser_id: this.get('auth.member.id'),\n\t\t\t\t\t\tname: this.get('auth.member.firstName') + ' ' + this.get('auth.member.lastName'),\n\t\t\t\t\t\temail: this.get('auth.member.email') || null,\n\t\t\t\t\t\tphone: this.get('auth.member.phone') || null,\n\t\t\t\t\t\tcreated_at: this.get('auth.member.createdOn'),\n\t\t\t\t\t\tupdated_at: this.get('auth.member.updatedOn'),\n\t\t\t\t\t\tlast_request_at: _utils.Time.timestamp(),\n\t\t\t\t\t\tavatar: {\n\t\t\t\t\t\t\ttype: 'avatar',\n\t\t\t\t\t\t\timage_url: this.get('auth.member.imageUrl') || null\n\t\t\t\t\t\t},\n\t\t\t\t\t\tuser_agent_data: window.navigator.userAgent,\n\t\t\t\t\t\tusername: this.get('auth.member.username'),\n\t\t\t\t\t\tapp_version: _settings.default.get('version'),\n\t\t\t\t\t\tapp_name: 'busybusy',\n\t\t\t\t\t\tplatform: 'web',\n\t\t\t\t\t\tposition_id: this.get('auth.authMemberPosition.id'),\n\t\t\t\t\t\tposition_title: this.get('auth.authMemberPosition.title'),\n\t\t\t\t\t\tis_owner: this.get('auth.isOwner'),\n\t\t\t\t\t\t'public key url': publicKeyUrl,\n\t\t\t\t\t\tcompany: this.getCompanyInfo()\n\t\t\t\t\t};\n\t\t\t\t\twindow.Intercom(type, params);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetCompanyInfo: function getCompanyInfo() {\n\t\t\tvar company = {\n\t\t\t\ttype: 'company',\n\t\t\t\tcompany_id: this.get('auth.organization.id'),\n\t\t\t\tname: this.get('auth.organization.organizationName'),\n\t\t\t\tremote_created_at: this.get('auth.organization.createdOn'),\n\t\t\t\tupdated_at: this.get('auth.organization.updatedOn'),\n\t\t\t\tplan: this.get('subscription.subscriptionStatus.productHandle'),\n\t\t\t\tusers: this.get('auth.memberCount'),\n\t\t\t\t//monthly_spend: parseFloat(this.get('subscription.currentPlanCost')), // not sending correct amount for now.\n\t\t\t\t'owner id': this.get('auth.organization.ownedBy'),\n\t\t\t\tphone: this.get('auth.organizationInfo.phone') || null,\n\t\t\t\t'chargify subscription id': this.get('subscription.subscriptionStatus.subscriptionId'),\n\t\t\t\t'chargify customer id': this.get('subscription.subscriptionStatus.customerId'),\n\t\t\t\t'chargify plan': this.get('subscription.subscriptionStatus.productHandle'),\n\t\t\t\t'chargify status': this.get('subscription.subscriptionStatus.status'),\n\t\t\t\t'chargify plan price': '$' + this.get('subscription.currentPlanCost') + '/per user',\n\t\t\t\t'chargify coupon code': this.get('subscription.subscriptionStatus.couponCode') || null,\n\t\t\t\t'chargify referral code': this.get('subscription.subscriptionStatus.referralCode') || null\n\t\t\t};\n\n\t\t\tif (this.get('auth.organization.ownedBy') === this.get('auth.member.id')) {\n\t\t\t\tcompany.email = this.get('auth.member.email'); //jshint ignore:line\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(this.get('auth.organizationInfo.employeeMin'))) {\n\t\t\t\tvar companySize = this.get('auth.organizationInfo.employeeMin');\n\n\t\t\t\tif (!Ember.isNone(this.get('auth.organizationInfo.employeeMax'))) {\n\t\t\t\t\tcompanySize += ' - ' + this.get('auth.organizationInfo.employeeMax');\n\t\t\t\t} else {\n\t\t\t\t\tcompanySize += '+';\n\t\t\t\t}\n\n\t\t\t\tcompany['est company size'] = companySize;\n\t\t\t}\n\t\t\tif (!Ember.isNone(this.get('auth.organizationInfo.trade'))) {\n\t\t\t\tcompany['company trade'] = this.get('auth.organizationInfo.trade');\n\t\t\t}\n\n\t\t\treturn company;\n\t\t},\n\t\tshow: function show() {\n\t\t\tvar showMessages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tvar $intercom = Ember.$('#intercom-container, .intercom-lightweight-app');\n\t\t\t\tif ($intercom.length > 0 && !$intercom.hasClass('show')) {\n\t\t\t\t\twindow.Intercom(showMessages ? 'showMessages' : 'show');\n\t\t\t\t\t$intercom.addClass('show');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thide: function hide() {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tvar $intercom = Ember.$('#intercom-container, .intercom-lightweight-app');\n\t\t\t\tif ($intercom.length > 0) {\n\t\t\t\t\t$intercom.removeClass('show');\n\t\t\t\t\twindow.Intercom('hide');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tshutdown: function shutdown() {\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tif (this.isReady()) {\n\t\t\t\t\twindow.Intercom('shutdown');\n\t\t\t\t\tthis.set('isInitialized', false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/integrations/launch-darkly', ['exports', '@busy-web/utils', 'busy-app/utils/logger', 'busy-app/utils/settings', 'busy-app/utils/integrations/base'], function (exports, _utils, _logger, _settings, _base) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _base.default.extend(Ember.Evented, {\n    auth: Ember.inject.service('auth'),\n\n    client: null,\n    clientId: _settings.default.get('launchdarkly_clientid'),\n    featureName: 'NOT_REQUIRED',\n\n    isEnabled: function isEnabled() {\n      return true;\n    },\n    isRunReady: function isRunReady() {\n      if (window.LDClient && typeof window.LDClient.initialize === 'function') {\n        if (!this.isAuth()) {\n          return true;\n        } else if (!Ember.isNone(this.get('auth.organization.id'))) {\n          return true;\n        }\n      }\n      return false;\n    },\n    load: function load(callback) {\n      var script = document.createElement('script');\n      script.type = 'text/javascript';\n      script.type = 'text/javascript';\n      script.async = true;\n      script.id = 'launch-darkly-loader';\n      script.src = 'https://app.launchdarkly.com/snippet/ldclient.min.js';\n\n      var node = document.getElementsByTagName('script')[0];\n      node.parentNode.insertBefore(script, node);\n      callback();\n    },\n    run: function run() {\n      var data = {};\n      if (!this.isAuth()) {\n        data.anonymous = true;\n        data.key = 'anon-' + _utils.UUID.generate();\n      } else {\n        data.anonymous = false;\n\n        data.key = this.get('auth.member.id');\n        data.firstName = this.get('auth.member.firstName');\n        data.lastName = this.get('auth.member.lastName');\n        data.email = this.get('auth.member.email');\n        data.avatar = this.get('auth.member.imageUrl');\n\n        data.custom = {\n          organizationId: this.get('auth.organization.id'),\n          organizationName: this.get('auth.organization.organizationName'),\n          webVersionNumber: _settings.default.get('version'),\n          webBuildMode: _settings.default.get('build')\n        };\n      }\n\n      var clientOptions = {\n        //bootstrap: 'localStorage',\n      };\n\n      var client = window.LDClient.initialize(this.get('clientId'), data, clientOptions);\n      this.set('client', client);\n      this.attachReadyListener();\n      this.attachChangeListener();\n    },\n\n\n    /**\n     * Send a `track` event to Launch Darkly\n     *\n     * @public\n     * @async\n     * @method track\n     */\n    track: function track(goalKey) {\n      var _this = this;\n\n      return new Ember.RSVP.Promise(function (resolve) {\n        return _this.get('client').track(goalKey, function () {\n          _logger.default.info(_this, 'track', { goalKey: goalKey });\n          return resolve();\n        });\n      });\n    },\n\n\n    /**\n     * Attach a listener for the LD client's `ready` event\n     *\n     * @public\n     * @async\n     * @method attachReadyListener\n     */\n    attachReadyListener: function attachReadyListener() {\n      var _this2 = this;\n\n      this.get('client').on('ready', function () {\n        return _this2.onReady();\n      });\n    },\n\n\n    /**\n     * Attach a listener for the LD client's `change` event\n     *\n     * @public\n     * @async\n     * @method attachChangeListener\n     */\n    attachChangeListener: function attachChangeListener() {\n      var _this3 = this;\n\n      this.get('client').on('change', function (changedFeatures) {\n        return _this3.onChange(changedFeatures);\n      });\n    },\n\n\n    /**\n     * Triggered when the `onReady` listener is fired\n     * apply all the LD flags and attache the change listener\n     *\n     * @public\n     * @async\n     * @method onReady\n     */\n    onReady: function onReady() {\n      this.trigger('ready');\n    },\n\n\n    /**\n     * Triggered when the `change` listener is fired\n     * Hot applies all the updated LD flags\n     *\n     * @public\n     * @async\n     * @method onChange\n     * @param {Object} flags\n     */\n    onChange: function onChange(flags) {\n      var _flags = {};\n      Object.keys(flags).forEach(function (key) {\n        _flags[key] = flags[key].current;\n      });\n      this.trigger('change', _flags);\n    },\n\n\n    /**\n     * Proxy the Launch Darkly client to call the allFlags() method\n     *\n     * @public\n     * @async\n     * @method getAllFlags\n     */\n    getAllFlags: function getAllFlags() {\n      //this.attachChangeListener();\n      return this.get('client').allFlags();\n    },\n\n\n    /**\n     * Proxy the Launch Darkly client to call the variation() method\n     *\n     * @public\n     * @async\n     * @method getAllFlags\n     * @param {String} key the identifying key for the feature, in the format `time.freemium`\n     * @param {Boolean} defaultValue the default value to use\n     */\n    getFlag: function getFlag(key, defaultValue) {\n      return this.get('client').variation(key, defaultValue);\n    }\n  });\n});","define('busy-app/utils/integrations/receptive', ['exports', 'moment', 'busy-app/utils/integrations/base', 'busy-app/utils/settings'], function (exports, _moment, _base, _settings) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tfunction _asyncToGenerator(fn) {\n\t\treturn function () {\n\t\t\tvar gen = fn.apply(this, arguments);\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tfunction step(key, arg) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar info = gen[key](arg);\n\t\t\t\t\t\tvar value = info.value;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.done) {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Promise.resolve(value).then(function (value) {\n\t\t\t\t\t\t\tstep(\"next\", value);\n\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\tstep(\"throw\", err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn step(\"next\");\n\t\t\t});\n\t\t};\n\t}\n\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsubscription: Ember.inject.service('subscription'),\n\n\t\tfeatureName: 'integrations/receptive',\n\n\t\tisLoadReady: function isLoadReady() {\n\t\t\tif (this.isAuth()) {\n\t\t\t\treturn !Ember.isNone(Ember.get(this, 'auth.organization.id')) && !Ember.isNone(Ember.get(this, 'auth.member.id')) && !Ember.isNone(Ember.get(this, 'subscription.subscriptionStatus.id'));\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tsetRectiveAppSettings: function () {\n\t\t\tvar _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n\t\t\t\tvar _ref2, _ref3, authMember, organization, subscriptionStatus, plan, isPaying, receptiveEmail;\n\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\t\treturn Ember.RSVP.all([Ember.get(this, 'auth.member'), Ember.get(this, 'auth.organization'), Ember.get(this, 'subscription.subscriptionStatus')]);\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_ref2 = _context.sent;\n\t\t\t\t\t\t\t\t_ref3 = _slicedToArray(_ref2, 3);\n\t\t\t\t\t\t\t\tauthMember = _ref3[0];\n\t\t\t\t\t\t\t\torganization = _ref3[1];\n\t\t\t\t\t\t\t\tsubscriptionStatus = _ref3[2];\n\t\t\t\t\t\t\t\tplan = Ember.get(subscriptionStatus, 'productHandle');\n\t\t\t\t\t\t\t\tisPaying = Ember.get(subscriptionStatus, 'isProAccount');\n\t\t\t\t\t\t\t\treceptiveEmail = Ember.get(authMember, 'email') || 'no-reply@noemail.com';\n\n\n\t\t\t\t\t\t\t\twindow.receptiveAppSettings = {\n\t\t\t\t\t\t\t\t\tvendor: {\n\t\t\t\t\t\t\t\t\t\tid: _settings.default.get('receptive_app_id')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttimestamp: (0, _moment.default)().format(),\n\t\t\t\t\t\t\t\t\taccount: {\n\t\t\t\t\t\t\t\t\t\tid: Ember.get(organization, 'id'),\n\t\t\t\t\t\t\t\t\t\tname: Ember.get(organization, 'organizationName'),\n\t\t\t\t\t\t\t\t\t\tmonthly_value: '' + plan,\n\t\t\t\t\t\t\t\t\t\tis_paying: isPaying\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\t\t\t\tid: Ember.get(authMember, 'id'),\n\t\t\t\t\t\t\t\t\t\temail: receptiveEmail,\n\t\t\t\t\t\t\t\t\t\tfull_name: Ember.get(authMember, 'fullName'),\n\t\t\t\t\t\t\t\t\t\tcreated_at: Ember.get(authMember, 'createdOn')\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\treturn _context.abrupt('return', Ember.RSVP.resolve());\n\n\t\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction setRectiveAppSettings() {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn setRectiveAppSettings;\n\t\t}(),\n\t\tload: function () {\n\t\t\tvar _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(callback) {\n\t\t\t\tvar script, node;\n\t\t\t\treturn regeneratorRuntime.wrap(function _callee2$(_context2) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context2.prev = _context2.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tif (!this.isAuth()) {\n\t\t\t\t\t\t\t\t\t_context2.next = 10;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_context2.next = 3;\n\t\t\t\t\t\t\t\treturn this.setRectiveAppSettings();\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tscript = document.createElement('script');\n\n\t\t\t\t\t\t\t\tscript.type = 'text/javascript';\n\t\t\t\t\t\t\t\tscript.async = true;\n\t\t\t\t\t\t\t\tscript.id = 'receptive-loader';\n\t\t\t\t\t\t\t\tscript.src = 'https://receptive.io/js/widget/widget.js';\n\n\t\t\t\t\t\t\t\tnode = document.getElementsByTagName('script')[0];\n\n\t\t\t\t\t\t\t\tnode.parentNode.insertBefore(script, node);\n\n\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\t\tcallback();\n\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context2.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee2, this);\n\t\t\t}));\n\n\t\t\tfunction load(_x) {\n\t\t\t\treturn _ref4.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn load;\n\t\t}()\n\t});\n});","define('busy-app/utils/key-event', ['exports', '@busy-web/ember-date-time/utils/key-event'], function (exports, _keyEvent) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _keyEvent.default;\n    }\n  });\n});","define('busy-app/utils/launch-darkly-sdk', ['exports', '@busy-web/ember-cli-launch-darkly/utils/launch-darkly-sdk'], function (exports, _launchDarklySdk) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _launchDarklySdk.default;\n    }\n  });\n});","define('busy-app/utils/logger', ['exports', '@busy-web/utils', 'busy-app/utils/debug'], function (exports, _utils, _debug) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.print = print;\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _createClass = function () {\n\t\tfunction defineProperties(target, props) {\n\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\tvar descriptor = props[i];\n\t\t\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\t\t\tdescriptor.configurable = true;\n\t\t\t\tif (\"value\" in descriptor) descriptor.writable = true;\n\t\t\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t\t\t}\n\t\t}\n\n\t\treturn function (Constructor, protoProps, staticProps) {\n\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t\t\tif (staticProps) defineProperties(Constructor, staticProps);\n\t\t\treturn Constructor;\n\t\t};\n\t}();\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar logSymbol = '•'; // bullet symbol do not erase\n\n\tfunction className(_class) {\n\t\tvar name = '';\n\t\tif (!Ember.isNone(_class) && Ember.typeOf(_class) === 'instance') {\n\t\t\t// get instance name\n\t\t\tname = '<' + _class.toString().replace(/^[^@]*@([^:]*):([^:]*)::[\\s\\S]*$/, '$1:$2') + '>';\n\t\t}\n\t\treturn name;\n\t}\n\n\tfunction print(args) {\n\t\tif (window.console.log) {\n\t\t\tvar _window$console;\n\n\t\t\t(_window$console = window.console).log.apply(_window$console, _toConsumableArray(args));\n\t\t}\n\t}\n\n\tfunction startGroupCollapsed(_class, args) {\n\t\tvar color = 'color:cornflowerblue;';\n\n\t\tif (window.console.groupCollapsed) {\n\t\t\tvar _window$console2;\n\n\t\t\t(_window$console2 = window.console).groupCollapsed.apply(_window$console2, _toConsumableArray(addType(logSymbol, color, _class, args)));\n\t\t} else if (window.console.group) {\n\t\t\tvar _window$console3;\n\n\t\t\t(_window$console3 = window.console).group.apply(_window$console3, _toConsumableArray(addType(logSymbol, color, _class, args)));\n\t\t} else {\n\t\t\tvar view = className(_class);\n\t\t\tprint(['%c\\n--------------- BLOCK ' + view + ' ------------\\n\\n', color]);\n\t\t}\n\t}\n\n\tfunction startGroup(_class, args) {\n\t\tvar color = 'color:cornflowerblue;';\n\n\t\tif (window.console.group) {\n\t\t\tvar _window$console4;\n\n\t\t\t(_window$console4 = window.console).group.apply(_window$console4, _toConsumableArray(addType(logSymbol, color, _class, args)));\n\t\t} else {\n\t\t\tvar view = className(_class);\n\t\t\tprint(['%c\\n--------------- BLOCK ' + view + ' ------------\\n\\n', color]);\n\t\t}\n\t}\n\n\tfunction endGroup() {\n\t\tvar color = 'color:darkgoldenrod;';\n\t\tif (window.console.groupEnd) {\n\t\t\twindow.console.groupEnd();\n\t\t} else {\n\t\t\tprint(['%c\\n--------------- BLOCK END ------------\\n\\n', color]);\n\t\t}\n\t}\n\n\t/**\n \t* Get the name from the instance if its the first param\n \t* otherwise just add the first param to the args list\n \t*\n \t* @private\n \t* @method addType\n \t* @param type {string}\n \t* @param typeColor {string}\n \t* @param view {mixed}\n \t* @param args {array}\n \t*/\n\tfunction addType(type, typeColor, view, args) {\n\t\tvar _class = void 0;\n\t\tif (Ember.typeOf(view) === 'instance') {\n\t\t\t// get instance name\n\t\t\t_class = className(view);\n\t\t\targs.unshift(_class);\n\t\t} else {\n\t\t\t// object has no name so just add it to list\n\t\t\targs.unshift(view);\n\t\t}\n\n\t\tif (/^\\t$/.test(args[0])) {\n\t\t\tvar tab = args.shift(0);\n\t\t\ttype = tab + type;\n\t\t}\n\n\t\t// add type and name string if name is set\n\t\targs.unshift(type);\n\n\t\tvar newArgs = [];\n\t\tvar argString = '';\n\t\tvar dateFormat = 'MMM. Do, YYYY HH:mm:ss';\n\t\targs.forEach(function (item) {\n\t\t\tif (item === type) {\n\t\t\t\targString += \"%c%s\";\n\t\t\t\tnewArgs.push(typeColor + 'font-size:15px;');\n\t\t\t\tnewArgs.push(item);\n\t\t\t} else if (item === _class) {\n\t\t\t\targString += \" %c%s\";\n\t\t\t\tnewArgs.push('color:darkgoldenrod');\n\t\t\t\tnewArgs.push(item);\n\t\t\t} else if (typeof item === 'string') {\n\t\t\t\tif (/^unix:/.test(item)) {\n\t\t\t\t\targString += ' %c%s';\n\n\t\t\t\t\tvar _item$split = item.split(':'),\n\t\t\t\t\t    _item$split2 = _slicedToArray(_item$split, 3),\n\t\t\t\t\t    time = _item$split2[1],\n\t\t\t\t\t    format = _item$split2[2];\n\n\t\t\t\t\tformat = format || dateFormat;\n\t\t\t\t\tnewArgs.push('color:cornflowerblue;');\n\t\t\t\t\tnewArgs.push(_utils.Time.date(parseInt(time, 10)).format(format));\n\t\t\t\t} else if (/^mili:/.test(item)) {\n\t\t\t\t\targString += ' %c%s';\n\n\t\t\t\t\tvar _item$split3 = item.split(':'),\n\t\t\t\t\t    _item$split4 = _slicedToArray(_item$split3, 3),\n\t\t\t\t\t    _time = _item$split4[1],\n\t\t\t\t\t    _format = _item$split4[2];\n\n\t\t\t\t\t_format = _format || dateFormat;\n\t\t\t\t\tnewArgs.push('color:cornflowerblue;');\n\t\t\t\t\tnewArgs.push(_utils.Time.date(parseInt(_time, 10) / 1000).format(_format));\n\t\t\t\t} else {\n\t\t\t\t\targString += ' %c%s';\n\t\t\t\t\tnewArgs.push('color:grey;');\n\t\t\t\t\tnewArgs.push(item);\n\t\t\t\t\t_utils.Time.date;\n\t\t\t\t}\n\t\t\t} else if (typeof item === 'number') {\n\t\t\t\targString += ' %c%d';\n\t\t\t\tnewArgs.push('color:indianred');\n\t\t\t\tnewArgs.push(item);\n\t\t\t} else if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && item !== null) {\n\t\t\t\tif (item.__isMoment) {\n\t\t\t\t\targString += ' %c%s';\n\t\t\t\t\tnewArgs.push('color:cornflowerblue;font-style:italic;');\n\t\t\t\t\tnewArgs.push(item.format(item.__format));\n\t\t\t\t} else {\n\t\t\t\t\targString += ' %O';\n\t\t\t\t\tnewArgs.push(item);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\targString += ' %s';\n\t\t\t\tnewArgs.push(item);\n\t\t\t}\n\t\t});\n\n\t\targString = argString.replace(/^ /, '');\n\t\tnewArgs.unshift(argString);\n\t\treturn newArgs;\n\t}\n\n\t/**\n  * @class Logger\n  * @namespace Utils\n  */\n\n\tvar Logger = function () {\n\t\tfunction Logger() {\n\t\t\t_classCallCheck(this, Logger);\n\t\t}\n\n\t\t_createClass(Logger, null, [{\n\t\t\tkey: 'log',\n\t\t\tvalue: function log() {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.debug_mode)(function () {\n\t\t\t\t\tvar arg1 = args.shift();\n\t\t\t\t\tprint(addType(logSymbol, 'color:grey;', arg1, args));\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'info',\n\t\t\tvalue: function info(view) {\n\t\t\t\tfor (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t\t\t\t\targs[_key2 - 1] = arguments[_key2];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.log_level)(3, function () {\n\t\t\t\t\treturn print(addType(logSymbol, 'color:limegreen;', view, args));\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'warn',\n\t\t\tvalue: function warn(view) {\n\t\t\t\tfor (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n\t\t\t\t\targs[_key3 - 1] = arguments[_key3];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.log_level)(2, function () {\n\t\t\t\t\treturn print(addType(logSymbol, 'color:gold;', view, args));\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'error',\n\t\t\tvalue: function error(view) {\n\t\t\t\tfor (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n\t\t\t\t\targs[_key4 - 1] = arguments[_key4];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.log_level)(1, function () {\n\t\t\t\t\treturn print(addType(logSymbol, 'color:crimson;', view, args));\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'date',\n\t\t\tvalue: function date(view, timestamp) {\n\t\t\t\tvar format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t\t\t\tvar unix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n\t\t\t\tif (typeof view === 'number') {\n\t\t\t\t\tif (typeof format === 'boolean') {\n\t\t\t\t\t\tunix = format;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof timestamp === 'string') {\n\t\t\t\t\t\tformat = timestamp;\n\t\t\t\t\t}\n\n\t\t\t\t\ttimestamp = view;\n\t\t\t\t\tview = null;\n\t\t\t\t}\n\n\t\t\t\tvar str = 'unix:';\n\t\t\t\tif (!unix) {\n\t\t\t\t\tstr = 'mili:';\n\t\t\t\t}\n\n\t\t\t\tstr += timestamp;\n\n\t\t\t\tif (!Ember.isEmpty(format)) {\n\t\t\t\t\tstr += ':' + format;\n\t\t\t\t}\n\n\t\t\t\tvar args = [str];\n\t\t\t\tif (view) {\n\t\t\t\t\targs.unshift(view);\n\t\t\t\t}\n\n\t\t\t\tthis.log.apply(this, args);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'table',\n\t\t\tvalue: function table(view) {\n\t\t\t\tfor (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n\t\t\t\t\targs[_key5 - 1] = arguments[_key5];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.debug_mode)(function () {\n\t\t\t\t\tvar tb = args.pop();\n\t\t\t\t\tif (!tb) {\n\t\t\t\t\t\ttb = view;\n\t\t\t\t\t\tview = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (view) {\n\t\t\t\t\t\tprint(addType(logSymbol, 'color:cornflowerblue;', view, args));\n\t\t\t\t\t}\n\t\t\t\t\twindow.console.table(tb);\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'block',\n\t\t\tvalue: function block(view) {\n\t\t\t\tfor (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n\t\t\t\t\targs[_key6 - 1] = arguments[_key6];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.debug_mode)(function () {\n\t\t\t\t\treturn startGroup(view, args);\n\t\t\t\t});\n\t\t\t\treturn createLoggerGroup(this);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'blockCollapsed',\n\t\t\tvalue: function blockCollapsed(view) {\n\t\t\t\tfor (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n\t\t\t\t\targs[_key7 - 1] = arguments[_key7];\n\t\t\t\t}\n\n\t\t\t\t(0, _debug.debug_mode)(function () {\n\t\t\t\t\treturn startGroupCollapsed(view, args);\n\t\t\t\t});\n\t\t\t\treturn createLoggerGroup(this);\n\t\t\t}\n\t\t}]);\n\n\t\treturn Logger;\n\t}();\n\n\tvar createLoggerGroup = function createLoggerGroup(target) {\n\t\tvar group = {};\n\n\t\tvar logType = function logType(type, args) {\n\t\t\tif (!window.console.group) {\n\t\t\t\targs.unshift(\"\\t\");\n\t\t\t}\n\t\t\ttarget[type].apply(target, args);\n\t\t\treturn group;\n\t\t};\n\n\t\tgroup.log = function () {\n\t\t\tfor (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n\t\t\t\targs[_key8] = arguments[_key8];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('log', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.info = function () {\n\t\t\tfor (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n\t\t\t\targs[_key9] = arguments[_key9];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('info', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.warn = function () {\n\t\t\tfor (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n\t\t\t\targs[_key10] = arguments[_key10];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('warn', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.error = function () {\n\t\t\tfor (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n\t\t\t\targs[_key11] = arguments[_key11];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('error', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.date = function () {\n\t\t\tfor (var _len12 = arguments.length, args = Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n\t\t\t\targs[_key12] = arguments[_key12];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('date', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.table = function () {\n\t\t\tfor (var _len13 = arguments.length, args = Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n\t\t\t\targs[_key13] = arguments[_key13];\n\t\t\t}\n\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn logType('table', args);\n\t\t\t}, group);\n\t\t};\n\t\tgroup.end = function () {\n\t\t\treturn (0, _debug.debug_mode)(function () {\n\t\t\t\treturn endGroup();\n\t\t\t});\n\t\t};\n\n\t\treturn group;\n\t};\n\n\t// convenience method for access to logger\n\t// for console utils\n\twindow.busyconsole = Logger;\n\n\texports.default = Logger;\n});","define('busy-app/utils/maps', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t\t\t\tarr2[i] = arr[i];\n\t\t\t}\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tvar LOCATION_MODIFIER = exports.LOCATION_MODIFIER = 0.000005;\n\tvar VALID_LOCATION_TIME_DIFF = exports.VALID_LOCATION_TIME_DIFF = 150; // in seconds\n\n\tvar gulfOfGuinea = function gulfOfGuinea(location) {\n\t\treturn Ember.get(location, 'latitude') === 0 && Ember.get(location, 'longitude') === 0;\n\t};\n\n\t/**\n  * Test for checking location objects.\n  *\n  * All location objects must have a latitude and longitude and createdOn property\n  *\n  * @private\n  * @method isLocationObject\n  * @param location {object}\n  * @return {boolean}\n  */\n\tvar isLocationObject = function isLocationObject(location) {\n\t\tif (Ember.isNone(location)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// handles ember data PromizeObjects\n\t\tif (location.content) {\n\t\t\tlocation = Ember.get(location, 'content');\n\t\t}\n\n\t\t// handles ember data models\n\t\tif (location.toJSON) {\n\t\t\tlocation = location.toJSON();\n\t\t}\n\n\t\tvar keys = Object.keys(location);\n\t\tvar filter = keys.filter(function (k) {\n\t\t\treturn k === 'latitude' || k === 'longitude';\n\t\t});\n\t\treturn filter.length === 2;\n\t};\n\n\t/**\n  * if location is undefined return false\n  * otherwise check that the lat lng are usable locations\n  *\n  * @public\n  * @method isValidLatLng\n  * @param location {object} location Object\n  * @param callback {function} callback function called it result is true\n  * @param {boolean}\n  */\n\tvar isValidLatLng = exports.isValidLatLng = function isValidLatLng(location, callback) {\n\t\tif (Ember.isNone(location)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t(true && !(isLocationObject(location)) && Ember.assert(\"isValidLatLng requires a member-location model\", isLocationObject(location)));\n\n\n\t\tif (!gulfOfGuinea(location)) {\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\treturn callback();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\t/**\n  * Gets the latitude and longitude from a MemberLocation\n  * and returns them as an array of latlng arrays => [ [lat, lng], ... ]\n  *\n  * @public\n  * @method getLatLng\n  * @param locations {MemberLocation[]}\n  * @return {number[][]}\n  */\n\tvar getLatLng = exports.getLatLng = function getLatLng(locations) {\n\t\treturn locations.map(function (location) {\n\t\t\treturn [getUniqLocaleType(locations, 'latitude', location), getUniqLocaleType(locations, 'longitude', location)];\n\t\t});\n\t};\n\n\tvar getLocationsFromTimeEntry = exports.getLocationsFromTimeEntry = function getLocationsFromTimeEntry(timeEntry, organization) {\n\t\tvar _ref;\n\n\t\tvar locations = [];\n\t\tvar offset = Ember.get(timeEntry, 'offset');\n\n\t\tvar startLocation = void 0;\n\t\tif (isLocationObject(Ember.get(timeEntry, 'startLocation'))) {\n\t\t\tstartLocation = normalizeLocation(Ember.get(timeEntry, 'startLocation'), Ember.get(timeEntry, 'startTime'), offset);\n\t\t}\n\n\t\tvar endLocation = void 0;\n\t\tif (isLocationObject(Ember.get(timeEntry, 'endLocation'))) {\n\t\t\tendLocation = normalizeLocation(Ember.get(timeEntry, 'endLocation'), Ember.get(timeEntry, 'endTime'), offset);\n\t\t}\n\n\t\tif (!Ember.isNone(startLocation)) {\n\t\t\tif (validateLocationForTime(startLocation, organization)) {\n\t\t\t\tlocations.push(startLocation);\n\t\t\t}\n\t\t}\n\n\t\tif (!Ember.isNone(endLocation)) {\n\t\t\tif (validateLocationForTime(endLocation, organization)) {\n\t\t\t\tlocations.push(endLocation);\n\t\t\t}\n\t\t}\n\n\t\tvar breakLocations = getLocationsFromBreaks(Ember.get(timeEntry, 'timeEntryBreaks'), offset, organization);\n\n\t\treturn (_ref = []).concat.apply(_ref, [locations].concat(_toConsumableArray(breakLocations)));\n\t};\n\n\tvar getLocationsFromBreaks = exports.getLocationsFromBreaks = function getLocationsFromBreaks(breaks, offset, organization) {\n\t\treturn breaks.map(function (model) {\n\t\t\tvar locations = [];\n\t\t\tvar startLocation = void 0;\n\t\t\tif (isLocationObject(Ember.get(model, 'startLocation'))) {\n\t\t\t\tstartLocation = normalizeLocation(Ember.get(model, 'startLocation'), Ember.get(model, 'startTime'), offset);\n\t\t\t}\n\n\t\t\tvar endLocation = void 0;\n\t\t\tif (isLocationObject(Ember.get(model, 'endLocation'))) {\n\t\t\t\tendLocation = normalizeLocation(Ember.get(model, 'endLocation'), Ember.get(model, 'endTime'), offset);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(startLocation)) {\n\t\t\t\tif (validateLocationForTime(startLocation, organization)) {\n\t\t\t\t\tlocations.push(startLocation);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(endLocation)) {\n\t\t\t\tif (validateLocationForTime(endLocation, organization)) {\n\t\t\t\t\tlocations.push(endLocation);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tvar validTimeOffset = exports.validTimeOffset = function validTimeOffset(organization) {\n\t\t(true && !(!Ember.isNone(organization) && !Ember.isNone(Ember.get(organization, 'id'))) && Ember.assert(\"validTimeOffset requires the organization model\", !Ember.isNone(organization) && !Ember.isNone(Ember.get(organization, 'id'))));\n\n\n\t\tvar validLocTime = VALID_LOCATION_TIME_DIFF;\n\t\tif (Ember.get(organization, 'timeRounding')) {\n\t\t\tvalidLocTime = VALID_LOCATION_TIME_DIFF + Ember.get(organization, 'timeRoundingInterval');\n\t\t}\n\t\treturn validLocTime;\n\t};\n\n\tvar validateLocationForTime = exports.validateLocationForTime = function validateLocationForTime(_ref2, organization) {\n\t\tvar createdOn = _ref2.createdOn,\n\t\t    timestamp = _ref2.timestamp,\n\t\t    offset = _ref2.offset;\n\t\t(true && !(!Ember.isNone(createdOn) && typeof createdOn === 'number' && !Ember.isNone(timestamp) && typeof timestamp === 'number' && !Ember.isNone(offset) && typeof offset === 'number') && Ember.assert(\"validateLocationForTime requires an object with createdOn, timestamp, and offset to exist as the first param\", !Ember.isNone(createdOn) && typeof createdOn === 'number' && !Ember.isNone(timestamp) && typeof timestamp === 'number' && !Ember.isNone(offset) && typeof offset === 'number'));\n\t\t(true && !(!Ember.isNone(organization) && !Ember.isNone(Ember.get(organization, 'id'))) && Ember.assert(\"validateLocationForTime requires the organization model\", !Ember.isNone(organization) && !Ember.isNone(Ember.get(organization, 'id'))));\n\n\n\t\tvar validLocTime = validTimeOffset(organization);\n\t\tvar minTime = timestamp - validLocTime;\n\t\tvar maxTime = timestamp + validLocTime;\n\t\tvar locCreatedOn = createdOn + offset;\n\n\t\tif (locCreatedOn >= minTime && locCreatedOn <= maxTime) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar getUniqLocaleType = function getUniqLocaleType(locationList, type, location) {\n\t\t(true && !(!Ember.isEmpty(type) && type === 'latitude' || type === 'longitude') && Ember.assert('getUniqLocaleType requires type: ( `latitude` | `longitude` )', !Ember.isEmpty(type) && type === 'latitude' || type === 'longitude'));\n\n\n\t\tvar locale = Ember.get(location, type);\n\n\t\tlocationList.forEach(function (item) {\n\t\t\tif (item.id !== location.id) {\n\t\t\t\tif (!Ember.isNone(locationList.find(function (l) {\n\t\t\t\t\treturn Ember.get(l, type) === locale;\n\t\t\t\t}))) {\n\t\t\t\t\tlocale += LOCATION_MODIFIER;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn locale;\n\t};\n\n\tvar normalizeLocation = exports.normalizeLocation = function normalizeLocation(location, time, offset) {\n\t\t(true && !(isLocationObject(location)) && Ember.assert(\"normalizeLocation requires a location object\", isLocationObject(location)));\n\n\n\t\tvar locationObj = {\n\t\t\tid: Ember.get(location, 'id'),\n\t\t\tlatitude: Ember.get(location, 'latitude'),\n\t\t\tlongitude: Ember.get(location, 'longitude'),\n\t\t\taccuracy: Ember.get(location, 'accuracy') || Ember.get(location, 'locationRadius'),\n\t\t\tcreatedOn: Ember.get(location, 'createdOn')\n\t\t};\n\n\t\tif (!Ember.isNone(time)) {\n\t\t\tlocationObj.timestamp = time;\n\t\t\tlocationObj.offset = offset || 0;\n\t\t}\n\n\t\treturn locationObj;\n\t};\n});","define('busy-app/utils/mod/array', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t/**\n  * @module Utils\n  *\n  */\n\tvar arrayProto = function arrayProto(method, array, args) {\n\t\tvar ArrayUtil = Ember.Object.extend(Ember.Array).create();\n\n\t\t(true && !(!Ember.isNone(ArrayUtil[method])) && Ember.assert('Array.' + method + ' is not a function', !Ember.isNone(ArrayUtil[method])));\n\n\n\t\treturn ArrayUtil[method].apply(array, args);\n\t};\n\n\tvar isArray = exports.isArray = function isArray(array) {\n\t\treturn Ember.isArray(array);\n\t};\n\tvar map = exports.map = function map(array) {\n\t\tfor (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\targs[_key - 1] = arguments[_key];\n\t\t}\n\n\t\treturn Array.prototype.map.apply(array, args);\n\t};\n\n\tvar pushObject = exports.pushObject = function pushObject(array) {\n\t\tfor (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t\t\targs[_key2 - 1] = arguments[_key2];\n\t\t}\n\n\t\treturn arrayProto('pushObject', array, args);\n\t};\n\n\tvar unshiftObject = exports.unshiftObject = function unshiftObject(array) {\n\t\tfor (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n\t\t\targs[_key3 - 1] = arguments[_key3];\n\t\t}\n\n\t\treturn arrayProto('unshiftObject', array, args);\n\t};\n\n\tvar findBy = exports.findBy = function findBy(array) {\n\t\tfor (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n\t\t\targs[_key4 - 1] = arguments[_key4];\n\t\t}\n\n\t\treturn arrayProto('findBy', array, args);\n\t};\n\n\tvar filterBy = exports.filterBy = function filterBy(array) {\n\t\tfor (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n\t\t\targs[_key5 - 1] = arguments[_key5];\n\t\t}\n\n\t\treturn arrayProto('filterBy', array, args);\n\t};\n\n\tvar mapBy = exports.mapBy = function mapBy(array) {\n\t\tfor (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n\t\t\targs[_key6 - 1] = arguments[_key6];\n\t\t}\n\n\t\treturn arrayProto('mapBy', array, args);\n\t};\n\n\tvar reduce = exports.reduce = function reduce(array) {\n\t\tfor (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n\t\t\targs[_key7 - 1] = arguments[_key7];\n\t\t}\n\n\t\treturn arrayProto('reduce', array, args);\n\t};\n\n\tvar compact = exports.compact = function compact(array) {\n\t\tfor (var _len8 = arguments.length, args = Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) {\n\t\t\targs[_key8 - 1] = arguments[_key8];\n\t\t}\n\n\t\treturn arrayProto('compact', array, args);\n\t};\n});","define('busy-app/utils/mod/sum', ['exports', 'busy-app/utils/mod/array'], function (exports, _array) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.hours = exports.createTimeObject = undefined;\n\n\n\t/**\n  * Converts a time in seconds to { hours, minutes, seconds }\n  *\n  * @method createTimeObject\n  * @param rawSeconds {number}\n  * @return {object}\n  */\n\tvar createTimeObject = exports.createTimeObject = function createTimeObject(rawSeconds) {\n\t\tvar hours = Math.floor(rawSeconds / 3600);\n\t\tvar minutes = Math.floor(mod(rawSeconds, 3600) / 60);\n\t\tvar seconds = Math.ceil(mod(rawSeconds, 3600, 60));\n\n\t\treturn { hours: hours, minutes: minutes, seconds: seconds };\n\t};\n\n\t/**\n  * Creates a total number from a list of model objects for\n  * the keyPath provided and returns the total string according\n  * to the format\n  *\n  * @method hours\n  * @param models {object[]}\n  * @param keyPath {string} path to property on model array\n  * @param format {string} moment like duration format\n  * @return {string}\n  */\n\t/**\n  * @module utils\n  *\n  */\n\tvar hours = exports.hours = function hours(models, keyPath) {\n\t\tvar format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"hh:mm\";\n\n\t\tvar rawSeconds = (0, _array.reduce)((0, _array.map)(models, function (m) {\n\t\t\treturn Ember.get(m, keyPath);\n\t\t}), function (a, b) {\n\t\t\treturn a + b;\n\t\t}, 0);\n\n\t\t// get the hours, minutes seconds from the total rawSeconds\n\n\t\tvar _createTimeObject = createTimeObject(rawSeconds),\n\t\t    hours = _createTimeObject.hours,\n\t\t    minutes = _createTimeObject.minutes,\n\t\t    seconds = _createTimeObject.seconds;\n\n\t\tif (!/[Hh]/.test(format)) {\n\t\t\tminutes = minutes + hours * 60;\n\t\t\thours = 0;\n\t\t}\n\n\t\tif (!/m/.test(format)) {\n\t\t\tseconds = seconds + minutes * 60;\n\t\t\tminutes = 0;\n\t\t}\n\n\t\t// format the times into a string\n\t\treturn replaceMap(createHMSMap(hours, minutes, seconds), format);\n\t};\n\n\tvar mod = function mod(value) {\n\t\tfor (var _len = arguments.length, nums = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tnums[_key - 1] = arguments[_key];\n\t\t}\n\n\t\tif (Ember.isEmpty(nums)) {\n\t\t\treturn value;\n\t\t}\n\t\tvar num = nums.pop();\n\t\treturn mod.apply(undefined, [value].concat(nums)) % num;\n\t};\n\n\tvar addPlaceHolderText = function addPlaceHolderText(formatStr, placeHolder) {\n\t\t// return formatStr if there is no placeHolder string\n\t\tif (Ember.isEmpty(placeHolder)) {\n\t\t\treturn formatStr;\n\t\t}\n\n\t\t// add placeHolder text back in to string\n\t\tplaceHolder.split(' ').forEach(function (val) {\n\t\t\tformatStr = formatStr.replace(/_/, val);\n\t\t});\n\n\t\t// remove placeHolder bracket indicators\n\t\treturn formatStr.replace(/\\[|\\]/g, '');\n\t};\n\n\tvar removePlaceHolderText = function removePlaceHolderText(formatStr) {\n\t\t// remove and store any placeHolder text inside of brackets `[]`\n\t\tvar placeHolder = formatStr.replace(/[^\\[]*(\\[[^\\]]*\\])/g, '$1 '); // eslint-disable-line no-useless-escape\n\t\tplaceHolder = placeHolder.trim();\n\n\t\t// get new format without placeHolder text\n\t\tvar format = formatStr.replace(/([^\\[]*)(\\[[^\\]]*\\])/g, '$1_'); // eslint-disable-line no-useless-escape\n\n\t\t// return format and placeHolder\n\t\treturn { format: format, placeHolder: placeHolder };\n\t};\n\n\tvar replaceMap = function replaceMap(map, formatStr) {\n\t\tvar target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\tvar _removePlaceHolderTex = removePlaceHolderText(formatStr),\n\t\t    format = _removePlaceHolderTex.format,\n\t\t    placeHolder = _removePlaceHolderTex.placeHolder;\n\n\t\t// replace all values in map\n\t\tObject.keys(map).map(function (key) {\n\t\t\treturn format = format.replace(new RegExp(key, 'g'), function () {\n\t\t\t\treturn map[key].call(target);\n\t\t\t});\n\t\t});\n\n\t\t// return str out\n\t\treturn addPlaceHolderText(format, placeHolder);\n\t};\n\n\tvar createHMSMap = function createHMSMap(hours, minutes, seconds) {\n\t\treturn {\n\t\t\t\"[Hh]{2}\": function Hh2() {\n\t\t\t\treturn '' + (hours < 10 ? '0' : '') + hours;\n\t\t\t},\n\t\t\t\"[Hh]{1}\": function Hh1() {\n\t\t\t\treturn '' + hours;\n\t\t\t},\n\t\t\t\"[m]{2}\": function m2() {\n\t\t\t\treturn '' + (minutes < 10 ? '0' : '') + minutes;\n\t\t\t},\n\t\t\t\"[m]{1}\": function m1() {\n\t\t\t\treturn '' + minutes;\n\t\t\t},\n\t\t\t\"[s]{2}\": function s2() {\n\t\t\t\treturn '' + (seconds < 10 ? '0' : '') + seconds;\n\t\t\t},\n\t\t\t\"[s]{1}\": function s1() {\n\t\t\t\treturn '' + seconds;\n\t\t\t}\n\t\t};\n\t};\n});","define(\"busy-app/utils/mod/time-entry/day\", [\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = modTimeEntryDay;\n  function modTimeEntryDay() {\n    return true;\n  }\n});","define('busy-app/utils/models/collections/base', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar Collection = Ember.Object.extend({\n\t\tmodel: null,\n\n\t\tapplyData: function applyData(model) {\n\t\t\tEmber.set(this, 'model', model);\n\t\t},\n\t\tpush: function push() {\n\t\t\tthis.applyData.apply(this, arguments);\n\t\t\treturn this;\n\t\t}\n\t}); /**\n      * @module utils/models/collections\n      *\n      */\n\texports.default = Collection;\n});","define('busy-app/utils/models/collections/hours-and-cost', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\n\t\tseconds: null,\n\t\tcost: null,\n\t\tmember: null,\n\t\tproject: null,\n\t\tcostCode: null,\n\n\t\tapplyData: function applyData(seconds, cost, member, project, costCode) {\n\t\t\tthis.set('seconds', seconds);\n\t\t\tthis.set('cost', cost);\n\t\t\tthis.set('member', member);\n\t\t\tthis.set('project', project);\n\t\t\tthis.set('costCode', costCode);\n\n\t\t\tthis._super(null);\n\t\t},\n\n\n\t\tfullName: Ember.computed('member.fullName', function () {\n\t\t\treturn this.get('member.fullName');\n\t\t}),\n\n\t\ttitle: Ember.computed('project.{title,isParent}', function () {\n\t\t\tvar title = this.get('project.title');\n\t\t\tif (this.get('project.isParent')) {\n\t\t\t\ttitle = 'Unassigned';\n\t\t\t}\n\t\t\treturn title;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('seconds.@each.totalTotalSeconds', 'project.isParent', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar totalSeconds = 0;\n\t\t\tif (!Ember.isNone(this.get('seconds'))) {\n\t\t\t\tthis.get('seconds').forEach(function (item) {\n\t\t\t\t\tif (!_this.get('project.isParent')) {\n\t\t\t\t\t\ttotalSeconds += item.get('totalTotalSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotalSeconds += item.get('totalSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn totalSeconds;\n\t\t}),\n\n\t\ttotalHours: Ember.computed('totalTotalSeconds', function () {\n\t\t\treturn this.get('totalTotalSeconds') / 60 / 60;\n\t\t}),\n\n\t\ttotalSecondsString: Ember.computed('totalSeconds', function () {\n\t\t\treturn _utils.Time.convertSecondsString(this.get('totalSeconds'), 10, false, false, true);\n\t\t}),\n\n\t\ttotalCost: Ember.computed('cost.@each.totalTotalCost', 'project.isParent', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar totalCost = 0;\n\t\t\tif (!Ember.isNone(this.get('cost'))) {\n\t\t\t\tthis.get('cost').forEach(function (item) {\n\t\t\t\t\tif (!_this2.get('project.isParent')) {\n\t\t\t\t\t\ttotalCost += item.get('totalTotalCost');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotalCost += item.get('totalCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn totalCost;\n\t\t}),\n\n\t\ttotalCostString: Ember.computed('totalCost', 'auth.currencySymbol', function () {\n\t\t\tvar symbol = this.get('auth.currencySymbol') || '$';\n\t\t\tvar cost = this.get('totalCost').toFixed(2);\n\t\t\treturn '' + symbol + cost;\n\t\t}),\n\n\t\tsecondsToHours: Ember.computed('totalSeconds', function () {\n\t\t\treturn parseInt(_utils.Time.convertSeconds(this.get('totalSeconds')).hours, 10);\n\t\t}),\n\n\t\troundedDollars: Ember.computed('totalCost', function () {\n\t\t\tvar dollars = this.get('totalCost');\n\t\t\treturn parseInt(dollars.toFixed(2), 10);\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/member-conflicts', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tapplyData: function applyData(model) {\n\t\t\tthis._super(model);\n\t\t},\n\n\n\t\tdayString: Ember.computed('model.day', function () {\n\t\t\tvar time = '';\n\t\t\tif (!Ember.isNone(this.get('model.day'))) {\n\t\t\t\ttime = _utils.Time.date(this.get('model.day')).format('MMMM Do, YYYY');\n\t\t\t}\n\t\t\treturn time;\n\t\t}),\n\n\t\ttotalConflicts: Ember.computed('model.members.@each.totalConflicts', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isEmpty(this.get('model.members'))) {\n\t\t\t\tthis.get('model.members').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('totalConflicts');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/payroll-basic-csv', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tseconds: null,\n\t\tcost: null,\n\t\twageHistory: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\thours: null,\n\t\twageKey: null\n\t});\n});","define('busy-app/utils/models/collections/payroll-member-cost-code-csv', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\t\tcostCode: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\twageTypeOrder: null,\n\t\thours: null,\n\t\ttime: null,\n\t\ttimeSort: null,\n\t\twageKey: null,\n\n\t\tdescription: Ember.computed('model.description', function () {\n\t\t\treturn this.get('model.description') || '';\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/payroll-member-csv', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\twageTypeOrder: null,\n\t\thours: null,\n\t\ttime: null,\n\t\ttimeSort: null,\n\t\twageKey: null,\n\n\t\tdescription: Ember.computed('model.description', function () {\n\t\t\treturn this.get('model.description') || '';\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/payroll-member-project-cost-code-csv', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\t\tproject: null,\n\t\tcostCode: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\twageTypeOrder: null,\n\t\thours: null,\n\t\ttime: null,\n\t\ttimeSort: null,\n\t\twageKey: null,\n\n\t\t_depth1: null,\n\t\t_depth2: null,\n\t\t_depth3: null,\n\t\t_depth4: null,\n\t\t_depth5: null,\n\t\t_depth6: null,\n\t\t_depth7: null,\n\n\t\tdepth1: Ember.computed('_depth1.title', function () {\n\t\t\treturn this.get('_depth1.title') || '';\n\t\t}),\n\n\t\tdepth1Sort: Ember.computed('depth1', function () {\n\t\t\tvar sort = this.get('depth1');\n\t\t\tif (Ember.isEmpty(sort)) {\n\t\t\t\tsort = 'ZZZZZZZ';\n\t\t\t}\n\t\t\treturn sort;\n\t\t}),\n\n\t\tdepth2: Ember.computed('_depth2.title', function () {\n\t\t\treturn this.get('_depth2.title') || '';\n\t\t}),\n\n\t\tdepth3: Ember.computed('_depth3.title', function () {\n\t\t\treturn this.get('_depth3.title') || '';\n\t\t}),\n\n\t\tdepth4: Ember.computed('_depth4.title', function () {\n\t\t\treturn this.get('_depth4.title') || '';\n\t\t}),\n\n\t\tdepth5: Ember.computed('_depth5.title', function () {\n\t\t\treturn this.get('_depth5.title') || '';\n\t\t}),\n\n\t\tdepth6: Ember.computed('_depth6.title', function () {\n\t\t\treturn this.get('_depth6.title') || '';\n\t\t}),\n\n\t\tdepth7: Ember.computed('_depth7.title', function () {\n\t\t\treturn this.get('_depth7.title') || '';\n\t\t}),\n\n\t\tprojectNumber: Ember.computed('projectInfo.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo.number');\n\t\t}),\n\n\t\tprojectNumber2: Ember.computed('projectInfo2.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo2.number');\n\t\t}),\n\n\t\tprojectNumber3: Ember.computed('projectInfo3.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo3.number');\n\t\t}),\n\n\t\tprojectNumber4: Ember.computed('projectInfo4.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo4.number');\n\t\t}),\n\n\t\tprojectNumber5: Ember.computed('projectInfo5.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo5.number');\n\t\t}),\n\n\t\tprojectNumber6: Ember.computed('projectInfo6.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo6.number');\n\t\t}),\n\n\t\tprojectNumber7: Ember.computed('projectInfo7.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo7.number');\n\t\t}),\n\n\t\tcustomer: Ember.computed('projectInfo.customer', function () {\n\t\t\treturn this.getCsvValue('projectInfo.customer');\n\t\t}),\n\n\t\tdescription: Ember.computed('model.description', function () {\n\t\t\treturn this.get('model.description') || '';\n\t\t}),\n\n\t\tgetCsvValue: function getCsvValue(key) {\n\t\t\treturn !Ember.isNone(this.get(key)) ? this.get(key) : '';\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/payroll-member-project-csv', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\t\tproject: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\twageTypeOrder: null,\n\t\thours: null,\n\t\ttime: null,\n\t\ttimeSort: null,\n\t\twageKey: null,\n\n\t\t_depth1: null,\n\t\t_depth2: null,\n\t\t_depth3: null,\n\t\t_depth4: null,\n\t\t_depth5: null,\n\t\t_depth6: null,\n\t\t_depth7: null,\n\n\t\tdepth1: Ember.computed('_depth1.title', function () {\n\t\t\treturn this.get('_depth1.title') || '';\n\t\t}),\n\n\t\tdepth1Sort: Ember.computed('depth1', function () {\n\t\t\tvar sort = this.get('depth1');\n\t\t\tif (Ember.isEmpty(sort)) {\n\t\t\t\tsort = 'ZZZZZZZ';\n\t\t\t}\n\t\t\treturn sort;\n\t\t}),\n\n\t\tdepth2: Ember.computed('_depth2.title', function () {\n\t\t\treturn this.get('_depth2.title') || '';\n\t\t}),\n\n\t\tdepth3: Ember.computed('_depth3.title', function () {\n\t\t\treturn this.get('_depth3.title') || '';\n\t\t}),\n\n\t\tdepth4: Ember.computed('_depth4.title', function () {\n\t\t\treturn this.get('_depth4.title') || '';\n\t\t}),\n\n\t\tdepth5: Ember.computed('_depth5.title', function () {\n\t\t\treturn this.get('_depth5.title') || '';\n\t\t}),\n\n\t\tdepth6: Ember.computed('_depth6.title', function () {\n\t\t\treturn this.get('_depth6.title') || '';\n\t\t}),\n\n\t\tdepth7: Ember.computed('_depth7.title', function () {\n\t\t\treturn this.get('_depth7.title') || '';\n\t\t}),\n\n\t\tprojectNumber: Ember.computed('projectInfo.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo.number');\n\t\t}),\n\n\t\tprojectNumber2: Ember.computed('projectInfo2.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo2.number');\n\t\t}),\n\n\t\tprojectNumber3: Ember.computed('projectInfo3.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo3.number');\n\t\t}),\n\n\t\tprojectNumber4: Ember.computed('projectInfo4.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo4.number');\n\t\t}),\n\n\t\tprojectNumber5: Ember.computed('projectInfo5.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo5.number');\n\t\t}),\n\n\t\tprojectNumber6: Ember.computed('projectInfo6.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo6.number');\n\t\t}),\n\n\t\tprojectNumber7: Ember.computed('projectInfo7.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo7.number');\n\t\t}),\n\n\t\tcustomer: Ember.computed('projectInfo.customer', function () {\n\t\t\treturn this.getCsvValue('projectInfo.customer');\n\t\t}),\n\n\t\tdescription: Ember.computed('model.description', function () {\n\t\t\treturn this.get('model.description') || '';\n\t\t}),\n\n\t\tgetCsvValue: function getCsvValue(key) {\n\t\t\treturn !Ember.isNone(this.get(key)) ? this.get(key) : '';\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/payroll-member-project', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tid: null,\n\t\tmember: null,\n\t\tproject: null,\n\t\twage: null,\n\t\tstartTime: null,\n\n\t\tmemberSeconds: null,\n\t\tmemberCost: null,\n\t\tprojectSeconds: null,\n\t\tprojectCost: null,\n\n\t\thasUnassigned: false,\n\n\t\tisOpen: false,\n\n\t\tapplyData: function applyData(data) {\n\t\t\tEmber.set(this, 'model', data);\n\n\t\t\tEmber.set(this, 'type', data.type);\n\t\t\tEmber.set(this, 'id', data.member.id);\n\t\t\tEmber.set(this, 'isModel', data.isModel);\n\t\t\tEmber.set(this, 'isOpen', data.isOpen);\n\t\t\tEmber.set(this, 'project', data.project);\n\t\t\tEmber.set(this, 'member', data.member);\n\t\t\tEmber.set(this, 'wage', data.wage);\n\t\t\tEmber.set(this, 'startTime', data.startTime);\n\t\t\tEmber.set(this, 'endTime', data.endTime);\n\t\t\tEmber.set(this, 'projectSeconds', data.projectSeconds);\n\t\t\tEmber.set(this, 'projectCost', data.projectCost);\n\t\t\tEmber.set(this, 'memberCost', data.memberCost);\n\t\t\tEmber.set(this, 'memberSeconds', data.memberSeconds);\n\t\t},\n\n\n\t\thideData: Ember.computed('projectData.@each.isOpen', function () {\n\t\t\t//var isOpen = null;\n\t\t\t//if(!isNone(this.get('projectData')))\n\t\t\t//{\n\t\t\t//\tisOpen = this.get('projectData').findBy('isOpen', true);\n\t\t\t//}\n\t\t\treturn true; //!isNone(isOpen);\n\t\t}),\n\n\t\tfilterChildren: false,\n\n\t\tdepthString: Ember.computed('project.depth', function () {\n\t\t\tvar depth = this.get('project.depth');\n\t\t\tvar depthString = 'one';\n\n\t\t\tdepthString = depth === 2 ? 'two' : depthString;\n\t\t\tdepthString = depth === 3 ? 'three' : depthString;\n\t\t\tdepthString = depth === 4 ? 'four' : depthString;\n\t\t\tdepthString = depth === 5 ? 'five' : depthString;\n\t\t\tdepthString = depth === 6 ? 'six' : depthString;\n\t\t\tdepthString = depth === 7 ? 'seven' : depthString;\n\n\t\t\treturn depthString;\n\t\t}),\n\n\t\tdepthList: Ember.computed('project.depth', function () {\n\t\t\tvar depth = this.get('project.depth');\n\t\t\tvar array = [];\n\t\t\tif (depth > 0) {\n\t\t\t\tfor (var i = 0; i < depth; i++) {\n\t\t\t\t\tarray.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn array;\n\t\t}),\n\n\t\ttotalRegularSeconds: Ember.computed('projectSeconds.@each.totalRegularSeconds', 'filterChildren', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isNone(this.get('projectSeconds'))) {\n\t\t\t\tthis.get('projectSeconds').forEach(function (item) {\n\t\t\t\t\tif (_this.get('filterChildren')) {\n\t\t\t\t\t\tseconds += item.get('regularSeconds') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tseconds += item.get('totalRegularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn seconds;\n\t\t}),\n\n\t\ttotalRegularTimeString: Ember.computed('totalRegularSeconds', function () {\n\t\t\tvar totalRegularSeconds = _utils.Time.convertSeconds(this.get('totalRegularSeconds'));\n\t\t\treturn totalRegularSeconds.hours + ' hrs ' + totalRegularSeconds.minutes + ' mins';\n\t\t}),\n\n\t\t/**\n   * Gets Estimated Hourly Cost for the given time period\n   * from all contents in content Array\n   * and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostHourly\n   * @returns int\n   */\n\t\testCostHourly: Ember.computed('payPeriodCostTotal', 'wage.wageRate', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('wage')) && this.get('wage.wageRate') === 10) {\n\t\t\t\ttotal = this.get('payPeriodCostTotal');\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Gets Estimated Salary Cost for the given time period\n   * from all contents in content Array who have a wage\n   * type of anything but hourly and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostSalary\n   * @returns int\n   */\n\t\testCostSalary: Ember.computed('payPeriodCostTotal', 'wage.wageRate', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('wage')) && this.get('wage.wageRate') !== 10) {\n\t\t\t\ttotal = this.get('payPeriodCostTotal');\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\thasRegular: Ember.computed('totalRegularSeconds', 'totalRegularCost', function () {\n\t\t\tif ((this.get('totalRegularSeconds') || 0) > 0 || (this.get('totalRegularCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasOvertime: Ember.computed('totalOvertimeSeconds', 'totalOvertimeCost', function () {\n\t\t\tif ((this.get('totalOvertimeSeconds') || 0) > 0 || (this.get('totalOvertimeCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasDoubletime: Ember.computed('totalDoubletimeSeconds', 'totalDoubletimeCost', function () {\n\t\t\tif ((this.get('totalDoubletimeSeconds') || 0) > 0 || (this.get('totalDoubletimeCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\ttotalOvertimeSeconds: Ember.computed('projectSeconds.@each.totalOvertimeSeconds', 'filterChildren', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isNone(this.get('projectSeconds'))) {\n\t\t\t\tthis.get('projectSeconds').forEach(function (item) {\n\t\t\t\t\tif (_this2.get('filterChildren')) {\n\t\t\t\t\t\tseconds += item.get('overtimeSeconds') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tseconds += item.get('totalOvertimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn seconds;\n\t\t}),\n\n\t\ttotalOvertimeTimeString: Ember.computed('totalOvertimeSeconds', function () {\n\t\t\tvar totalOtSeconds = _utils.Time.convertSeconds(this.get('totalOvertimeSeconds'));\n\t\t\treturn totalOtSeconds.hours + ' hrs ' + totalOtSeconds.minutes + ' mins';\n\t\t}),\n\n\t\ttotalDoubletimeSeconds: Ember.computed('projectSeconds.@each.totalDoubletimeSeconds', 'filterChildren', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isNone(this.get('projectSeconds'))) {\n\t\t\t\tthis.get('projectSeconds').forEach(function (item) {\n\t\t\t\t\tif (_this3.get('filterChildren')) {\n\t\t\t\t\t\tseconds += item.get('doubletimeSeconds') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tseconds += item.get('totalDoubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn seconds;\n\t\t}),\n\n\t\ttotalDoubletimeTimeString: Ember.computed('totalDoubletimeSeconds', function () {\n\t\t\tvar totalDoubletimeSeconds = _utils.Time.convertSeconds(this.get('totalDoubletimeSeconds'));\n\t\t\treturn totalDoubletimeSeconds.hours + ' hrs ' + totalDoubletimeSeconds.minutes + 'mins';\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('projectSeconds.@each.totalSeconds', 'filterChildren', function () {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isNone(this.get('projectSeconds'))) {\n\t\t\t\tthis.get('projectSeconds').forEach(function (item) {\n\t\t\t\t\tif (_this4.get('filterChildren')) {\n\t\t\t\t\t\tseconds += (item.get('regularSeconds') || 0) + (item.get('overtimeSeconds') || 0) + (item.get('doubletimeSeconds') || 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tseconds += item.get('totalTotalSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn seconds;\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar totalOverallSeconds = _utils.Time.convertSeconds(this.get('totalSeconds'));\n\t\t\treturn totalOverallSeconds.hours + ' hrs ' + totalOverallSeconds.minutes + ' mins';\n\t\t}),\n\n\t\ttotalRegularCost: Ember.computed('projectCost.@each.totalRegularCost', 'filterChildren', function () {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar cost = 0;\n\t\t\tif (!Ember.isNone(this.get('projectCost'))) {\n\t\t\t\tthis.get('projectCost').forEach(function (item) {\n\t\t\t\t\tif (_this5.get('filterChildren')) {\n\t\t\t\t\t\tcost += item.get('regularCost') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcost += item.get('totalRegularCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn cost;\n\t\t}),\n\n\t\ttotalRegularCostString: Ember.computed('totalRegularCost', function () {\n\t\t\treturn this.get('totalRegularCost').toFixed(2);\n\t\t}),\n\n\t\ttotalOvertimeCost: Ember.computed('projectCost.@each.totalOvertimeCost', 'filterChildren', function () {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar cost = 0;\n\t\t\tif (!Ember.isNone(this.get('projectCost'))) {\n\t\t\t\tthis.get('projectCost').forEach(function (item) {\n\t\t\t\t\tif (_this6.get('filterChildren')) {\n\t\t\t\t\t\tcost += item.get('overtimeCost') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcost += item.get('totalOvertimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn cost;\n\t\t}),\n\n\t\ttotalOvertimeCostString: Ember.computed('totalOvertimeCost', function () {\n\t\t\treturn this.get('totalOvertimeCost').toFixed(2);\n\t\t}),\n\n\t\ttotalDoubletimeCost: Ember.computed('projectCost.@each.totalDoubletimeCost', 'filterChildren', function () {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar cost = 0;\n\t\t\tif (!Ember.isNone(this.get('projectCost'))) {\n\t\t\t\tthis.get('projectCost').forEach(function (item) {\n\t\t\t\t\tif (_this7.get('filterChildren')) {\n\t\t\t\t\t\tcost += item.get('doubletimeCost') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcost += item.get('totalDoubletimeCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn cost;\n\t\t}),\n\n\t\ttotalDoubletimeCostString: Ember.computed('totalDoubletimeCost', function () {\n\t\t\treturn this.get('totalDoubletimeCost').toFixed(2);\n\t\t}),\n\n\t\ttotalCost: Ember.computed('projectCost.@each.totalTotalCost', 'filterChildren', function () {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar cost = 0;\n\n\t\t\tif (!Ember.isNone(this.get('projectCost'))) {\n\t\t\t\tthis.get('projectCost').forEach(function (item) {\n\t\t\t\t\tif (_this8.get('filterChildren')) {\n\t\t\t\t\t\tcost += (item.get('regularCost') || 0) + (item.get('overtimeCost') || 0) + (item.get('doubletimeCost') || 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcost += item.get('totalTotalCost');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn cost;\n\t\t}),\n\n\t\ttotalProjectCost: Ember.computed('totalCost', 'totalSeconds', 'memberCost.totalTotalCost', 'memberSeconds.totalTotalSeconds', 'wage.wageRate', function () {\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\tvar totalSeconds = this.get('memberSeconds.totalTotalSeconds');\n\t\t\t\tvar projectTotalSeconds = this.get('totalSeconds');\n\t\t\t\tvar percent = projectTotalSeconds / totalSeconds;\n\t\t\t\treturn this.get('memberCost.totalTotalCost') * percent;\n\t\t\t} else {\n\t\t\t\treturn this.get('totalCost');\n\t\t\t}\n\t\t}),\n\n\t\ttotalCostString: Ember.computed('totalProjectCost', function () {\n\t\t\treturn this.get('totalProjectCost').toFixed(2);\n\t\t}),\n\n\t\ttotalOverburdenCost: Ember.computed('totalProjectCost', 'wage.overburden', function () {\n\t\t\tvar cost = this.get('totalProjectCost');\n\t\t\tvar burden = this.get('wage.overburden') || 0;\n\t\t\tvar over = cost * (burden / 100);\n\t\t\treturn cost + over;\n\t\t}),\n\n\t\t/**\n   * Converts the salary to a monthly salary based on the type\n   * passed in. Types are 30:weekly, 40:monthly, 50:yearly\n   *\n   * @public\n   * @method convertSalaryType\n   * @params salary {int} The salary in dollars\n   * @params type {int} The salary type - weekly, monthly, yearly\n   * @returns {int} yearly salary\n   */\n\t\tconvertSalaryType: function convertSalaryType(salary, type) {\n\t\t\tif (type === 30) {\n\t\t\t\treturn salary * 52;\n\t\t\t} else if (type === 40) {\n\t\t\t\treturn salary * 12;\n\t\t\t}\n\t\t\treturn salary;\n\t\t},\n\n\n\t\t/**\n   * Calculates the salary pay for the pay period type.\n   * Types are 10:weekly, 20:biweekly, 30:Semimonthly, 40:monthly\n   *\n   * @public\n   * @method calculateSalary\n   * @params salary {int} The yearly salary in dollars\n   * @params type {int} The pay period type\n   * @returns {float} salary per pay-period length\n   */\n\t\tcalculateSalary: function calculateSalary(salary, type) {\n\t\t\tvar totalCost = 0;\n\t\t\tif (type === 10) {\n\t\t\t\ttotalCost = salary / 52;\n\t\t\t} else if (type === 20) {\n\t\t\t\ttotalCost = salary / 52 * 2;\n\t\t\t} else if (type === 30) {\n\t\t\t\ttotalCost = salary / 24;\n\t\t\t} else if (type === 40) {\n\t\t\t\ttotalCost = salary / 12;\n\t\t\t}\n\t\t\treturn totalCost;\n\t\t},\n\n\n\t\tpayPeriodCostTotal: Ember.computed('memberCost.totalTotalCost', 'wage.wageRate', function () {\n\t\t\tif (this.get('wage.wageRate') !== 10) {\n\t\t\t\tvar salary = this.convertSalaryType(this.get('wage.wage'), this.get('wage.wageRate'));\n\t\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(this.get('startTime') + 1);\n\t\t\t\treturn this.calculateSalary(salary, payPeriod.get('type'));\n\t\t\t} else {\n\t\t\t\treturn this.get('memberCost.totalTotalCost');\n\t\t\t}\n\t\t}),\n\n\t\tpayPeriodCostTotalString: Ember.computed('payPeriodCostTotal', function () {\n\t\t\treturn this.get('payPeriodCostTotal').toFixed(2);\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/payroll-member', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\n\t\tid: null,\n\t\tmember: null,\n\t\tproject: null,\n\t\twage: null,\n\t\tstartTime: null,\n\n\t\tmemberSeconds: null,\n\t\tmemberCost: null,\n\t\tprojectSeconds: null,\n\t\tprojectCost: null,\n\n\t\thasUnassigned: false,\n\t\tisOpen: false,\n\n\t\tapplyData: function applyData(data) {\n\t\t\tEmber.set(this, 'model', data);\n\t\t\tEmber.set(this, 'type', data.type);\n\t\t\tEmber.set(this, 'id', data.member.id);\n\t\t\tEmber.set(this, 'isModel', data.isModel);\n\t\t\tEmber.set(this, 'isOpen', false);\n\t\t\tEmber.set(this, 'member', data.member);\n\t\t\tEmber.set(this, 'wage', data.wage);\n\t\t\tEmber.set(this, 'startTime', data.startTime);\n\t\t\tEmber.set(this, 'endTime', data.endTime);\n\t\t\tEmber.set(this, 'projectSeconds', data.projectSeconds);\n\t\t\tEmber.set(this, 'projectCost', data.projectCost);\n\t\t\tEmber.set(this, 'memberCost', data.memberCost);\n\t\t\tEmber.set(this, 'memberSeconds', data.memberSeconds);\n\t\t},\n\n\n\t\thideData: Ember.computed('projectData.@each.isOpen', function () {\n\t\t\t//let isOpen = null;\n\t\t\t//if (!isNone(this.get('projectData'))) {\n\t\t\t//\tisOpen = this.get('projectData').findBy('isOpen', true);\n\t\t\t//}\n\t\t\t// overridden to always hide this data.\n\t\t\treturn true; //!isNone(isOpen);\n\t\t}),\n\n\t\t/**\n   * Gets Estimated Hourly Cost for the given time period\n   * from all contents in content Array\n   * and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostHourly\n   * @returns int\n   */\n\t\testCostHourly: Ember.computed('totalCost', 'wage.wageRate', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('wage')) && this.get('wage.wageRate') === 10) {\n\t\t\t\ttotal = this.get('totalCost');\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Gets Estimated Salary Cost for the given time period\n   * from all contents in content Array who have a wage\n   * type of anything but hourly and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostSalary\n   * @returns int\n   */\n\t\testCostSalary: Ember.computed('totalCost', 'wage.wageRate', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('wage')) && this.get('wage.wageRate') !== 10) {\n\t\t\t\ttotal = this.get('totalCost');\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\thasRegular: Ember.computed('memberSeconds.regularSeconds', 'memberCost.regularCost', function () {\n\t\t\tif ((this.get('memberSeconds.regularSeconds') || 0) > 0 || (this.get('memberCost.regularCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasOvertime: Ember.computed('memberSeconds.overtimeSeconds', 'memberCost.overtimeCost', function () {\n\t\t\tif ((this.get('memberSeconds.overtimeSeconds') || 0) > 0 || (this.get('memberCost.overtimeCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\thasDoubletime: Ember.computed('memberSeconds.doubletimeSeconds', 'memberCost.doubletimeCost', function () {\n\t\t\tif ((this.get('memberSeconds.doubletimeSeconds') || 0) > 0 || (this.get('memberCost.doubletimeCost') || 0) > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tmemberRegularSeconds: Ember.computed('memberSeconds.regularSeconds', function () {\n\t\t\treturn this.get('memberSeconds.regularSeconds') || 0;\n\t\t}),\n\n\t\ttotalRegularTimeString: Ember.computed('memberRegularSeconds', function () {\n\t\t\tvar totalRegularSeconds = _utils.Time.convertSeconds(this.get('memberRegularSeconds'));\n\n\t\t\treturn totalRegularSeconds.hours + ' hrs ' + totalRegularSeconds.minutes + ' mins';\n\t\t}),\n\n\t\tmemberOvertimeSeconds: Ember.computed('memberSeconds.overtimeSeconds', function () {\n\t\t\treturn this.get('memberSeconds.overtimeSeconds') || 0;\n\t\t}),\n\n\t\ttotalOvertimeTimeString: Ember.computed('memberOvertimeSeconds', function () {\n\t\t\tvar totalOtSeconds = _utils.Time.convertSeconds(this.get('memberOvertimeSeconds'));\n\n\t\t\treturn totalOtSeconds.hours + ' hrs ' + totalOtSeconds.minutes + ' mins';\n\t\t}),\n\n\t\tmemberDoubletimeSeconds: Ember.computed('memberSeconds.doubletimeSeconds', function () {\n\t\t\treturn this.get('memberSeconds.doubletimeSeconds') || 0;\n\t\t}),\n\n\t\ttotalDoubletimeTimeString: Ember.computed('memberDoubletimeSeconds', function () {\n\t\t\tvar totalDoubletimeSeconds = _utils.Time.convertSeconds(this.get('memberDoubletimeSeconds'));\n\n\t\t\treturn totalDoubletimeSeconds.hours + ' hrs ' + totalDoubletimeSeconds.minutes + ' mins';\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('memberRegularSeconds', 'memberOvertimeSeconds', 'memberDoubletimeSeconds', function () {\n\t\t\treturn this.get('memberRegularSeconds') + this.get('memberOvertimeSeconds') + this.get('memberDoubletimeSeconds');\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar totalOverallSeconds = _utils.Time.convertSeconds(this.get('totalSeconds'));\n\n\t\t\treturn totalOverallSeconds.hours + ' hrs ' + totalOverallSeconds.minutes + ' mins';\n\t\t}),\n\n\t\ttotalRegularCostString: Ember.computed('memberCost.regularCost', function () {\n\t\t\treturn (this.get('memberCost.regularCost') || 0).toFixed(2);\n\t\t}),\n\n\t\ttotalOvertimeCostString: Ember.computed('memberCost.overtimeCost', function () {\n\t\t\treturn (this.get('memberCost.overtimeCost') || 0).toFixed(2);\n\t\t}),\n\n\t\ttotalDoubletimeCostString: Ember.computed('memberCost.doubletimeCost', function () {\n\t\t\treturn (this.get('memberCost.doubletimeCost') || 0).toFixed(2);\n\t\t}),\n\n\t\ttotalCost: Ember.computed('wage.wageRate', 'memberCost.{regularCost,overtimeCost,doubletimeCost}', function () {\n\t\t\tvar totalCost = 0;\n\t\t\tif (!Ember.isNone(this.get('wage')) && this.get('wage.wageRate') !== 10) {\n\t\t\t\tvar salary = this.convertSalaryType(this.get('wage.wage'), this.get('wage.wageRate'));\n\t\t\t\tvar payPeriod = this.get('payPeriods').getPayPeriod(this.get('startTime') + 1);\n\n\t\t\t\ttotalCost = this.calculateSalary(salary, payPeriod.get('type'));\n\t\t\t} else {\n\t\t\t\ttotalCost = (this.get('memberCost.regularCost') || 0) + (this.get('memberCost.overtimeCost') || 0) + (this.get('memberCost.doubletimeCost') || 0);\n\t\t\t}\n\n\t\t\treturn totalCost;\n\t\t}),\n\n\t\ttotalCostString: Ember.computed('totalCost', function () {\n\t\t\treturn this.get('totalCost').toFixed(2);\n\t\t}),\n\n\t\ttotalOverburdenCost: Ember.computed('totalCost', 'wage.overburden', function () {\n\t\t\tvar cost = this.get('totalCost');\n\t\t\tvar burden = this.get('wage.overburden') || 0;\n\n\t\t\tvar over = cost * (burden / 100);\n\n\t\t\treturn cost + over;\n\t\t}),\n\n\t\t/**\n   * Converts the salary to a monthly salary based on the type\n   * passed in. Types are 30:weekly, 40:monthly, 50:yearly\n   *\n   * @public\n   * @method convertSalaryType\n   * @params salary {int} The salary in dollars\n   * @params type {int} The salary type - weekly, monthly, yearly\n   * @returns {int} yearly salary\n   */\n\t\tconvertSalaryType: function convertSalaryType(salary, type) {\n\t\t\tif (type === 30) {\n\t\t\t\treturn salary * 52;\n\t\t\t} else if (type === 40) {\n\t\t\t\treturn salary * 12;\n\t\t\t}\n\n\t\t\treturn salary;\n\t\t},\n\n\t\t/**\n   * Calculates the salary pay for the pay period type.\n   * Types are 10:weekly, 20:biweekly, 30:Semimonthly, 40:monthly\n   *\n   * @public\n   * @method calculateSalary\n   * @params salary {int} The yearly salary in dollars\n   * @params type {int} The pay period type\n   * @returns {float} salary per pay-period lenght\n   */\n\t\tcalculateSalary: function calculateSalary(salary, type) {\n\t\t\tvar totalCost = 0;\n\t\t\tif (type === 10) {\n\t\t\t\ttotalCost = salary / 52;\n\t\t\t} else if (type === 20) {\n\t\t\t\ttotalCost = salary / 52 * 2;\n\t\t\t} else if (type === 30) {\n\t\t\t\ttotalCost = salary / 24;\n\t\t\t} else if (type === 40) {\n\t\t\t\ttotalCost = salary / 12;\n\t\t\t}\n\t\t\treturn totalCost;\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/time-card-conflicts', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tconflictModel: null,\n\n\t\tapplyData: function applyData(model, conflictModel) {\n\t\t\tthis.set('conflictModel', conflictModel);\n\t\t\tthis._super(model);\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/time-card-report-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base', 'busy-app/utils/time-entry-break'], function (exports, _utils, _base, _timeEntryBreak) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tstartTime: Ember.computed('model.startTime', 'start', function () {\n\t\t\tif (!Ember.isNone(this.get('model.startTime'))) {\n\t\t\t\tvar start = this.get('model.startTime');\n\t\t\t\tif (start < this.get('start')) {\n\t\t\t\t\tstart = this.get('start');\n\t\t\t\t}\n\t\t\t\treturn start;\n\t\t\t}\n\t\t}),\n\n\t\tendTime: Ember.computed('model.endTime', 'end', function () {\n\t\t\tif (!Ember.isNone(this.get('model.endTime'))) {\n\t\t\t\tvar end = this.get('model.endTime');\n\t\t\t\tif (end > this.get('end')) {\n\t\t\t\t\tend = this.get('end');\n\t\t\t\t}\n\t\t\t\treturn end;\n\t\t\t}\n\t\t}),\n\n\t\tstartTimeString: Ember.computed('startTime', 'model.offset', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('startTime') - this.get('model.offset')).local().utcOffset(this.get('model.offset') / 60).format();\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tendTimeString: Ember.computed('endTime', 'model.offset', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('endTime'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('endTime') - this.get('model.offset')).local().utcOffset(this.get('model.offset') / 60).format();\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tbreakTime: Ember.computed('model.timeEntryBreaks.@each.{startTime,endTime}', 'startTime', 'endTime', function () {\n\t\t\tvar time = 0;\n\t\t\tif (!Ember.isEmpty(this.get('model.timeEntryBreaks')) && !Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\ttime = _timeEntryBreak.default.totalTime(this.get('model.timeEntryBreaks'), this.get('startTime'), this.get('endTime'));\n\t\t\t}\n\t\t\treturn time;\n\t\t}),\n\n\t\tbreakTimeString: Ember.computed('breakTime', function () {\n\t\t\treturn (this.get('breakTime') / 60 / 60).toFixed(2);\n\t\t}),\n\n\t\ttotalTime: Ember.computed('startTime', 'endTime', 'breakTime', function () {\n\t\t\treturn this.get('endTime') - this.get('startTime') - this.get('breakTime');\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalTime', function () {\n\t\t\treturn (this.get('totalTime') / 60 / 60).toFixed(2);\n\t\t}),\n\n\t\ttotalHours: Ember.computed('model.totalTime', function () {}),\n\n\t\tprojectNumber: Ember.computed('projectInfo.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo.number');\n\t\t}),\n\n\t\tprojectNumber2: Ember.computed('projectInfo2.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo2.number');\n\t\t}),\n\n\t\tprojectNumber3: Ember.computed('projectInfo3.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo3.number');\n\t\t}),\n\n\t\tprojectNumber4: Ember.computed('projectInfo4.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo4.number');\n\t\t}),\n\n\t\tprojectNumber5: Ember.computed('projectInfo5.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo5.number');\n\t\t}),\n\n\t\tprojectNumber6: Ember.computed('projectInfo6.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo6.number');\n\t\t}),\n\n\t\tprojectNumber7: Ember.computed('projectInfo7.number', function () {\n\t\t\treturn this.getCsvValue('projectInfo7.number');\n\t\t}),\n\n\t\tcustomer: Ember.computed('projectInfo.customer', function () {\n\t\t\treturn this.getCsvValue('projectInfo.customer');\n\t\t}),\n\n\t\tgetCsvValue: function getCsvValue(key) {\n\t\t\treturn !Ember.isNone(this.get(key)) ? this.get(key) : '';\n\t\t},\n\n\n\t\tprojectInfo: null,\n\n\t\tdepth1: null,\n\t\tdepth2: null,\n\t\tdepth3: null,\n\t\tdepth4: null,\n\t\tdepth5: null,\n\t\tdepth6: null,\n\t\tdepth7: null,\n\t\tprojectInfo1: null,\n\t\tprojectInfo2: null,\n\t\tprojectInfo3: null,\n\t\tprojectInfo4: null,\n\t\tprojectInfo5: null,\n\t\tprojectInfo6: null,\n\t\tprojectInfo7: null\n\t});\n});","define('busy-app/utils/models/collections/time-card-report', ['exports', 'busy-app/utils/models/collections/time-entry-report'], function (exports, _timeEntryReport) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _timeEntryReport.default.extend({\n\t\tauth: Ember.inject.service(),\n\t\tpayPeriod: Ember.inject.service('payPeriod'),\n\n\t\tcurrentPeriod: Ember.computed('auth.organizationPayPeriod.[]', 'start', 'end', function () {\n\t\t\tvar period = this.get('payPeriod').getPayPeriod(this.get('start'));\n\t\t\tif (!Ember.isNone(period)) {\n\t\t\t\tif (period.get('start') === this.get('start') && period.get('end') === this.get('end')) {\n\t\t\t\t\treturn period;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}),\n\n\t\tmemberTimeDocument: Ember.computed('model.memberTimeDocuments', 'currentPeriod', function () {\n\t\t\tif (!Ember.isNone(this.get('currentPeriod'))) {\n\t\t\t\t// return this.get('model.memberTimeDocuments').findBy('startTime', this.get('currentPeriod.start'));\n\t\t\t\treturn this.get('model.memberTimeDocuments').findBy('edited', null);\n\t\t\t}\n\t\t\treturn null;\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/time-entry-day', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tday: null,\n\t\tstart: null,\n\n\t\ttotal: Ember.computed('model.@each.totalTime', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('totalTime');\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar time = _utils.Time.convertSeconds(total, true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tapplyData: function applyData(model, start, day) {\n\t\t\tEmber.set(this, 'day', day);\n\t\t\tEmber.set(this, 'start', start);\n\t\t\tthis._super([model]);\n\t\t},\n\n\n\t\thasConflict: Ember.computed('model.@each.hasConflict', function () {\n\t\t\tvar conflict = this.get('model').filterBy('hasConflict', true);\n\t\t\treturn conflict.length > 0;\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/time-entry-log', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Utils/Models/Collections\n  *\n  */\n\tvar kBreakActionTypes = {\n\t\t10: (0, _utils.loc)(\"Break start\"),\n\t\t11: (0, _utils.loc)(\"Break start location\"),\n\t\t20: (0, _utils.loc)(\"Break end\"),\n\t\t21: (0, _utils.loc)(\"Break end location\"),\n\t\t25: (0, _utils.loc)(\"Break end\"),\n\t\t30: (0, _utils.loc)(\"Manual break\"),\n\t\t40: (0, _utils.loc)(\"Edited break\"),\n\t\t50: (0, _utils.loc)(\"Manual break\"),\n\t\t60: (0, _utils.loc)(\"Edited break\"),\n\t\t80: (0, _utils.loc)('Break conflict resolution'),\n\t\t90: (0, _utils.loc)('Break deleted'),\n\t\t100: (0, _utils.loc)('Break deleted by conflict resolution')\n\t};\n\n\tvar kActionTypes = {\n\t\t10: (0, _utils.loc)('Clock in'),\n\t\t11: (0, _utils.loc)('Clock in location'),\n\t\t20: (0, _utils.loc)('Clock out'),\n\t\t21: (0, _utils.loc)('Clock out location'),\n\t\t25: (0, _utils.loc)('Server clock out'),\n\t\t30: (0, _utils.loc)('Clock in at'),\n\t\t31: (0, _utils.loc)('Clock in at location'),\n\t\t40: (0, _utils.loc)('Clock out at'),\n\t\t41: (0, _utils.loc)('Clock out at location'),\n\t\t50: (0, _utils.loc)('Manual entry'),\n\t\t60: (0, _utils.loc)('Edit'),\n\t\t70: (0, _utils.loc)('Edit'),\n\t\t80: (0, _utils.loc)('Conflict resolution'),\n\t\t90: (0, _utils.loc)('Deleted'),\n\t\t100: (0, _utils.loc)('Deleted by conflict resolution')\n\t};\n\n\t/**\n  * `Util/Model/Collection/TimeEntryLog`\n  *\n  * @class TimeEntryLog\n  * @namespace Utils.Models.Collections\n  * @extends Utils.Models.Collections.Base\n  */\n\texports.default = _base.default.extend({\n\t\tmodel: null,\n\t\tprevState: null,\n\t\tmergedState: null,\n\n\t\tshowDetails: false,\n\t\tshowMap: false,\n\n\t\tapplyData: function applyData(model, prevState, mergedState) {\n\t\t\tthis.set('prevState', prevState);\n\t\t\tthis.set('mergedState', mergedState);\n\n\t\t\tthis._super(model);\n\t\t},\n\n\n\t\thasLocations: Ember.computed('model.{createdOnString,actionType}', 'startBreak.createdOnString', 'stopBreak.createdOnString', 'sysStopBreak.createdOnString', function () {\n\t\t\t// valid locations\n\t\t\tvar startBreak = this.get('startBreak.isStartLocationValid');\n\t\t\tvar endBreak = this.get('stopBreak.isEndLocationValid');\n\t\t\tvar startEntry = this.get('model.isStartLocationValid');\n\t\t\tvar stopEntry = this.get('model.isEndLocationValid');\n\n\t\t\t// actions types\n\t\t\tvar ciAction = [10, 11, 30, 31].indexOf(this.get('model.actionType')) !== -1;\n\t\t\tvar coAction = [20, 21, 40, 41].indexOf(this.get('model.actionType')) !== -1;\n\t\t\tvar sbAction = [10, 11].indexOf(this.get('startBreak.actionType')) !== -1;\n\t\t\tvar ebAction = [20, 21].indexOf(this.get('stopBreak.actionType')) !== -1;\n\n\t\t\treturn startBreak && sbAction || endBreak && ebAction || startEntry && ciAction || stopEntry && coAction;\n\t\t}),\n\n\t\tcreatedOnString: Ember.computed('model.{createdOnString,actionType}', 'startBreak.createdOnString', 'stopBreak.createdOnString', 'sysStopBreak.createdOnString', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (!Ember.isEmpty(this.get('startBreak.createdOnString'))) {\n\t\t\t\t\treturn this.get('startBreak.createdOnString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('stopBreak.createdOnString'))) {\n\t\t\t\t\treturn this.get('stopBreak.createdOnString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('sysStopBreak.createdOnString'))) {\n\t\t\t\t\treturn this.get('sysStopBreak.createdOnString');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.get('model.createdOnString');\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the clock in/ clock in at\n   *\n   */\n\t\tstartString: Ember.computed('model.{startString,actionType}', 'startBreak.startString', 'stopBreak.startString', 'sysStopBreak.startString', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (!Ember.isEmpty(this.get('startBreak.startString'))) {\n\t\t\t\t\treturn this.get('startBreak.startString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('stopBreak.startString'))) {\n\t\t\t\t\treturn this.get('stopBreak.startString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('sysStopBreak.startString'))) {\n\t\t\t\t\treturn this.get('sysStopBreak.startString');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.get('model.startString');\n\t\t}),\n\n\t\t/**\n   * string for the time and date of the clock out/ clock out at\n   *\n   */\n\t\tendString: Ember.computed('model.{endString,actionType}', 'startBreak.endString', 'stopBreak.endString', 'sysStopBreak.endString', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (!Ember.isEmpty(this.get('startBreak.endString'))) {\n\t\t\t\t\treturn this.get('startBreak.endString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('stopBreak.endString'))) {\n\t\t\t\t\treturn this.get('stopBreak.endString');\n\t\t\t\t} else if (!Ember.isEmpty(this.get('sysStopBreak.endString'))) {\n\t\t\t\t\treturn this.get('sysStopBreak.endString');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.get('model.endString');\n\t\t}),\n\n\t\tupdaterName: Ember.computed('model.{updaterMember.fullName,actionType}', 'startBreak.updaterMember.fullName', 'stopBreak.updaterMember.fullName', 'sysStopBreak.updaterMember.fullName', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (!Ember.isNone(this.get('startBreak.updaterMember.fullName'))) {\n\t\t\t\t\treturn this.get('startBreak.updaterMember.fullName');\n\t\t\t\t} else if (!Ember.isNone(this.get('stopBreak.updaterMember.fullName'))) {\n\t\t\t\t\treturn this.get('stopBreak.updaterMember.fullName');\n\t\t\t\t} else if (!Ember.isNone(this.get('sysStopBreak.updaterMember.fullName'))) {\n\t\t\t\t\treturn this.get('sysStopBreak.updaterMember.fullName');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.get('model.updaterMember.fullName');\n\t\t}),\n\n\t\tdeviceType: Ember.computed('model.{deviceType,actionType}', 'startBreak.deviceType', 'stopBreak.deviceType', 'sysStopBreak.deviceType', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (!Ember.isNone(this.get('startBreak.deviceType'))) {\n\t\t\t\t\treturn this.get('startBreak.deviceType');\n\t\t\t\t} else if (!Ember.isNone(this.get('stopBreak.deviceType'))) {\n\t\t\t\t\treturn this.get('stopBreak.deviceType');\n\t\t\t\t} else if (!Ember.isNone(this.get('sysStopBreak.deviceType'))) {\n\t\t\t\t\treturn this.get('sysStopBreak.deviceType');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.get('model.deviceType');\n\t\t}),\n\n\t\tactionString: Ember.computed('model.actionType', 'newBreaks.@each.actionType', 'startBreak.actionType', 'stopBreak.actionType', 'sysStopBreak.actionType', function () {\n\t\t\tvar modelType = this.get('model.actionType');\n\t\t\tvar types = kActionTypes;\n\t\t\tif (modelType === 70) {\n\t\t\t\tif (!Ember.isNone(this.get('startBreak.id'))) {\n\t\t\t\t\ttypes = kBreakActionTypes;\n\t\t\t\t\tmodelType = this.get('startBreak.actionType');\n\t\t\t\t} else if (!Ember.isNone(this.get('stopBreak.id'))) {\n\t\t\t\t\ttypes = kBreakActionTypes;\n\t\t\t\t\tmodelType = this.get('stopBreak.actionType');\n\t\t\t\t} else if (!Ember.isNone(this.get('sysStopBreak.id'))) {\n\t\t\t\t\ttypes = kBreakActionTypes;\n\t\t\t\t\tmodelType = this.get('sysStopBreak.actionType');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn types[modelType] || 'Edit';\n\t\t}),\n\n\t\tsubActionString: Ember.computed('model.actionType', 'startBreak.id', 'stopBreak.id', 'sysStopBreak.id', function () {\n\t\t\tvar actionString = '';\n\t\t\tvar modelType = this.get('model.actionType');\n\t\t\tif (modelType === 10 || modelType === 11 || modelType === 30 || modelType === 31) {\n\t\t\t\tactionString = this.get('model.startString');\n\t\t\t} else if (modelType === 20 || modelType === 21 || modelType === 25 || modelType === 40 || modelType === 41) {\n\t\t\t\tactionString = this.get('model.endString');\n\t\t\t} else if (modelType === 50) {\n\t\t\t\tactionString = this.get('model.startString') + ' - ' + this.get('model.endString');\n\t\t\t} else if (modelType === 60 || modelType === 80) {\n\t\t\t\tactionString = this.get('changedItems');\n\t\t\t} else if (modelType === 70) {\n\t\t\t\tif (!Ember.isNone(this.get('startBreak.id'))) {\n\t\t\t\t\tactionString = this.get('startBreak.startString');\n\t\t\t\t} else if (!Ember.isNone(this.get('stopBreak.id'))) {\n\t\t\t\t\tactionString = this.get('stopBreak.endString');\n\t\t\t\t} else if (!Ember.isNone(this.get('sysStopBreak.id'))) {\n\t\t\t\t\tactionString = this.get('sysStopBreak.endString');\n\t\t\t\t} else {\n\t\t\t\t\tactionString = this.get('changedItems');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn actionString;\n\t\t}),\n\n\t\tisEditEntry: Ember.computed('model.actionType', 'startBreak.id', 'stopBreak.id', 'sysStopBreak.id', function () {\n\t\t\tif (this.get('model.actionType') === 70) {\n\t\t\t\tif (Ember.isNone(this.get('startBreak.id')) && Ember.isNone(this.get('stopBreak.id')) && Ember.isNone(this.get('sysStopBreak.id'))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else if (this.get('model.actionType') === 60) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisBreakEntry: Ember.computed('isEditEntry', 'model.actionType', function () {\n\t\t\treturn !this.get('isEditEntry') && this.get('model.actionType') === 70;\n\t\t}),\n\n\t\thasChanges: Ember.computed('isDescription', 'isProject', 'isCostCode', 'isStartTime', 'isEndTime', 'isBreakAdd', 'isBreakEdit', 'isEquipment', function () {\n\t\t\tif (this.get('isDescription') || this.get('isProject') || this.get('isCostCode') || this.get('isStartTime') || this.get('isEndTime') || this.get('isBreakAdd') || this.get('isBreakEdit') || this.get('isEquipment')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tchangedItems: Ember.computed('isDescription', 'isProject', 'isCostCode', 'isStartTime', 'isEndTime', 'isBreak', 'isEquipment', function () {\n\t\t\tvar items = '';\n\t\t\titems += this.get('isStartTime') ? (0, _utils.loc)('Start Time') : '';\n\t\t\titems += this.get('isEndTime') ? ', ' + (0, _utils.loc)('Stop Time') : '';\n\t\t\titems += this.get('isDescription') ? ', ' + (0, _utils.loc)('Description') : '';\n\t\t\titems += this.get('isProject') ? ', ' + (0, _utils.loc)('Project') : '';\n\t\t\titems += this.get('isCostCode') ? ', ' + (0, _utils.loc)('Cost Code') : '';\n\t\t\titems += this.get('isEquipment') ? ', ' + (0, _utils.loc)('Equipment') : '';\n\t\t\titems += this.get('isBreak') ? ', ' + (0, _utils.loc)('Breaks') : '';\n\n\t\t\treturn items.replace(/^,/, '').trim();\n\t\t}),\n\n\t\tisDescription: Ember.computed('prevState.description', 'model.description', function () {\n\t\t\tif (this.get('prevState.description') !== this.get('model.description')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisProject: Ember.computed('prevState.projectId', 'model.projectId', function () {\n\t\t\tif (this.get('prevState.projectId') !== this.get('model.projectId')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisCostCode: Ember.computed('prevState.costCodeId', 'model.costCodeId', function () {\n\t\t\tif (this.get('prevState.costCodeId') !== this.get('model.costCodeId')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisEquipment: Ember.computed('prevState.equipmentId', 'model.equipmentId', function () {\n\t\t\tif (this.get('prevState.equipmentId') !== this.get('model.equipmentId')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisStartTime: Ember.computed('prevState.startTime', 'model.startTime', function () {\n\t\t\tif (this.get('prevState.startTime') - this.get('model.startTime') > 60) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisEndTime: Ember.computed('prevState.endTime', 'model.endTime', function () {\n\t\t\tif (!Ember.isNone(this.get('prevState.endTime')) && this.get('prevState.endTime') !== this.get('model.endTime')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\n\t\tisBreak: Ember.computed('activeBreaks.length', 'previousBreaks.length', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar breaks = this.get('activeBreaks').filter(function (item) {\n\t\t\t\tvar match = _this.get('previousBreaks').findBy('id', item.get('id'));\n\t\t\t\treturn Ember.isNone(match);\n\t\t\t});\n\t\t\treturn breaks.get('length') > 0;\n\t\t}),\n\n\t\tstartBreak: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\tvar modelId = this.get('model.id');\n\t\t\treturn this.get('model.breaks').find(function (item) {\n\t\t\t\treturn modelId === item.get('clientTimeEntryLogId') && [10, 11].indexOf(item.get('actionType')) !== -1;\n\t\t\t});\n\t\t}),\n\n\t\tstopBreak: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\tvar modelId = this.get('model.id');\n\t\t\treturn this.get('model.breaks').find(function (item) {\n\t\t\t\treturn modelId === item.get('clientTimeEntryLogId') && [20, 21].indexOf(item.get('actionType')) !== -1;\n\t\t\t});\n\t\t}),\n\n\t\tsysStopBreak: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn this.get('model.breaks').find(function (item) {\n\t\t\t\treturn _this2.get('model.id') === item.get('clientTimeEntryLogId') && item.get('actionType') === 25;\n\t\t\t});\n\t\t}),\n\n\t\taddBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\tvar breaks = this.get('model.breaks').filterBy('actionType', 50);\n\t\t\tvar oldBreaks = this.get('model.breaks').filterBy('actionType', 30);\n\t\t\tif (oldBreaks.length) {\n\t\t\t\tbreaks = breaks.concat(oldBreaks);\n\t\t\t}\n\t\t\treturn breaks.filterBy('clientTimeEntryLogId', this.get('model.id'));\n\t\t}),\n\n\t\teditBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\tvar breaks = this.get('model.breaks').filterBy('actionType', 60);\n\t\t\tvar oldBreaks = this.get('model.breaks').filterBy('actionType', 40);\n\t\t\tif (oldBreaks.length) {\n\t\t\t\tbreaks = breaks.concat(oldBreaks);\n\t\t\t}\n\t\t\treturn breaks.filterBy('clientTimeEntryLogId', this.get('model.id'));\n\t\t}),\n\n\t\tpreviousBreaks: Ember.computed('prevState.breaks.@each.actionType', function () {\n\t\t\tvar prevStateBreaks = this.get('prevState.breaks');\n\t\t\tif (Ember.isNone(prevStateBreaks)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar filteredResults = prevStateBreaks.filter(function (item) {\n\t\t\t\tvar type = item.get('actionType');\n\t\t\t\tif (type !== 90 && type !== 100 && type !== 10 && type !== 11 && type !== 21) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (Ember.isNone(filteredResults)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn filteredResults.sortBy('startTime');\n\t\t}),\n\n\t\tnewBreaks: Ember.computed('model.breaks', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn this.get('model.breaks').filter(function (item) {\n\t\t\t\treturn _this3.get('model.id') === item.get('clientTimeEntryLogId');\n\t\t\t}).sortBy('startTime');\n\t\t}),\n\n\t\tactiveBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\treturn this.get('model.breaks').filter(function (item) {\n\t\t\t\tvar type = item.get('actionType');\n\t\t\t\tif (type !== 90 && type !== 100 && type !== 10 && type !== 11 && type !== 21) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t}).sortBy('startTime');\n\t\t}),\n\n\t\tremovedBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\treturn this.get('model.breaks').filterBy('actionType', 90);\n\t\t}),\n\n\t\taddedByResolutionBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\treturn this.get('model.breaks').filterBy('actionType', 80);\n\t\t}),\n\n\t\tremovedByResolutionBreaks: Ember.computed('model.breaks.@each.actionType', function () {\n\t\t\treturn this.get('model.breaks').filterBy('actionType', 100);\n\t\t}),\n\n\t\tlocationInfo: Ember.computed('actionString', function () {\n\t\t\tvar str = this.get('actionString');\n\t\t\tvar entry = Ember.Object.create({\n\t\t\t\tstartTime: this.get('model.startTime'),\n\t\t\t\tendTime: this.get('model.endTime'),\n\t\t\t\tmember: this.get('model.member'),\n\t\t\t\ttimeEntryBreaks: []\n\t\t\t});\n\n\t\t\tif (str === kActionTypes[10] || str === kActionTypes[11] || str === kActionTypes[30] || str === kActionTypes[31]) {\n\t\t\t\tentry.set('isStartLocationValid', this.get('model.isStartLocationValid'));\n\t\t\t\tentry.set('startLocation', getTargetContent(this, 'model.startLocation'));\n\t\t\t\treturn entry;\n\t\t\t} else if (str === kActionTypes[20] || str === kActionTypes[21] || str === kActionTypes[40] || str === kActionTypes[41]) {\n\t\t\t\tentry.set('isEndLocationValid', this.get('model.isEndLocationValid'));\n\t\t\t\tentry.set('endLocation', getTargetContent(this, 'model.endLocation'));\n\t\t\t\treturn entry;\n\t\t\t} else if (str === kBreakActionTypes[10] || str === kBreakActionTypes[11]) {\n\t\t\t\tvar breakEntry = Ember.Object.create({\n\t\t\t\t\tstartTime: this.get('startBreak.startTime'),\n\t\t\t\t\tendTime: this.get('startBreak.endTime'),\n\t\t\t\t\tstartLocation: getTargetContent(this, 'startBreak.startLocation'),\n\t\t\t\t\tisStartLocationValid: this.get('startBreak.isStartLocationValid'),\n\t\t\t\t\ttimeEntry: entry\n\t\t\t\t});\n\n\t\t\t\tentry.get('timeEntryBreaks').pushObject(breakEntry);\n\t\t\t\treturn entry;\n\t\t\t} else if (str === kBreakActionTypes[20] || str === kBreakActionTypes[21]) {\n\t\t\t\tvar _breakEntry = Ember.Object.create({\n\t\t\t\t\tstartTime: this.get('stopBreak.startTime'),\n\t\t\t\t\tendTime: this.get('stopBreak.endTime'),\n\t\t\t\t\tendLocation: getTargetContent(this, 'stopBreak.endLocation'),\n\t\t\t\t\tisEndLocationValid: this.get('stopBreak.isEndLocationValid'),\n\t\t\t\t\ttimeEntry: entry\n\t\t\t\t});\n\n\t\t\t\tentry.get('timeEntryBreaks').pushObject(_breakEntry);\n\t\t\t\treturn entry;\n\t\t\t}\n\t\t\treturn this;\n\t\t})\n\t});\n\n\n\tfunction getTargetContent(target, path) {\n\t\tvar model = Ember.get(target, path);\n\t\tif (!model || Ember.get(model, 'content') === undefined) {\n\t\t\treturn model;\n\t\t}\n\t\treturn Ember.get(model, 'content');\n\t}\n});","define('busy-app/utils/models/collections/time-entry-project', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tid: null,\n\t\tproject: null,\n\n\t\t/**\n   * Takes a project model and time-entries with segments nested\n   *\n   */\n\t\tapplyData: function applyData(model, projectId, project) {\n\t\t\tEmber.set(this, 'id', projectId);\n\t\t\tEmber.set(this, 'project', project);\n\t\t\tthis._super(model);\n\t\t},\n\n\n\t\tregularSeconds: Ember.computed('model.@each.regularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\t//if item is a time off entry, add seconds\n\t\t\t\t\t//if item is time entry, add regular seconds\n\t\t\t\t\tif (!Ember.isNone(item.dateStamp)) {\n\t\t\t\t\t\ttotal += item.get('model.seconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('model.@each.overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('model.@each.doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('regularSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('overtimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('doubletimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/time-entry-pto-day', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tday: null,\n\t\tstart: null,\n\n\t\thasOpenTime: Ember.computed('model.@each.isOpenEntry', function () {\n\t\t\tvar openEntries = this.get('model').filterBy('isOpenEntry', true);\n\t\t\treturn openEntries.get('length') > 0;\n\t\t}),\n\n\t\tonlyHasOpenTime: Ember.computed('model.@each.isOpenEntry', function () {\n\t\t\tvar openEntries = this.get('model').filterBy('isOpenEntry', true);\n\t\t\treturn openEntries.get('length') === this.get('model.length');\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('model.@each.{totalTime,dateStamp}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tif (!item.get('isTimeEntry')) {\n\t\t\t\t\t\ttotal += item.get('model.seconds') || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotal += item.get('totalTime');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotal: Ember.computed('totalSeconds', function () {\n\t\t\treturn _utils.Time.convertSecondsString(this.get('totalSeconds'), 10, true);\n\t\t}),\n\n\t\ttimeOffTypes: Ember.computed('model.@each.timeOffType', function () {\n\t\t\tvar type = [];\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tif (!Ember.isEmpty(item.get('timeOffType'))) {\n\t\t\t\t\t\tif (type.indexOf(item.get('timeOffType')) === -1) {\n\t\t\t\t\t\t\ttype.push(item.get('timeOffType'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ((type.length > 0 ? '*' : '') + type.toString()).replace(/,/g, ', ');\n\t\t}),\n\n\t\tapplyData: function applyData(model, start, day) {\n\t\t\tEmber.set(this, 'day', day);\n\t\t\tEmber.set(this, 'start', start);\n\t\t\tthis._super([model]);\n\t\t},\n\n\n\t\thasConflict: Ember.computed('model.@each.hasConflict', function () {\n\t\t\tvar conflict = this.get('model').filterBy('hasConflict', true);\n\t\t\treturn conflict.length > 0;\n\t\t}),\n\n\t\ttotalPTOSeconds: Ember.computed('model.@each.dateStamp', function () {\n\t\t\tvar time = 0;\n\t\t\tvar startTime = this.get('start');\n\t\t\tvar endTime = _utils.Time.date(startTime).endOf('day').unix();\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\tif (!Ember.isNone(item.get('model.dateStamp')) && item.get('model.paid')) {\n\t\t\t\t\tvar start = item.get('model.startTime');\n\t\t\t\t\tvar end = item.get('model.endTime');\n\n\t\t\t\t\t// make sure start and end are within the day boundry\n\t\t\t\t\tstart = start < startTime ? startTime : start;\n\t\t\t\t\tend = end > endTime ? endTime : end;\n\n\t\t\t\t\t// if start is greater than end then this is a zero\n\t\t\t\t\t// time pto record.\n\t\t\t\t\tstart = end < start ? end : start;\n\n\t\t\t\t\t// add the total time of the pto enrty\n\t\t\t\t\ttime += end - start;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn time;\n\t\t}),\n\n\t\tregularHoursWorked: Ember.computed('model.@each.regularSeconds', function () {\n\t\t\treturn this.get('model').mapBy('regularSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/time-entry-pto-range', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base', 'busy-app/utils/time-entry'], function (exports, _utils, _base, _timeEntry) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tstartTime: null,\n\t\tendTime: null,\n\t\tdateStamp: null,\n\n\t\tregularSeconds: 0,\n\t\tovertimeSeconds: 0,\n\t\tdoubletimeSeconds: 0,\n\t\tbreaktimeSeconds: 0,\n\t\ttimeOffSeconds: 0,\n\n\t\tincludeSegments: false,\n\t\tmodifiedSegments: false,\n\n\t\tapplyData: function applyData(model, start, end) {\n\t\t\tvar includeSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n\t\t\tEmber.set(this, 'start', start);\n\t\t\tEmber.set(this, 'end', end);\n\t\t\tEmber.set(this, 'includeSegments', includeSegments);\n\n\t\t\tthis._super(model);\n\t\t\tthis.setup();\n\t\t},\n\n\n\t\tisTimeEntry: Ember.computed('model.isTimeOff', function () {\n\t\t\treturn !this.get('model.isTimeOff');\n\t\t}),\n\n\t\tisOpenEntry: Ember.computed('model.endTime', 'isTimeEntry', function () {\n\t\t\treturn this.get('isTimeEntry') && Ember.isNone(this.get('model.endTime'));\n\t\t}),\n\n\t\tsortTime: Ember.computed('startTime', 'dateStamp', function () {\n\t\t\tif (!Ember.isNone(this.get('dateStamp'))) {\n\t\t\t\treturn this.get('dateStamp');\n\t\t\t} else if (!Ember.isNone(this.get('startTime'))) {\n\t\t\t\treturn this.get('startTime');\n\t\t\t}\n\t\t\treturn null;\n\t\t}),\n\n\t\ttimeOffType: Ember.computed('model.getType', function () {\n\t\t\treturn this.get('model.getType') || '';\n\t\t}),\n\n\t\tdayString: Ember.computed('startTime', 'dateStamp', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) || !Ember.isNone(this.get('dateStamp'))) {\n\t\t\t\tvar start = this.get('startTime') || this.get('dateStamp');\n\t\t\t\tif (start < this.get('start')) {\n\t\t\t\t\tstart = this.get('start');\n\t\t\t\t}\n\t\t\t\tdate = _utils.Time.timeFormat(start, 'ddd, MMM DD');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', 'model.getType', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('model.getType'))) {\n\t\t\t\tdate = this.get('model.getType');\n\t\t\t} else if (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\n\t\t\t\tdate = _timeEntry.default.timeRangeString(this, format);\n\t\t\t\tif (this.get('modifiedSegments')) {\n\t\t\t\t\tdate = '*' + date;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\thasConflict: Ember.computed('model.hasConflict', function () {\n\t\t\treturn this.get('model.hasConflict');\n\t\t}),\n\n\t\tstartDateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\n\t\t\t\tdate = _timeEntry.default.startTimeString(this, format);\n\t\t\t\tif (this.get('modifiedSegments')) {\n\t\t\t\t\tdate = '*' + date;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tendDateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\t\t\t\tdate = _timeEntry.default.endTimeString(this, format);\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\t/**\n   * @property regularTimeString\n   * @type string\n   */\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\treturn _utils.Time.convertSecondsString(this.get('regularSeconds'), 10, true);\n\t\t}),\n\n\t\ttotalTime: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\t/**\n   * @property totalTimeString\n   * @type string\n   */\n\t\ttotalTimeString: Ember.computed('totalTime', function () {\n\t\t\treturn _utils.Time.convertSecondsString(this.get('totalTime'), 10, true);\n\t\t}),\n\n\t\t/**\n   * @property breakTimeString\n   * @type string\n   */\n\t\tbreakTimeString: Ember.computed('breaktimeSeconds', function () {\n\t\t\treturn _utils.Time.convertSecondsString(this.get('breaktimeSeconds'), 10, true);\n\t\t}),\n\n\t\tsetup: Ember.observer('model.id', 'model.totalTime', 'model.breakTime', 'model.seconds', 'model.segmentTotalSeconds', 'includeSegments', function () {\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.setupTime();\n\t\t\t\tif (this.get('isTimeEntry') && this.get('includeSegments')) {\n\t\t\t\t\tthis.calculateSegmentTime();\n\t\t\t\t} else {\n\t\t\t\t\tthis.calculateTime();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tsetupTime: function setupTime() {\n\t\t\tvar model = this.get('model');\n\t\t\tif (!this.get('isTimeEntry') && !Ember.isNone(model.get('dateStamp'))) {\n\t\t\t\tthis.set('offset', model.get('offset'));\n\t\t\t\tthis.set('daylightSavingTime', model.get('createdOnDaylightSavingTime'));\n\n\t\t\t\tthis.set('dateStamp', model.get('dateStamp'));\n\t\t\t\tthis.set('timeOffSeconds', model.get('seconds'));\n\t\t\t} else if (this.get('isTimeEntry') && !Ember.isNone(model.get('startTime'))) {\n\t\t\t\tthis.set('offset', model.get('offset'));\n\t\t\t\tthis.set('metaOffset', model.get('metaOffset'));\n\t\t\t\tthis.set('daylightSavingTime', model.get('daylightSavingTime'));\n\t\t\t\tthis.set('metaDaylightSavingTime', model.get('metaDaylightSavingTime'));\n\n\t\t\t\tvar timeObj = _timeEntry.default.timeByRange(model, this.get('start'), this.get('end'));\n\n\t\t\t\tthis.set('startTime', timeObj.startTime);\n\t\t\t\tthis.set('endTime', timeObj.endTime);\n\t\t\t}\n\t\t},\n\t\tcalculateTime: function calculateTime() {\n\t\t\tvar regular = 0;\n\t\t\tvar breakTime = 0;\n\t\t\tif (!this.get('isTimeEntry')) {\n\t\t\t\tregular = this.get('model.seconds');\n\t\t\t} else {\n\t\t\t\tvar startTime = this.get('startTime');\n\t\t\t\tvar endTime = this.get('endTime');\n\n\t\t\t\t// calling get breakTime triggers a load\n\t\t\t\t// for breaks an allows observers to refire.\n\t\t\t\tbreakTime = this.get('model.breakTime');\n\n\t\t\t\tvar breakTimeObj = _timeEntry.default.totalBreakTime(this.get('model'), startTime, endTime);\n\t\t\t\tbreakTime = breakTimeObj.total;\n\t\t\t\tregular = endTime - startTime - breakTime;\n\t\t\t}\n\n\t\t\tthis.set('breaktimeSeconds', breakTime);\n\t\t\tthis.set('regularSeconds', regular);\n\t\t},\n\t\tcalculateSegmentTime: function calculateSegmentTime() {\n\t\t\tvar start = this.get('startTime');\n\t\t\tvar end = this.get('endTime');\n\t\t\tvar model = this.get('model');\n\n\t\t\tvar regular = 0;\n\t\t\tvar overtime = 0;\n\t\t\tvar doubletime = 0;\n\t\t\tvar breakTime = 0;\n\t\t\tvar removedSegments = false;\n\n\t\t\tif (model.get('segmentTotalSeconds') > 0 || model.get('segmentBreakTimeSeconds') > 0) {\n\t\t\t\tmodel.get('segments').forEach(function (item) {\n\t\t\t\t\tif (item.get('startTime') >= start && item.get('startTime') < end || item.get('endTime') > start && item.get('endTime') <= end) {\n\t\t\t\t\t\tregular += item.get('regularSeconds');\n\t\t\t\t\t\tovertime += item.get('overtimeSeconds');\n\t\t\t\t\t\tdoubletime += item.get('doubletimeSeconds');\n\t\t\t\t\t\tbreakTime += item.get('breakSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tremovedSegments = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.set('modifiedSegments', removedSegments);\n\t\t\tthis.set('regularSeconds', regular);\n\t\t\tthis.set('overtimeSeconds', overtime);\n\t\t\tthis.set('doubletimeSeconds', doubletime);\n\t\t\tthis.set('breaktimeSeconds', breakTime);\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/time-entry-range', ['exports', 'busy-app/utils/models/collections/base', '@busy-web/utils', 'busy-app/utils/time-entry'], function (exports, _base, _utils, _timeEntry) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tstartTime: null,\n\t\tendTime: null,\n\n\t\tregularSeconds: 0,\n\t\tovertimeSeconds: 0,\n\t\tdoubletimeSeconds: 0,\n\t\tbreaktimeSeconds: 0,\n\n\t\tincludeSegments: false,\n\t\tmodifiedSegments: false,\n\n\t\tapplyData: function applyData(model, start, end) {\n\t\t\tEmber.set(this, 'start', start);\n\t\t\tEmber.set(this, 'end', end);\n\t\t\tEmber.set(this, 'includeSegments', true);\n\n\t\t\tthis._super(model);\n\t\t\tthis.setup();\n\t\t},\n\n\n\t\tdayString: Ember.computed('startTime', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime'))) {\n\t\t\t\tvar start = this.get('startTime');\n\t\t\t\tif (start < this.get('start')) {\n\t\t\t\t\tstart = this.get('start');\n\t\t\t\t}\n\t\t\t\tdate = _utils.Time.timeFormat(start, 'ddd, MMM DD');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tdateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\n\t\t\t\tdate = _timeEntry.default.timeRangeString(this, format);\n\t\t\t\tif (this.get('modifiedSegments')) {\n\t\t\t\t\tdate = '*' + date;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\thasConflict: Ember.computed('model.hasConflict', function () {\n\t\t\treturn this.get('model.hasConflict');\n\t\t}),\n\n\t\tstartDateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\n\t\t\t\tdate = _timeEntry.default.startTimeString(this, format);\n\t\t\t\tif (this.get('modifiedSegments')) {\n\t\t\t\t\tdate = '*' + date;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tendDateString: Ember.computed('startTime', 'endTime', 'modifiedSegments', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar format = 'h:mm A';\n\t\t\t\tif (_utils.Time.date(this.get('endTime') - 1).date() !== _utils.Time.date(this.get('startTime')).date()) {\n\t\t\t\t\tformat = 'MMM Do h:mm A';\n\t\t\t\t}\n\t\t\t\tdate = _timeEntry.default.endTimeString(this, format);\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\t/**\n   * @property regularTimeString\n   * @type string\n   */\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('regularSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalTime: Ember.computed('regularSeconds', 'overtimeSeconds', 'doubletimeSeconds', function () {\n\t\t\treturn this.get('regularSeconds') + this.get('overtimeSeconds') + this.get('doubletimeSeconds');\n\t\t}),\n\n\t\t/**\n   * @property totalTimeString\n   * @type string\n   */\n\t\ttotalTimeString: Ember.computed('totalTime', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalTime'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\t/**\n   * @property breakTimeString\n   * @type string\n   */\n\t\tbreakTimeString: Ember.computed('breaktimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('breaktimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tsetup: Ember.observer('model.id', 'model.totalTime', 'model.breakTime', 'model.segmentTotalSeconds', 'includeSegments', function () {\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.setupTime();\n\t\t\t\tif (this.get('includeSegments')) {\n\t\t\t\t\tthis.calculateSegmentTime();\n\t\t\t\t} else {\n\t\t\t\t\tthis.calculateTime();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\n\t\tsetupTime: function setupTime() {\n\t\t\tvar model = this.get('model');\n\t\t\tif (!Ember.isNone(model) && !Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tthis.set('offset', model.get('offset'));\n\t\t\t\tthis.set('metaOffset', model.get('metaOffset'));\n\t\t\t\tthis.set('daylightSavingTime', model.get('daylightSavingTime'));\n\t\t\t\tthis.set('metaDaylightSavingTime', model.get('metaDaylightSavingTime'));\n\n\t\t\t\tvar timeObj = _timeEntry.default.timeByRange(model, this.get('start'), this.get('end'));\n\n\t\t\t\tthis.set('startTime', timeObj.startTime);\n\t\t\t\tthis.set('endTime', timeObj.endTime);\n\t\t\t}\n\t\t},\n\t\tcalculateTime: function calculateTime() {\n\t\t\tif (!Ember.isNone(this.get('model')) && !Ember.isNone(this.get('startTime')) && !Ember.isNone(this.get('endTime'))) {\n\t\t\t\tvar startTime = this.get('startTime');\n\t\t\t\tvar endTime = this.get('endTime');\n\t\t\t\tvar breakTimeObj = _timeEntry.default.totalBreakTime(this.get('model'), startTime, endTime);\n\t\t\t\tvar breaktime = breakTimeObj.total;\n\t\t\t\tvar regular = endTime - startTime - breaktime;\n\n\t\t\t\tthis.set('breaktimeSeconds', breaktime);\n\t\t\t\tthis.set('regularSeconds', regular);\n\t\t\t}\n\t\t},\n\t\tcalculateSegmentTime: function calculateSegmentTime() {\n\t\t\tvar start = this.get('startTime');\n\t\t\tvar end = this.get('endTime');\n\t\t\tvar model = this.get('model');\n\n\t\t\tvar regular = 0;\n\t\t\tvar overtime = 0;\n\t\t\tvar doubletime = 0;\n\t\t\tvar breakTime = 0;\n\t\t\tvar removedSegments = false;\n\n\t\t\tif (model.get('segmentTotalSeconds') > 0 && !Ember.isEmpty(model.get('segments'))) {\n\t\t\t\tmodel.get('segments').forEach(function (item) {\n\t\t\t\t\tif (item.get('startTime') >= start && item.get('startTime') < end || item.get('endTime') > start && item.get('endTime') <= end) {\n\t\t\t\t\t\tregular += item.get('regularSeconds');\n\t\t\t\t\t\tovertime += item.get('overtimeSeconds');\n\t\t\t\t\t\tdoubletime += item.get('doubletimeSeconds');\n\t\t\t\t\t\tbreakTime += item.get('breakSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tremovedSegments = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.set('modifiedSegments', removedSegments);\n\t\t\tthis.set('regularSeconds', regular);\n\t\t\tthis.set('overtimeSeconds', overtime);\n\t\t\tthis.set('doubletimeSeconds', doubletime);\n\t\t\tthis.set('breaktimeSeconds', breakTime);\n\t\t}\n\t});\n});","define('busy-app/utils/models/collections/time-entry-report', ['exports', '@busy-web/utils', 'busy-app/utils/models/collections/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tdays: null,\n\t\tprojectData: null,\n\n\t\tmember: Ember.computed.alias('model'),\n\n\t\tdateRangeString: Ember.computed('start', 'end', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tdate = _utils.Time.date(this.get('start')).format('M/D/YY') + ' - ' + _utils.Time.date(this.get('end')).format('M/D/YY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\tapplyData: function applyData(model, days, projects, start, end) {\n\t\t\tEmber.set(this, 'days', days);\n\t\t\tEmber.set(this, 'projectData', projects);\n\t\t\tEmber.set(this, 'start', start);\n\t\t\tEmber.set(this, 'end', end);\n\n\t\t\tthis._super(model);\n\t\t},\n\n\n\t\tprojectDataRegularSeconds: Ember.computed('projectData.@each.regularSeconds', function () {\n\t\t\tvar _this = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('projectData'))) {\n\t\t\t\tthis.get('projectData').forEach(function (item) {\n\t\t\t\t\tif (_this.get('model.wage.wageRate') === 10) {\n\t\t\t\t\t\t// hourly employee\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// salary employee\n\t\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tprojectDataOvertimeSeconds: Ember.computed('projectData.@each.overtimeSeconds', function () {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('projectData'))) {\n\t\t\t\tthis.get('projectData').forEach(function (item) {\n\t\t\t\t\tif (_this2.get('model.wage.wageRate') === 10) {\n\t\t\t\t\t\t// hourly employee\n\t\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tprojectDataDoubletimeSeconds: Ember.computed('projectData.@each.doubletimeSeconds', function () {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('projectData'))) {\n\t\t\t\tthis.get('projectData').forEach(function (item) {\n\t\t\t\t\tif (_this3.get('model.wage.wageRate') === 10) {\n\t\t\t\t\t\t// hourly employee\n\t\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tprojectDataTotalSeconds: Ember.computed('projectData.@each.totalSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('projectData'))) {\n\t\t\t\tthis.get('projectData').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('totalSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\tprojectDataRegularTimeString: Ember.computed('projectDataRegularSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('projectDataRegularSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tprojectDataOvertimeTimeString: Ember.computed('projectDataOvertimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('projectDataOvertimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tprojectDataDoubletimeTimeString: Ember.computed('projectDataDoubletimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('projectDataDoubletimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tprojectDataTotalTimeString: Ember.computed('projectDataTotalSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('projectDataTotalSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalPTOSeconds: Ember.computed('days.@each.totalPTOSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('days').forEach(function (item) {\n\t\t\t\ttotal += item.get('totalPTOSeconds');\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\tregularHoursWorked: Ember.computed('days.@each.regularHoursWorked', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('days').forEach(function (item) {\n\t\t\t\ttotal += item.get('regularHoursWorked');\n\t\t\t});\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/utils/models/collections/time-off-report', ['exports', 'busy-app/utils/models/collections/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tmember: null,\n\n\t\tapplyData: function applyData(model, member) {\n\t\t\tthis.set('member', member);\n\t\t\tthis._super(model);\n\t\t},\n\n\n\t\ttotalSeconds: Ember.computed('model.seconds', function () {\n\t\t\treturn this.get('model').filterBy('paid', true).mapBy('seconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t}, 0);\n\t\t}),\n\n\t\ttotalDaysUnpaid: Ember.computed('model.seconds', function () {\n\t\t\treturn this.get('model').filterBy('paid', false).get('length');\n\t\t})\n\t});\n});","define('busy-app/utils/models/dispatchers/base', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Object.extend({\n\n    /**\n     * Ember DS store\n     *\n     * @private\n     * @property store\n     * @type Services.Store\n     */\n    store: null\n  });\n});","define('busy-app/utils/models/dispatchers/member-pay-period', ['exports', 'busy-app/utils/models/dispatchers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tfunction _filterMembers(members, start) {\n\t\tvar remove = [];\n\t\tmembers.forEach(function (item) {\n\t\t\tif (!Ember.isNone(item) && !Ember.isNone(item.get('archivedOn')) && item.get('archivedOn') < start) {\n\t\t\t\tremove.pushObject(item);\n\t\t\t}\n\t\t});\n\t\tmembers.removeObjects(remove);\n\t\treturn members.sortBy('firstName', 'lastName');\n\t} /**\n    * @module Utils/Models/Dispatchers\n    *\n    */\n\n\n\tfunction _getMembers(store, start, end, seconds, wage) {\n\t\tvar memberIds = [];\n\t\tvar wageMembers = [];\n\n\t\tseconds.forEach(function (item) {\n\t\t\tif (memberIds.indexOf(item.get('memberId')) === -1) {\n\t\t\t\tmemberIds.push(item.get('memberId'));\n\t\t\t}\n\t\t});\n\n\t\t// salary employees with no time\n\t\t// needs to filter employees by start and end hire dates.\n\t\twage.forEach(function (item) {\n\t\t\tif (memberIds.indexOf(item.get('memberId')) === -1 && wageMembers.indexOf(item.get('memberId')) === -1 && item.get('wageRate') !== 10) {\n\t\t\t\twageMembers.push(item.get('memberId'));\n\t\t\t}\n\t\t});\n\n\t\treturn store.findByIds('member', memberIds).then(function (members) {\n\t\t\tif (wageMembers.length > 0) {\n\t\t\t\treturn store.findByIds('member', wageMembers, { _lte: { created_on: end } }).then(function (membersTwo) {\n\t\t\t\t\tmembers.pushObjects(membersTwo.toArray());\n\t\t\t\t\treturn _filterMembers(members, start);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn _filterMembers(members, start);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n  * `Util/Model/Dispatcher/MemberPayPeriod`\n  *\n  * @class MemberPayPeriod\n  * @namespace Utils.Models.Dispatchers\n  * @extends Utils.Models.Dispatchers.Base\n  */\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tfind: function find(start, end) {\n\t\t\tvar _this = this;\n\n\t\t\t(true && !(!Ember.isNone(start)) && Ember.assert('You must provide a start {number} to member-pay-period dispatcher', !Ember.isNone(start)));\n\t\t\t(true && !(!Ember.isNone(end)) && Ember.assert('You must provide a end {number} to member-pay-period dispatcher', !Ember.isNone(end)));\n\n\n\t\t\tvar useGroupPermissionScoping = Ember.get(this, 'auth.useGroupPermissionScoping');\n\t\t\tvar store = Ember.get(this, 'store');\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tcost: store.findAll('pay-period-member-cost', { start_time: start, end_time: end }),\n\t\t\t\tgroupScopedMembers: this.loadGroupScopedMembers(useGroupPermissionScoping),\n\t\t\t\tseconds: store.findAll('pay-period-member-seconds', { start_time: start, end_time: end }),\n\t\t\t\twage: store.findAll('wage-history') //, {_lte: {change_date: start}, _desc: ['change_date']}) // commented because the api gives back multile of the same record.\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar cost = _ref.cost,\n\t\t\t\t    groupScopedMembers = _ref.groupScopedMembers,\n\t\t\t\t    seconds = _ref.seconds,\n\t\t\t\t    wage = _ref.wage;\n\n\t\t\t\tif (useGroupPermissionScoping) {\n\t\t\t\t\tvar groupScopedMemberIds = new Set(groupScopedMembers.mapBy('id'));\n\n\t\t\t\t\tcost = _this.filterByMember(cost, groupScopedMemberIds);\n\t\t\t\t\tseconds = _this.filterByMember(seconds, groupScopedMemberIds);\n\t\t\t\t\twage = _this.filterByMember(wage, groupScopedMemberIds);\n\t\t\t\t}\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tcost: cost,\n\t\t\t\t\tseconds: seconds,\n\t\t\t\t\twage: wage,\n\t\t\t\t\tmembers: _getMembers(store, start, end, seconds, wage)\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadGroupScopedMembers: function loadGroupScopedMembers(useGroupPermissionScoping) {\n\t\t\tif (!useGroupPermissionScoping) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\n\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t    id = _EmberGetProperties.id,\n\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\tvar query = {\n\t\t\t\tarchived_on: null,\n\t\t\t\tmember_group_id: memberGroupId\n\t\t\t};\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t},\n\t\tfilterByMember: function filterByMember(collections, memberIds) {\n\t\t\treturn collections.filter(function (item) {\n\t\t\t\treturn memberIds.has(Ember.get(item, 'memberId'));\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/dispatchers/member-project-pay-period', ['exports', 'busy-app/utils/models/dispatchers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tfind: function find(start, end, projectId) {\n\t\t\tvar _this = this;\n\n\t\t\t(true && !(!Ember.isNone(start)) && Ember.assert('You must provide a start {number} to member-pay-period dispatcher', !Ember.isNone(start)));\n\t\t\t(true && !(!Ember.isNone(end)) && Ember.assert('You must provide a end {number} to member-pay-period dispatcher', !Ember.isNone(end)));\n\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tseconds: this.store.findAll('pay-period-member-project-seconds', { start_time: start, end_time: end, project_id: projectId }),\n\t\t\t\tcost: this.store.findAll('pay-period-member-project-cost', { start_time: start, end_time: end, project_id: projectId })\n\t\t\t}).then(function (data) {\n\t\t\t\tvar projectIds = [];\n\t\t\t\tdata.seconds.forEach(function (item) {\n\t\t\t\t\tif (projectIds.indexOf(item.get('projectId')) === -1 && !Ember.isNone(item.get('projectId'))) {\n\t\t\t\t\t\tprojectIds.push(item.get('projectId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tcost: data.cost,\n\t\t\t\t\tseconds: data.seconds,\n\t\t\t\t\tprojects: _this.store.findByIds('project', projectIds)\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/dispatchers/project-pay-period', ['exports', 'busy-app/utils/models/dispatchers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tfind: function find(start, end, projectId) {\n\t\t\tvar _this = this;\n\n\t\t\t(true && !(!Ember.isNone(start)) && Ember.assert('You must provide a start {number} to member-pay-period dispatcher', !Ember.isNone(start)));\n\t\t\t(true && !(!Ember.isNone(end)) && Ember.assert('You must provide a end {number} to member-pay-period dispatcher', !Ember.isNone(end)));\n\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tseconds: this.store.findAll('pay-period-member-project-seconds', { start_time: start, end_time: end, project_id: projectId }),\n\t\t\t\tcost: this.store.findAll('pay-period-member-project-cost', { start_time: start, end_time: end, project_id: projectId }),\n\t\t\t\ttimeOff: this.store.filter('time-off').findAllByRange(start, end)\n\t\t\t}).then(function (data) {\n\t\t\t\tvar projectIds = [];\n\t\t\t\tdata.seconds.forEach(function (item) {\n\t\t\t\t\tif (projectIds.indexOf(item.get('projectId')) === -1 && !Ember.isNone(item.get('projectId'))) {\n\t\t\t\t\t\tprojectIds.push(item.get('projectId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar projectPromise = Ember.RSVP.resolve([]);\n\t\t\t\tif (!Ember.isEmpty(projectIds)) {\n\t\t\t\t\tprojectPromise = _this.store.findByIds('project', projectIds);\n\t\t\t\t}\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tcost: data.cost,\n\t\t\t\t\tseconds: data.seconds,\n\t\t\t\t\ttimeOff: data.timeOff,\n\t\t\t\t\tprojects: projectPromise\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/dispatchers/time-entry-segment', ['exports', 'busy-app/utils/models/dispatchers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service('auth'),\n\t\tsignature: Ember.inject.service('signature'),\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * finds all the time-entry data with segments for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param equipmentId {string} Optional param to filter by an equipment model.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfindAllByMemberRange: function findAllByMemberRange(start, end, memberId, projectId, costCodeId, equipmentId, exclusive) {\n\t\t\tvar _this = this;\n\n\t\t\tvar timeOffPromise = Ember.RSVP.resolve([]);\n\t\t\tvar openEntryPromise = Ember.RSVP.resolve([]);\n\t\t\tif ((Ember.isNone(projectId) || projectId === '_-NULL-_' || projectId === null) && (Ember.isNone(costCodeId) || costCodeId === '_-NULL-_' || costCodeId === null)) {\n\t\t\t\ttimeOffPromise = this.store.filter('time-off').findAllByRange(start, end, memberId);\n\n\t\t\t\t// all open entries started before the end of today even if not opened today and started after\n\t\t\t\t// the start time\n\t\t\t\topenEntryPromise = this.store.filter('time-entry').findAllOpenEntries(memberId, null, end);\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntries: this.store.filter('time-entry').findAllByRange(start, end, memberId, projectId, costCodeId, equipmentId, exclusive),\n\t\t\t\topenTimeEntries: openEntryPromise,\n\t\t\t\ttimeOffEntries: timeOffPromise,\n\t\t\t\tmembers: this.getAllMemberData(memberId, start, end)\n\t\t\t}).then(function (data) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\tdata.timeEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 && Ember.isNone(data.members.findBy('id', entry.get('memberId'))) ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\t\t\t\tdata.timeOffEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 && Ember.isNone(data.members.findBy('id', entry.get('memberId'))) ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\t\t\t\tdata.openTimeEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 && Ember.isNone(data.members.findBy('id', entry.get('memberId'))) ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\n\t\t\t\treturn _this.getMemberDataByIds(memberIds, start, end).then(function (addMembers) {\n\t\t\t\t\tif (addMembers.get('length') > 0) {\n\t\t\t\t\t\tdata.members.pushObjects(addMembers.get('content'));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\t\ttimeEntries: _this.getRelatedModels(data.timeEntries, start, end),\n\t\t\t\t\t\topenTimeEntries: _this.getRelatedModels(data.openTimeEntries, start, end),\n\t\t\t\t\t\ttimeOffEntries: data.timeOffEntries,\n\t\t\t\t\t\tmembers: data.members\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * finds all the time-entry data with segments for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param equipmentId {string} Optional param to filter by an equipment model.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfindAllByRange: function findAllByRange() {\n\t\t\tvar start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\t\tvar end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\t\tvar memberId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\t\t\tvar projectId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\t\t\tvar costCodeId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n\t\t\tvar _this2 = this;\n\n\t\t\tvar equipmentId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n\t\t\tvar exclusive = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n\n\t\t\tvar options = start;\n\t\t\tif (Ember.isNone(options) || (typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object') {\n\t\t\t\toptions = {\n\t\t\t\t\tstart: start, end: end, memberId: memberId, projectId: projectId, costCodeId: costCodeId, equipmentId: equipmentId, exclusive: exclusive,\n\t\t\t\t\tdisableTimeOff: false,\n\t\t\t\t\tdisableOpenEntry: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar timeOffPromise = Ember.RSVP.resolve([]);\n\t\t\tvar openEntryPromise = Ember.RSVP.resolve([]);\n\t\t\tif ((Ember.isNone(options.projectId) || options.projectId === '_-NULL-_' || options.projectId === null) && (Ember.isNone(options.costCodeId) || options.costCodeId === '_-NULL-_' || options.costCodeId === null)) {\n\t\t\t\tif (!options.disableTimeOff) {\n\t\t\t\t\ttimeOffPromise = this.store.filter('time-off').findAllByRange(options.start, options.end, options.memberId);\n\t\t\t\t}\n\n\t\t\t\tif (!options.disableOpenEntry) {\n\t\t\t\t\t// all open entries started before the end of today even if not opened today and started after\n\t\t\t\t\t// the start time\n\t\t\t\t\topenEntryPromise = this.store.filter('time-entry').findAllOpenEntries(options.memberId, options.start, options.end);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntries: this.store.filter('time-entry').findAllByRange(options.start, options.end, options.memberId, options.projectId, options.costCodeId, options.equipmentId, options.exclusive),\n\t\t\t\topenTimeEntries: openEntryPromise,\n\t\t\t\ttimeOffEntries: timeOffPromise\n\t\t\t}).then(function (models) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\tmodels.timeEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\t\t\t\tmodels.timeOffEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\t\t\t\tmodels.openTimeEntries.forEach(function (entry) {\n\t\t\t\t\treturn memberIds.indexOf(entry.get('memberId')) === -1 ? memberIds.push(entry.get('memberId')) : '';\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\ttimeEntries: _this2.getRelatedModels(models.timeEntries, options.start, options.end),\n\t\t\t\t\topenTimeEntries: _this2.getRelatedModels(models.openTimeEntries, options.start, options.end),\n\t\t\t\t\ttimeOffEntries: models.timeOffEntries,\n\t\t\t\t\tmembers: _this2.getMemberDataByIds(memberIds, options.start, options.end)\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetRelatedModels: function getRelatedModels(entries, start, end) {\n\t\t\tvar projectIds = [];\n\t\t\tvar costCodeIds = [];\n\t\t\tvar breakIds = [];\n\t\t\tvar equipmentIds = [];\n\t\t\tvar segmentIds = [];\n\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\tbreakIds.push(entry.id);\n\t\t\t\tsegmentIds.push(entry.id);\n\n\t\t\t\tif (!Ember.isNone(entry.get('projectId')) && projectIds.indexOf(entry.get('projectId')) === -1) {\n\t\t\t\t\tprojectIds.push(entry.get('projectId'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry.get('costCodeId')) && costCodeIds.indexOf(entry.get('costCodeId')) === -1) {\n\t\t\t\t\tcostCodeIds.push(entry.get('costCodeId'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry.get('equipmentId')) && equipmentIds.indexOf(entry.get('equipmentId')) === -1) {\n\t\t\t\t\tequipmentIds.push(entry.get('equipmentId'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tprojects: this.store.filter('project').findFullProjects(projectIds),\n\t\t\t\tcostCodes: this.store.findByIds('cost-code', costCodeIds),\n\t\t\t\tequipment: this.store.findByIds('equipment', equipmentIds),\n\t\t\t\tbreaks: this.store.findWhereIn('time-entry-break', 'time_entry_id', breakIds, { deleted_on: null }),\n\t\t\t\tsegments: this.store.filter('segment').findByTimeEntryIds(segmentIds, { _gte: { start_time: start }, _lte: { end_time: end + 1 }, deleted_on: null, _asc: ['start_time'] })\n\t\t\t}).then(function (data) {\n\t\t\t\tentries.forEach(function (item) {\n\t\t\t\t\t// Since the models were loaded into ember-data store\n\t\t\t\t\t// in the calls above, and the model has DS.belongsTo\n\t\t\t\t\t// for the following models. Calling get on each joined\n\t\t\t\t\t// model will load the joined model into this model from\n\t\t\t\t\t// memory.\n\t\t\t\t\titem.get('project');\n\t\t\t\t\titem.get('costCode');\n\t\t\t\t\titem.get('equipment');\n\n\t\t\t\t\t// Since the following models are DS.hasMany calling get will not always\n\t\t\t\t\t// return the desired models. For instance if a time entry spans mutliple\n\t\t\t\t\t// days then it will have multiple segments and the desired return may not\n\t\t\t\t\t// need all segments from all days. So call get would return all segements.\n\t\t\t\t\tvar breaks = data.breaks.filterBy('timeEntryId', item.get('id'));\n\t\t\t\t\tif (!Ember.isEmpty(breaks)) {\n\t\t\t\t\t\titem.set('timeEntrieBreaks', breaks);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar segments = data.segments.filterBy('timeEntryId', item.get('id'));\n\t\t\t\t\tif (!Ember.isEmpty(segments)) {\n\t\t\t\t\t\titem.set('segments', segments);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn entries;\n\t\t\t});\n\t\t},\n\t\tgetAllMemberData: function getAllMemberData(id, start, end) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar query = {};\n\t\t\tvar query2 = {};\n\t\t\tif (!Ember.isNone(id)) {\n\t\t\t\tquery.id = id;\n\t\t\t\tquery2.id = id;\n\t\t\t\tquery2.archived_on = null;\n\t\t\t} else {\n\t\t\t\tquery.archived_on = null;\n\t\t\t\tquery._lte = { created_on: end };\n\t\t\t\tquery2._gte = { archived_on: start };\n\t\t\t\tquery._lte = { created_on: end };\n\t\t\t}\n\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    _id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\t\t\t\tEmber.setProperties(query2, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { id: _id });\n\t\t\t\t\tEmber.setProperties(query2, { id: _id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmembers: Ember.get(this, 'store').findAll('member', query),\n\t\t\t\tarchived: Ember.get(this, 'store').findAll('member', query2)\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar members = _ref.members,\n\t\t\t\t    archived = _ref.archived;\n\n\t\t\t\tmembers.pushObjects(archived.get('content'));\n\n\t\t\t\treturn _this3.getMemberRelatedData(members.mapBy('id'), start, end).then(function (data) {\n\t\t\t\t\treturn _this3.setMemberData(members, data, start);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetMemberDataByIds: function getMemberDataByIds(ids, start, end) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar query = {};\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties2 = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties2.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties2.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmembers: this.store.findByIds('member', ids.copy(), query),\n\t\t\t\trelated: this.getMemberRelatedData(ids, start, end)\n\t\t\t}).then(function (_ref2) {\n\t\t\t\tvar members = _ref2.members,\n\t\t\t\t    related = _ref2.related;\n\n\t\t\t\treturn _this4.setMemberData(members, related, start);\n\t\t\t});\n\t\t},\n\t\tgetMemberRelatedData: function getMemberRelatedData(ids, start, end) {\n\t\t\tvar mtdParams = {\n\t\t\t\tstart_time: start,\n\t\t\t\tend_time: end,\n\t\t\t\tdeleted_on: null,\n\t\t\t\tpage_size: 999999\n\t\t\t};\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\twages: this.store.filter('wage-history').findByMemberIds(ids, start),\n\t\t\t\tmemberTimeDocuments: this.store.findWhereIn('member-time-document', 'member_id', ids, mtdParams).then(function (documents) {\n\t\t\t\t\tvar promise = [];\n\t\t\t\t\tdocuments.forEach(function (item) {\n\t\t\t\t\t\tpromise.push(item.getSelfSignature());\n\t\t\t\t\t\tpromise.push(item.getAuthoritativeSignature());\n\t\t\t\t\t});\n\t\t\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\t\t\treturn documents;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Add member related models to the member model\n   *\n   */\n\t\tsetMemberData: function setMemberData(members, data, start) {\n\t\t\tmembers.forEach(function (item) {\n\t\t\t\tvar wages = data.wages.filterBy('memberId', item.get('id')).sortBy('changeDate');\n\t\t\t\titem.set('wages', wages);\n\n\t\t\t\tvar wage = wages.objectAt(0);\n\t\t\t\twages.forEach(function (item) {\n\t\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= start) {\n\t\t\t\t\t\twage = item;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\titem.set('wage', wage);\n\t\t\t\titem.set('memberTimeDocuments', data.memberTimeDocuments.filterBy('memberId', item.get('id')));\n\t\t\t});\n\t\t\treturn members;\n\t\t},\n\n\n\t\t/**\n   * NOTE:\n   * This is not correct in the assumptions it is making. This call is getting member time documents\n   * by pay period where as this dispatcher is not bound by pay periods and in some case will logically fail\n   * when the date range does match a pay period. This function should not be used and this function should\n   * be removed in the future.\n   */\n\t\tgetMemberTimeDocuments: function getMemberTimeDocuments(memberIds, startTime, endTime) {\n\t\t\tvar _this5 = this;\n\n\t\t\t// short circuit if signatures feature is not enabled\n\t\t\tif (!this.get('features').isEnabled('signatures') || Ember.isEmpty(memberIds)) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\n\t\t\tvar queryParams = {\n\t\t\t\tstart_time: startTime,\n\t\t\t\tend_time: endTime,\n\t\t\t\t_in: { member_id: memberIds },\n\t\t\t\t_desc: ['submitted_on']\n\t\t\t};\n\n\t\t\treturn this.get('signature').queryMemberTimeDocuments(queryParams).then(function (memberTimeDocumentsCache) {\n\t\t\t\tif (Ember.isEmpty(memberTimeDocumentsCache)) {\n\t\t\t\t\treturn memberTimeDocumentsCache;\n\t\t\t\t}\n\n\t\t\t\t// convert array of memberIds to a hash of promises keyed by memberId\n\t\t\t\tvar memberPayPeriodState = memberIds.reduce(function (result, memberId) {\n\t\t\t\t\treturn Ember.merge(result, _defineProperty({}, memberId, _this5.getByMemberPayPeriod(memberId, startTime, endTime, memberTimeDocumentsCache)));\n\t\t\t\t}, {});\n\n\t\t\t\treturn Ember.RSVP.hash(memberPayPeriodState).then(function (hash) {\n\t\t\t\t\treturn Ember.Object.create(hash);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * NOTE:\n   * This function is like the function above and should also be removed\n   *\n   */\n\t\tgetByMemberPayPeriod: function getByMemberPayPeriod(memberId, startTime, endTime, memberTimeDocumentsCache) {\n\t\t\tvar payPeriod = this.store.createRecord('pay-period-member-seconds', { memberId: memberId, startTime: startTime, endTime: endTime });\n\n\t\t\treturn this.get('signature').getByMemberPayPeriod(payPeriod, memberTimeDocumentsCache).then(function (mtd) {\n\t\t\t\treturn Ember.isEmpty(mtd) ? mtd : mtd.getSelfSignature().then(function () {\n\t\t\t\t\treturn mtd;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/dispatchers/time-entry', ['exports', 'busy-app/utils/models/dispatchers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tfindOpenEntry: function findOpenEntry(memberId) {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.store.filter('time-entry').findOpenEntry(memberId).then(function (timeEntry) {\n\t\t\t\treturn _this.store.filter('time-entry').getRelatedModels(timeEntry);\n\t\t\t});\n\t\t},\n\t\tfindOpenEntrySocket: function findOpenEntrySocket(memberId) {\n\t\t\treturn this.store.filter('time-entry').findOpenEntrySocket(memberId);\n\t\t},\n\t\tfindByDateRange: function findByDateRange(start, end, memberId, projectId, costCodeId) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar timeOffPromise = Ember.RSVP.resolve([]);\n\t\t\tif ((Ember.isNone(projectId) || projectId === '_-NULL-_' || projectId === null) && (Ember.isNone(costCodeId) || costCodeId === '_-NULL-_' || costCodeId === null)) {\n\t\t\t\ttimeOffPromise = this.store.filter('time-off').findAllByRange(start, end, memberId);\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntries: this.store.filter('time-entry').findAllByRange(start, end, memberId, projectId, costCodeId),\n\t\t\t\ttimeOffEntries: timeOffPromise,\n\t\t\t\tscopedGroupMembers: this.loadScopedGroupMembers()\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar timeEntries = _ref.timeEntries,\n\t\t\t\t    timeOffEntries = _ref.timeOffEntries,\n\t\t\t\t    scopedGroupMembers = _ref.scopedGroupMembers;\n\n\t\t\t\tvar members = [];\n\t\t\t\tvar projects = [];\n\t\t\t\tvar costCodes = [];\n\t\t\t\tvar equipmentIds = [];\n\t\t\t\tvar breaks = [];\n\n\t\t\t\tif (Ember.get(_this2, 'auth.useGroupPermissionScoping')) {\n\t\t\t\t\tvar scopedGroupMemberIds = new Set(scopedGroupMembers.mapBy('id'));\n\t\t\t\t\ttimeEntries = timeEntries.filter(function (item) {\n\t\t\t\t\t\treturn scopedGroupMemberIds.has(Ember.get(item, 'memberId'));\n\t\t\t\t\t});\n\t\t\t\t\ttimeOffEntries = timeOffEntries.filter(function (item) {\n\t\t\t\t\t\treturn scopedGroupMemberIds.has(Ember.get(item, 'memberId'));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttimeEntries.forEach(function (item) {\n\t\t\t\t\tif (breaks.indexOf(item.id) === -1) {\n\t\t\t\t\t\tbreaks.push(item.id);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (members.indexOf(item.get('memberId')) === -1) {\n\t\t\t\t\t\tmembers.push(item.get('memberId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('projectId')) && projects.indexOf(item.get('projectId')) === -1) {\n\t\t\t\t\t\tprojects.push(item.get('projectId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('costCodeId')) && costCodes.indexOf(item.get('costCodeId')) === -1) {\n\t\t\t\t\t\tcostCodes.push(item.get('costCodeId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('equipmentId')) && equipmentIds.indexOf(item.get('equipmentId')) === -1) {\n\t\t\t\t\t\tequipmentIds.push(item.get('equipmentId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttimeOffEntries.forEach(function (entry) {\n\t\t\t\t\tif (members.indexOf(entry.get('memberId')) === -1) {\n\t\t\t\t\t\tmembers.push(entry.get('memberId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\ttimeEntries: timeEntries,\n\t\t\t\t\ttimeOffEntries: timeOffEntries,\n\t\t\t\t\tbreaks: _this2.store.findWhereIn('time-entry-break', 'time_entry_id', breaks, { deleted_on: null }),\n\t\t\t\t\tmembers: _this2.store.findByIds('member', members),\n\t\t\t\t\tprojects: _this2.store.filter('project').findFullProjects(projects),\n\t\t\t\t\tcostCodes: _this2.store.findByIds('cost-code', costCodes),\n\t\t\t\t\tequipment: _this2.store.filter('equipment').getByIdsWithChildren(equipmentIds)\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tdata.timeEntries.forEach(function (item) {\n\t\t\t\t\t\tif (!Ember.isNone(item.get('projectId'))) {\n\t\t\t\t\t\t\tvar project = data.projects.findBy('id', item.get('projectId'));\n\t\t\t\t\t\t\titem.set('project', project);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(item.get('costCodeId'))) {\n\t\t\t\t\t\t\tvar costCode = data.costCodes.findBy('id', item.get('costCodeId'));\n\t\t\t\t\t\t\titem.set('costCode', costCode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(item.get('equipmentId'))) {\n\t\t\t\t\t\t\tvar equipment = data.equipment.findBy('id', item.get('equipmentId'));\n\t\t\t\t\t\t\titem.set('equipment', equipment);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar member = data.members.findBy('id', item.get('memberId'));\n\t\t\t\t\t\titem.set('member', member);\n\n\t\t\t\t\t\tvar breaks = data.breaks.filterBy('timeEntryId', item.id);\n\t\t\t\t\t\titem.set('timeEntryBreaks', breaks);\n\t\t\t\t\t});\n\n\t\t\t\t\tdata.timeOffEntries.forEach(function (item) {\n\t\t\t\t\t\tvar member = data.members.findBy('id', item.get('memberId'));\n\t\t\t\t\t\titem.set('member', member);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn { timeEntries: data.timeEntries, timeOffEntries: data.timeOffEntries };\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadScopedGroupMembers: function loadScopedGroupMembers() {\n\t\t\tif (!Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\n\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t    id = _EmberGetProperties.id,\n\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\tvar query = {\n\t\t\t\tmember_group_id: memberGroupId\n\t\t\t};\n\n\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t}\n\n\t\t\treturn Ember.get(this, 'store').findAll('member', query);\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/base', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = Ember.Object.extend({\n\n    /**\n     * Ember service\n     *\n     * @private\n     * @property store\n     * @type Services.Store\n     */\n    store: null\n  });\n});","define('busy-app/utils/models/filters/equipment', ['exports', 'busy-app/utils/models/filters/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tgetByIdsWithChildren: function getByIdsWithChildren(ids) {\n\t\t\treturn this.store.findByIds('equipment', ids).then(function (model) {\n\t\t\t\tvar promise = [];\n\t\t\t\tmodel.forEach(function (item) {\n\t\t\t\t\tvar p = item.get('equipmentModel').then(function (eModel) {\n\t\t\t\t\t\treturn eModel.get('equipmentMake');\n\t\t\t\t\t});\n\t\t\t\t\tpromise.push(p);\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.all(promise).then(function () {\n\t\t\t\t\treturn model;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/member', ['exports', 'busy-app/utils/models/filters/base', '@busy-web/utils'], function (exports, _base, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\t/**\n  * @module Utils/Models/Filters\n  *\n  */\n\tvar kDefaultModels = ['timeEntries', 'openEntry', 'timeOffEntries'];\n\n\t/**\n  * `Util/Model/Filter/Member`\n  *\n  * @class Member\n  * @namespace Utils.Models.Filters\n  * @extends Utils.Models.Filter.Base\n  */\n\texports.default = _base.default.extend({\n\t\t/**\n   * default models to return\n   *\n   */\n\t\tgetRelatedModelsByRange: function getRelatedModelsByRange(start, end, memberId) {\n\t\t\tvar _this = this;\n\n\t\t\tvar models = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : kDefaultModels;\n\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - start and end are required\", !Ember.isNone(start) && !Ember.isNone(end));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - memberId is required\", !Ember.isNone(memberId));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models is required\", !Ember.isNone(models));\n\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - start must be a valid epoch time in seconds of type number\", typeof start === 'number');\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - end must be a valid epoch time in seconds of type number\", typeof end === 'number');\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - memberId must be a valid UUID\", _utils.UUID.isValid(memberId));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models must be an array\", Array.isArray(models));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models array cannot be empty\", !Ember.isEmpty(models));\n\n\t\t\tvar modelGetters = {\n\t\t\t\ttimeEntries: function timeEntries() {\n\t\t\t\t\treturn _this.store.filter('time-entry').findAllByRange(start, end, memberId);\n\t\t\t\t},\n\t\t\t\topenEntry: function openEntry() {\n\t\t\t\t\treturn _this.store.filter('time-entry').findOpenEntry(memberId);\n\t\t\t\t},\n\t\t\t\ttimeOffEntries: function timeOffEntries() {\n\t\t\t\t\treturn _this.store.filter('time-off').findAllByRange(start, end, memberId);\n\t\t\t\t},\n\t\t\t\tmemberLocations: function memberLocations() {\n\t\t\t\t\treturn _this.store.query('member-location', { memberId: memberId, _gte: { time_gmt: start }, _lte: { time_gmt: end } });\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar rsvpHash = {};\n\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\t_utils.Assert.test('filter.member.getRelatedModelsByRange() - ' + model + ' is not a supported model', modelGetters.hasOwnProperty(model));\n\t\t\t\trsvpHash[model] = modelGetters[model]();\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash(rsvpHash);\n\t\t},\n\t\tgetRelatedModelsByRangeForMembers: function getRelatedModelsByRangeForMembers(start, end, memberIds) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar models = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : kDefaultModels;\n\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - start and end are required\", !Ember.isNone(start) && !Ember.isNone(end));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - memberIds is required\", !Ember.isNone(memberIds));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models is required\", !Ember.isNone(models));\n\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - start must be a valid epoch time in seconds of type number\", typeof start === 'number');\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - end must be a valid epoch time in seconds of type number\", typeof end === 'number');\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - memberIds must be an array of valid UUIDs\", Ember.typeOf(memberIds) === 'array');\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models must be an array\", Array.isArray(models));\n\t\t\t_utils.Assert.test(\"filter.member.getRelatedModelsByRange() - models array cannot be empty\", !Ember.isEmpty(models));\n\n\t\t\tvar modelGetters = {\n\t\t\t\ttimeEntries: function timeEntries() {\n\t\t\t\t\treturn _this2.store.findWhereIn('time-entry', 'member_id', memberIds, { _gte: { end_time: start }, _lte: { start_time: end }, deleted_on: '_-NULL-_' });\n\t\t\t\t},\n\t\t\t\topenEntry: function openEntry() {\n\t\t\t\t\treturn _this2.store.findWhereIn('time-entry', 'member_id', memberIds, { end_time: '_-NULL-_', deleted_on: '_-NULL-_' });\n\t\t\t\t},\n\t\t\t\ttimeOffEntries: function timeOffEntries() {\n\t\t\t\t\treturn _this2.store.findWhereIn('time-off', 'member_id', memberIds, { _gte: { date_stamp: start }, _lte: { date_stamp: end }, deleted_on: '_-NULL-_' });\n\t\t\t\t},\n\t\t\t\tmemberLocations: function memberLocations() {\n\t\t\t\t\treturn _this2.store.findWhereIn('member-location', 'member_id', memberIds, { _gte: { time_gmt: start }, _lte: { time_gmt: end }, deleted_on: '_-NULL-_' });\n\t\t\t\t},\n\t\t\t\tmemberLocks: function memberLocks() {\n\t\t\t\t\treturn _this2.store.findWhereIn('member-lock', 'member_id', memberIds, { deleted_on: '_-NULL-_' });\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar rsvpHash = {};\n\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\t_utils.Assert.test('filter.member.getRelatedModelsByRange() - ' + model + ' is not a supported model', modelGetters.hasOwnProperty(model));\n\t\t\t\trsvpHash[model] = modelGetters[model]();\n\t\t\t});\n\n\t\t\treturn Ember.RSVP.hash(rsvpHash);\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/project', ['exports', 'busy-app/utils/models/filters/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/***/\n\tfunction _orderProjects(data, id) {\n\t\tif (!Ember.isNone(id)) {\n\t\t\tvar project = data.findBy('id', id);\n\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\tvar parentProject = _orderProjects(data, project.get('parentProjectId'));\n\t\t\t\tif (!Ember.isNone(parentProject)) {\n\t\t\t\t\tproject.set('parentProject', parentProject);\n\t\t\t\t}\n\t\t\t\treturn project;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n  * `Util/Model/Filter/Project`\n  *\n  * @class Project\n  * @namespace Utils.Models.Filters\n  * @extends Utils.Models.Filter.Base\n  */\n\texports.default = _base.default.extend({\n\t\tfindByParentProject: function findByParentProject(modelType, id, query) {\n\t\t\tEmber.deprecate(\"findByParentProject is deprecated, please use findWithAllChildren\", false, {\n\t\t\t\tid: 'utils.models.filters.project',\n\t\t\t\tuntil: '4.5.0'\n\t\t\t});\n\t\t\treturn this.findWithAllChildren(modelType, id, query);\n\t\t},\n\t\tfindWithAllChildren: function findWithAllChildren(modelType, id, query) {\n\t\t\tvar _this = this;\n\n\t\t\tquery = query || {};\n\t\t\tif (!query.deleted_on) {\n\t\t\t\tquery.deleted_on = '_-NULL-_';\n\t\t\t}\n\n\t\t\treturn this.store.findAll('project-lookup', { parent_id: id }).then(function (lookups) {\n\t\t\t\tvar ids = [id];\n\t\t\t\tlookups.forEach(function (item) {\n\t\t\t\t\tif (ids.indexOf(item.get('childId')) === -1) {\n\t\t\t\t\t\tids.push(item.get('childId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn _this.store.findWhereIn(modelType, 'project_id', ids, query);\n\t\t\t});\n\t\t},\n\t\tfindWithDirectChildren: function findWithDirectChildren(modelType, id, query) {\n\t\t\tvar _this2 = this;\n\n\t\t\tquery = query || {};\n\t\t\tif (!query.deleted_on) {\n\t\t\t\tquery.deleted_on = '_-NULL-_';\n\t\t\t}\n\n\t\t\treturn this.store.findAll('project-lookup', { parent_id: id, is_direct: true }).then(function (lookups) {\n\t\t\t\tvar ids = [id];\n\t\t\t\tlookups.forEach(function (item) {\n\t\t\t\t\tif (ids.indexOf(item.get('childId')) === -1) {\n\t\t\t\t\t\tids.push(item.get('childId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn _this2.store.findWhereIn(modelType, 'project_id', ids, query);\n\t\t\t});\n\t\t},\n\t\tfindParentProjects: function findParentProjects(ids) {\n\t\t\tvar _this3 = this;\n\n\t\t\tids = typeof ids === 'string' ? [ids] : ids;\n\t\t\tvar projectIds = ids.copy();\n\t\t\treturn this.store.findWhereIn('project-lookup', 'child_id', ids).then(function (lookups) {\n\t\t\t\tlookups.forEach(function (item) {\n\t\t\t\t\tif (projectIds.indexOf(item.get('parentId')) === -1) {\n\t\t\t\t\t\tprojectIds.push(item.get('parentId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn _this3.store.findByIds('project', projectIds);\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Gets a project with the parent projects\n   *\n   * @public\n   * @method findFullProject\n   * @params ids {string} Project UUID string\n   * @return {EmberPromise}\n   */\n\t\tfindFullProject: function findFullProject(id) {\n\t\t\tif (Ember.isNone(id)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\t\t\t// return this.findParentProjects(id).then(projects => {\n\t\t\t// \treturn _orderProjects(projects, id);\n\t\t\t// });\n\t\t\treturn this.findFullProjects([id]);\n\t\t},\n\n\n\t\t/**\n   * Gets an array of projects with the parent projects attached and a project info model\n   * attached to the root level project.\n   *\n   * @public\n   * @method findFullProjects\n   * @params ids {array} An array of project ids\n   * @return {EmberPromise}\n   */\n\t\tfindFullProjects: function findFullProjects(ids) {\n\t\t\tvar _this4 = this;\n\n\t\t\t(true && !(!Ember.isNone(ids) && (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object') && Ember.assert('findFullProjects requires an array of ids', !Ember.isNone(ids) && (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object'));\n\n\n\t\t\tif (Ember.isEmpty(ids)) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tvar projectIds = ids.copy();\n\n\t\t\treturn this.findParentProjects(ids).then(function (projects) {\n\t\t\t\tvar topLevelProjects = [];\n\t\t\t\tprojectIds.forEach(function (id) {\n\t\t\t\t\tvar project = projects.findBy('id', id);\n\t\t\t\t\tif (topLevelProjects.indexOf(project.get('rootProjectId')) === -1) {\n\t\t\t\t\t\ttopLevelProjects.push(project.get('rootProjectId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tprojects: projects,\n\t\t\t\t\tprojectInfos: _this4.findProjectInfos(projects.mapBy('id'))\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tdata.projectInfos.forEach(function (info) {\n\t\t\t\t\t\tvar project = data.projects.findBy('id', info.get('projectId'));\n\t\t\t\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\t\t\t\tproject.set('projectInfo', info);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tvar projectArray = [];\n\t\t\t\t\tprojectIds.forEach(function (id) {\n\t\t\t\t\t\tvar project = _orderProjects(projects, id);\n\t\t\t\t\t\tprojectArray.pushObject(project);\n\t\t\t\t\t});\n\t\t\t\t\treturn projectArray;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n   * Takes an array of root project ids and returns an array of project info models\n   *\n   * @public\n   * @method findProjectInfos\n   * @params rootIds {array} An array of root project ids\n   * @return {EmberPromise}\n   */\n\t\tfindProjectInfos: function findProjectInfos(rootIds) {\n\t\t\t(true && !(!Ember.isNone(rootIds) && (typeof rootIds === 'undefined' ? 'undefined' : _typeof(rootIds)) === 'object') && Ember.assert('findProjectInfos requires an array of rootIds', !Ember.isNone(rootIds) && (typeof rootIds === 'undefined' ? 'undefined' : _typeof(rootIds)) === 'object'));\n\n\n\t\t\tif (Ember.isEmpty(rootIds)) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t\treturn this.store.findWhereIn('project-info', 'project_id', rootIds, { deleted_on: '_-NULL-_' });\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/segment', ['exports', 'ember-data', 'busy-app/utils/models/filters/base'], function (exports, _emberData, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = _base.default.extend({\n\t\tfindByTimeEntryId: function findByTimeEntryId(id) {\n\t\t\tvar _this = this;\n\n\t\t\tvar promise = this.store.query('segment', { time_entry_id: id }).then(function (segments) {\n\t\t\t\tvar ids = [];\n\t\t\t\tsegments.forEach(function (item) {\n\t\t\t\t\tif (ids.indexOf(item.id) === -1) {\n\t\t\t\t\t\tids.push(item.id);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tseconds: _this.store.findWhereIn('segment-seconds', 'segment_id', ids, { deleted_on: '_-NULL-_' }),\n\t\t\t\t\tcost: _this.store.findWhereIn('segment-cost', 'segment_id', ids, { deleted_on: '_-NULL-_' })\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tsegments.forEach(function (item) {\n\t\t\t\t\t\titem.set('seconds', data.seconds.findBy('segmentId', item.id));\n\t\t\t\t\t\titem.set('cost', data.cost.findBy('segmentId', item.id));\n\t\t\t\t\t});\n\t\t\t\t\treturn segments;\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn _emberData.default.PromiseArray.create({ promise: promise });\n\t\t},\n\t\tfindByTimeEntryIds: function findByTimeEntryIds(ids, query) {\n\t\t\tvar _this2 = this;\n\n\t\t\t(true && !((typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object') && Ember.assert('ids must be an array of strings in segmentFilter.findByTimeEntryIds()', (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object'));\n\n\n\t\t\tif (!Ember.isNone(query.deleted_on)) {\n\t\t\t\tquery.deleted_on = '_-NULL-_';\n\t\t\t}\n\n\t\t\tvar timeEntryIds = ids.copy();\n\t\t\treturn this.store.findWhereIn('segment', 'time_entry_id', timeEntryIds, query).then(function (segments) {\n\t\t\t\tvar secondIds = [];\n\t\t\t\tvar costIds = [];\n\t\t\t\tsegments.forEach(function (item) {\n\t\t\t\t\tsecondIds.push(item.id);\n\t\t\t\t\tcostIds.push(item.id);\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tsegments: segments,\n\t\t\t\t\tseconds: _this2.store.findWhereIn('segment-seconds', 'segment_id', secondIds, { deleted_on: '_-NULL-_' }),\n\t\t\t\t\tcost: _this2.store.findWhereIn('segment-cost', 'segment_id', costIds, { deleted_on: '_-NULL-_' })\n\t\t\t\t}).then(function (data) {\n\t\t\t\t\tdata.segments.forEach(function (item) {\n\t\t\t\t\t\tvar seconds = data.seconds.filterBy('segmentId', item.id);\n\t\t\t\t\t\tvar cost = data.cost.filterBy('segmentId', item.id);\n\n\t\t\t\t\t\tif (!Ember.isNone(seconds)) {\n\t\t\t\t\t\t\titem.set('seconds', seconds);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(cost)) {\n\t\t\t\t\t\t\titem.set('cost', cost);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn data.segments.sortBy('startTime').reverse();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/time-entry', ['exports', 'busy-app/utils/models/filters/base', '@busy-web/utils/assert'], function (exports, _base, _assert) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * gets the open time entry model\n   *\n   * @method findOpenEntry\n   */\n\t\tfindOpenEntry: function findOpenEntry(memberId) {\n\t\t\tvar query = { end_time: null, member_id: memberId };\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t\treturn this.store.query('time-entry', query).then(function (entries) {\n\t\t\t\treturn entries.objectAt(0);\n\t\t\t});\n\t\t},\n\t\tfindOpenEntrySocket: function findOpenEntrySocket(memberId) {\n\t\t\tvar query = { end_time: null, member_id: memberId };\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve();\n\t\t\t}\n\t\t\treturn this.store.socket('time-entry', query);\n\t\t},\n\t\tfindAllOpenEntries: function findAllOpenEntries(memberId, start, end) {\n\t\t\tvar query = { end_time: null };\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\t_assert.default.isUUID(memberId);\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(start)) {\n\t\t\t\t_assert.default.isNumber(start);\n\t\t\t\tquery._gte = { start_time: start };\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(end)) {\n\t\t\t\t_assert.default.isNumber(end);\n\t\t\t\tquery._lt = { start_time: end };\n\t\t\t}\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t\treturn this.store.query('time-entry', query);\n\t\t},\n\n\n\t\t/**\n   * returns a date range of time-entries with no dependent\n   * models included.\n   *\n   * @public\n   * @method range\n   * @param start {number} start epoch date\n   * @param end {number} end epoch date\n   * @param memberId {string} member model id\n   * @param projectId {string} project model id\n   * @param costCodeId {string} cost-code model id\n   * @returns {promise}\n   */\n\t\trange: function range(start, end, memberId, projectId, costCodeId) {\n\t\t\t_assert.default.isNumber(start);\n\t\t\t_assert.default.isNumber(end);\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { end_time: start },\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\t_desc: ['start_time'],\n\t\t\t\tdeleted_on: null\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t}\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t\treturn this.store.query('time-entry', query);\n\t\t},\n\t\tfindAllByRange: function findAllByRange(start, end, memberId, projectId, costCodeId, equipmentId, exclusive) {\n\t\t\t_assert.default.isNumber(start);\n\t\t\t_assert.default.isNumber(end);\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { end_time: start },\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\t_desc: ['start_time'],\n\t\t\t\tdeleted_on: null\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(equipmentId)) {\n\t\t\t\tquery.equipment_id = equipmentId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId) && (projectId === null || projectId === '_-NULL-_' || exclusive)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t\tprojectId = null;\n\t\t\t}\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\treturn this.store.filter('project').findWithAllChildren('time-entry', projectId, query);\n\t\t\t} else {\n\t\t\t\treturn this.store.findAll('time-entry', query);\n\t\t\t}\n\t\t},\n\t\tgetRelatedModels: function getRelatedModels(timeEntry) {\n\t\t\tif (Ember.isNone(timeEntry) || window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve({ entry: null, breaks: null, project: null, costCode: null, equipment: null });\n\t\t\t}\n\n\t\t\tvar projectPromise = this.store.filter('project').findFullProject(timeEntry.get('projectId'));\n\t\t\tvar costCodePromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('costCodeId'))) {\n\t\t\t\tcostCodePromise = this.store.findRecord('costCode', timeEntry.get('costCodeId'));\n\t\t\t}\n\n\t\t\tvar equipmentPromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('equipmentId'))) {\n\t\t\t\tequipmentPromise = this.store.findRecord('equipment', timeEntry.get('equipmentId'));\n\t\t\t}\n\n\t\t\tvar startLocPromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('startLocationId'))) {\n\t\t\t\tstartLocPromise = this.store.findRecord('member-location', timeEntry.get('startLocationId'));\n\t\t\t}\n\n\t\t\tvar endLocPromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('endLocationId'))) {\n\t\t\t\tendLocPromise = this.store.findRecord('member-location', timeEntry.get('endLocationId'));\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tentry: timeEntry,\n\t\t\t\tbreaks: this.store.query('time-entry-break', { time_entry_id: timeEntry.id, deleted_on: null }),\n\t\t\t\tproject: projectPromise,\n\t\t\t\tcostCode: costCodePromise,\n\t\t\t\tequipment: equipmentPromise,\n\t\t\t\tstartLocation: startLocPromise,\n\t\t\t\tendLocation: endLocPromise\n\t\t\t});\n\t\t},\n\t\tgetRelatedModelsForEntries: function getRelatedModelsForEntries(timeEntries) {\n\t\t\tif (Ember.isEmpty(timeEntries) || window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve(timeEntries);\n\t\t\t}\n\n\t\t\tvar projectIds = [];\n\t\t\tvar costCodeIds = [];\n\t\t\tvar equipmentIds = [];\n\t\t\tvar startLocationIds = [];\n\t\t\tvar endLocationIds = [];\n\t\t\tvar breakIds = [];\n\n\t\t\ttimeEntries.forEach(function (entry) {\n\t\t\t\tif (!Ember.isNone(entry.get('projectId')) && projectIds.indexOf(entry.get('projectId')) === -1) {\n\t\t\t\t\tprojectIds.push(entry.get('projectId'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry.get('costCodeId')) && costCodeIds.indexOf(entry.get('costCodeId')) === -1) {\n\t\t\t\t\tcostCodeIds.push(entry.get('costCodeId'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry.get('equipmentId')) && equipmentIds.indexOf(entry.get('equipmentId')) === -1) {\n\t\t\t\t\tequipmentIds.push(entry.get('equipmentId'));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(entry.get('startLocationId')) && startLocationIds.indexOf(entry.get('startLocationId')) === -1) {\n\t\t\t\t\tstartLocationIds.push(entry.get('startLocationId'));\n\t\t\t\t}\n\t\t\t\tif (!Ember.isNone(entry.get('endLocationId')) && endLocationIds.indexOf(entry.get('endLocationId')) === -1) {\n\t\t\t\t\tendLocationIds.push(entry.get('endLocationId'));\n\t\t\t\t}\n\n\t\t\t\tif (breakIds.indexOf(entry.get('id')) === -1) {\n\t\t\t\t\tbreakIds.push(entry.get('id'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar equipmentPromise = Ember.RSVP.resolve([]);\n\t\t\tif (this.get('features.equipment')) {\n\t\t\t\tequipmentPromise = this.store.findWhereIn('equipment', 'id', equipmentIds, { deleted_on: null });\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tentries: timeEntries,\n\t\t\t\tbreaks: this.store.findWhereIn('time-entry-break', 'time_entry_id', breakIds, { deleted_on: null }),\n\t\t\t\tprojects: this.store.filter('project').findFullProjects(projectIds),\n\t\t\t\tcostCodes: this.store.findWhereIn('cost-code', 'id', costCodeIds, { deleted_on: null }),\n\t\t\t\tequipment: equipmentPromise,\n\t\t\t\tstartLocations: this.store.findWhereIn('member-location', 'id', startLocationIds, { deleted_on: null }),\n\t\t\t\tendLocations: this.store.findWhereIn('member-location', 'id', endLocationIds, { deleted_on: null })\n\t\t\t}).then(function (data) {\n\t\t\t\tdata.entries.forEach(function (entry) {\n\t\t\t\t\tvar relationships = {};\n\t\t\t\t\trelationships.timeEntryBreaks = data.breaks.filterBy('timeEntryId', entry.get('id'));\n\t\t\t\t\trelationships.project = data.projects.findBy('id', entry.get('projectId'));\n\t\t\t\t\trelationships.costCode = data.costCodes.findBy('id', entry.get('costCodeId'));\n\t\t\t\t\trelationships.equipment = data.equipment.findBy('id', entry.get('equipmentId'));\n\t\t\t\t\trelationships.startLocation = data.startLocations.findBy('id', entry.get('startLocationId'));\n\t\t\t\t\trelationships.endLocation = data.endLocations.findBy('id', entry.get('endLocationId'));\n\t\t\t\t\tentry.setProperties(relationships);\n\t\t\t\t});\n\t\t\t\treturn data.entries;\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/time-off-entry', ['exports', 'busy-app/utils/models/filters/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * gets the open time entry model\n   *\n   * @method findOpenEntry\n   */\n\t\tfindOpenEntry: function findOpenEntry(memberId) {\n\t\t\t//var _this = this;\n\t\t\tvar query = {\n\t\t\t\tend_time: '_-NULL-_',\n\t\t\t\tmember_id: memberId\n\t\t\t};\n\n\t\t\treturn this.store.query('time-entry', query).then(function (entries) {\n\t\t\t\treturn entries.objectAt(0);\n\t\t\t});\n\t\t},\n\n\t\tfindOpenEntrySocket: function findOpenEntrySocket(memberId) {\n\t\t\t//var _this = this;\n\t\t\tvar query = {\n\t\t\t\tend_time: '_-NULL-_',\n\t\t\t\tmember_id: memberId\n\t\t\t};\n\n\t\t\treturn this.store.socket('time-entry', query);\n\t\t},\n\n\t\tfindAllOpenEntries: function findAllOpenEntries(memberId) {\n\t\t\tvar query = {\n\t\t\t\tend_time: '_-NULL-_',\n\t\t\t\tmember_id: memberId\n\t\t\t};\n\n\t\t\treturn this.store.query('time-entry', query);\n\t\t},\n\n\t\t/**\n   * returns a date range of time-entries with no dependent\n   * models included.\n   *\n   * @public\n   * @method range\n   * @param start {number} start epoch date\n   * @param end {number} end epoch date\n   * @param memberId {string} member model id\n   * @param projectId {string} project model id\n   * @param costCodeId {string} cost-code model id\n   * @returns {promise}\n   */\n\t\trange: function range(start, end, memberId, projectId, costCodeId) {\n\t\t\t(true && !(!Ember.isNone(start) && !Ember.isNone(end)) && Ember.assert(\"start and end are required for store.filter('time-entry').range()\", !Ember.isNone(start) && !Ember.isNone(end)));\n\t\t\t(true && !(typeof start === 'number') && Ember.assert(\"start must be a valid epoch time in seconds of type number\", typeof start === 'number'));\n\t\t\t(true && !(typeof end === 'number') && Ember.assert(\"end must be a valid epoch time in seconds of type number\", typeof end === 'number'));\n\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { end_time: start },\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\t_desc: ['start_time']\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t}\n\t\t\treturn this.store.query('time-entry', query);\n\t\t},\n\t\tfindAllByRange: function findAllByRange(start, end, memberId, projectId, costCodeId, exclusive) {\n\t\t\t(true && !(!Ember.isNone(start) && !Ember.isNone(end)) && Ember.assert(\"start and end are required for store.filter('time-entry').range()\", !Ember.isNone(start) && !Ember.isNone(end)));\n\t\t\t(true && !(typeof start === 'number') && Ember.assert(\"start must be a valid epoch time in seconds of type number\", typeof start === 'number'));\n\t\t\t(true && !(typeof end === 'number') && Ember.assert(\"end must be a valid epoch time in seconds of type number\", typeof end === 'number'));\n\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { end_time: start },\n\t\t\t\t_lte: { start_time: end },\n\t\t\t\t_desc: ['start_time']\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId) && (projectId === '_-NULL-_' || exclusive)) {\n\t\t\t\tquery.project_id = projectId;\n\t\t\t\tprojectId = null;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\treturn this.store.filter('project').findWithAllChildren('time-entry', projectId, query);\n\t\t\t} else {\n\t\t\t\treturn this.store.findAll('time-entry', query);\n\t\t\t}\n\t\t},\n\t\tgetRelatedModels: function getRelatedModels(timeEntry) {\n\t\t\tif (Ember.isNone(timeEntry)) {\n\t\t\t\treturn Ember.RSVP.resolve({\n\t\t\t\t\tentry: null,\n\t\t\t\t\tbreaks: null,\n\t\t\t\t\tproject: null,\n\t\t\t\t\tcostCode: null,\n\t\t\t\t\ttimeOff: null\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar projectPromise = this.store.filter('project').findFullProject(timeEntry.get('projectId'));\n\n\t\t\tvar costCodePromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('costCodeId'))) {\n\t\t\t\tcostCodePromise = this.store.findRecord('costCode', timeEntry.get('costCodeId'));\n\t\t\t}\n\n\t\t\tvar timeOffPromise = Ember.RSVP.resolve(null);\n\t\t\tif (!Ember.isNone(timeEntry.get('timeOffId'))) {\n\t\t\t\ttimeOffPromise = this.store.findRecord('time-off', timeEntry.get('timeOffId'));\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tentry: timeEntry,\n\t\t\t\tbreaks: this.store.query('time-entry-break', { time_entry_id: timeEntry.id }),\n\t\t\t\tproject: projectPromise,\n\t\t\t\tcostCode: costCodePromise,\n\t\t\t\ttimeOff: timeOffPromise\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/time-off', ['exports', '@busy-web/utils', 'busy-app/utils/models/filters/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\t/**\n   * returns a date range of time-entries with no dependent\n   * models included.\n   *\n   * @public\n   * @method range\n   * @param start {number} start epoch date\n   * @param end {number} end epoch date\n   * @param memberId {string} member model id\n   * @returns {promise}\n   */\n\t\trange: function range(start, end, memberId) {\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { date_stamp: start },\n\t\t\t\t_lte: { date_stamp: end },\n\t\t\t\t_desc: ['date_stamp']\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\t_utils.Assert.isString(memberId);\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t\treturn this.store.query('time-off', query);\n\t\t},\n\t\tfindAllByRange: function findAllByRange(start, end, memberId) {\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { date_stamp: start },\n\t\t\t\t_lte: { date_stamp: end },\n\t\t\t\t_desc: ['date_stamp']\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\t_utils.Assert.isString(memberId);\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tif (window.runningTests) {\n\t\t\t\treturn Ember.RSVP.resolve([]);\n\t\t\t}\n\t\t\treturn this.store.findAll('time-off', query);\n\t\t},\n\t\tgetRelatedModels: function getRelatedModels(entry) {\n\t\t\tif (Ember.isNone(entry)) {\n\t\t\t\tentry = null;\n\t\t\t}\n\t\t\treturn Ember.RSVP.hash({ entry: entry });\n\t\t}\n\t});\n});","define('busy-app/utils/models/filters/wage-history', ['exports', 'busy-app/utils/models/filters/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = _base.default.extend({\n\t\tfindByMemberId: function findByMemberId(id, olderThanDate) {\n\t\t\t(true && !(!Ember.isNone(id)) && Ember.assert('memberId is required for findByMemberId', !Ember.isNone(id)));\n\n\n\t\t\tvar params = {\n\t\t\t\t_desc: ['change_date'],\n\t\t\t\tmember_id: id\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(olderThanDate)) {\n\t\t\t\tparams._lte = {\n\t\t\t\t\tchange_date: olderThanDate\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn this.store.query('wage-history', params).then(function (models) {\n\t\t\t\treturn models.objectAt(0);\n\t\t\t});\n\t\t},\n\t\tfindByMemberIds: function findByMemberIds(ids, olderThanDate) {\n\t\t\t(true && !(!Ember.isNone(ids) && (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object') && Ember.assert('an array of memberIds is required for findByMemberIds', !Ember.isNone(ids) && (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) === 'object'));\n\n\n\t\t\tvar params = {\n\t\t\t\t_desc: ['change_date'],\n\t\t\t\tdeleted_on: '_-NULL-_'\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(olderThanDate)) {\n\t\t\t\tparams._lte = {\n\t\t\t\t\tchange_date: olderThanDate\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn this.store.findWhereIn('wage-history', 'member_id', ids, params);\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/base', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/**\n  * `Util/Model/Manager/Base`\n  *\n  * @class Base\n  * @namespace Utils.Models.Managers\n  * @extends ArrayProxy\n  */\n\tvar Manager = Ember.ArrayProxy.extend(Ember.Evented, {\n\t\t_store: Ember.inject.service('store'),\n\t\tstore: null,\n\t\tcontent: null,\n\t\tmodel: Ember.computed.alias('content'),\n\t\tcollectionType: null,\n\t\t_models: null,\n\n\t\tinit: function init() {\n\t\t\tthis._super();\n\t\t\tthis.store = this.get('_store');\n\t\t},\n\t\tgetSorted: function getSorted() {\n\t\t\t_logger.default.warn('The default sortBy was used. This function should be overridden in the manager to set the sort');\n\t\t\treturn this.get('model');\n\t\t},\n\t\tobjectAtContent: function objectAtContent(index) {\n\t\t\tvar content = Ember.get(this, 'content');\n\t\t\treturn content.objectAt(index);\n\t\t},\n\t\tfetch: function fetch() {\n\t\t\treturn new Ember.RSVP.resolve(Ember.A());\n\t\t},\n\t\t_fetch: function _fetch() {\n\t\t\tvar _this = this;\n\n\t\t\treturn this.fetch.apply(this, arguments).then(function (models) {\n\t\t\t\treturn _this.build(models);\n\t\t\t});\n\t\t},\n\t\tbuild: function build(models) {\n\t\t\ttry {\n\t\t\t\tthis.set('_models', models);\n\t\t\t\tthis.buildCollections(models);\n\t\t\t\treturn this;\n\t\t\t} catch (e) {\n\t\t\t\t_logger.default.error(e);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t},\n\t\taddCollection: function addCollection() {\n\t\t\tvar collection = this.collectionFor(this.get('collectionType'));\n\t\t\tif (!Ember.isNone(collection)) {\n\t\t\t\tthis.addInternalModel(collection.push.apply(collection, arguments));\n\t\t\t} else {\n\t\t\t\tthis.addInternalModel.apply(this, arguments);\n\t\t\t}\n\t\t},\n\t\tbuildCollections: function buildCollections(models) {\n\t\t\tvar _this2 = this;\n\n\t\t\tmodels.forEach(function (model) {\n\t\t\t\t_this2.addCollection(model);\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\taddInternalModel: function addInternalModel(model, idx) {\n\t\t\tif (idx !== undefined) {\n\t\t\t\tthis.get('content').removeAt(idx, 1);\n\t\t\t\tthis.get('content').insertAt(idx, model);\n\t\t\t} else {\n\t\t\t\tthis.get('content').pushObject(model);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\tremoveInternalModel: function removeInternalModel(model) {\n\t\t\tthis.get('content').removeObject(model);\n\t\t\treturn this;\n\t\t},\n\t\tcollectionFor: function collectionFor(type) {\n\t\t\ttype = typeof type === 'string' ? type : this.constructor.typeName;\n\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar collection = owner.factoryFor('util:models.collections.' + type).create(owner.ownerInjection());\n\n\t\t\t_utils.Assert.test('No Collection was found for ' + type.classify(), !Ember.isNone(collection));\n\n\t\t\treturn collection;\n\t\t},\n\t\tdispatcherFor: function dispatcherFor(type) {\n\t\t\t_utils.Assert.test('a type must be passed to Manager.dispatcherFor()', typeof type === 'string' && !Ember.isEmpty(type));\n\n\t\t\treturn this.store.dispatcher(type);\n\t\t}\n\t});\n\n\tManager.reopenClass({\n\t\t_create: Manager.create,\n\n\t\ttypeName: '',\n\n\t\tcreate: function create() {\n\t\t\t_utils.Assert.throw('create() cannot be called on a Dispatcher. Please use fetch()');\n\t\t},\n\t\tfetch: function fetch(store) {\n\t\t\t_utils.Assert.test('A store instance must be passed to fetch', (typeof store === 'undefined' ? 'undefined' : _typeof(store)) === 'object' && !Ember.isNone(store.query));\n\n\t\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\t\tvar owner = Ember.getOwner(store);\n\t\t\tvar manager = this._create(owner.ownerInjection(), { content: Ember.A() });\n\t\t\treturn manager._fetch.apply(manager, args);\n\t\t}\n\t});\n\n\texports.default = Manager;\n});","define('busy-app/utils/models/managers/hours-and-cost', ['exports', 'busy-app/utils/models/managers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\tmemberId: null,\n\t\tprojectId: null,\n\t\tcostCodeId: null,\n\n\t\tsortWithType: 'member',\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('start').reverse();\n\t\t},\n\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfetch: function fetch(start, end, memberId, projectId, costCodeId, sortBy) {\n\t\t\t(true && !(Ember.typeOf(sortBy) === 'number') && Ember.assert('You must pass a sortBy type number: [ 10{member} | 20{project} | 30{costcode} ]', Ember.typeOf(sortBy) === 'number'));\n\n\n\t\t\tvar _this = this;\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('memberId', memberId);\n\t\t\tthis.set('projectId', projectId);\n\t\t\tthis.set('costCodeId', costCodeId);\n\t\t\tthis.set('sortWithType', sortBy);\n\n\t\t\tvar query = {};\n\t\t\tif (!Ember.isNone(start) && !Ember.isNone(end)) {\n\t\t\t\tquery._gte = { end_time: start };\n\t\t\t\tquery._lte = { start_time: end };\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tquery.member_id = memberId;\n\t\t\t}\n\n\t\t\tvar cost, seconds;\n\t\t\tif (sortBy === 20) {\n\t\t\t\tcost = this.store.filter('project').findWithDirectChildren('pay-period-member-project-cost', projectId, query);\n\t\t\t\tseconds = this.store.filter('project').findWithDirectChildren('pay-period-member-project-seconds', projectId, query);\n\t\t\t} else {\n\t\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\t\tquery.project_id = projectId;\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(costCodeId)) {\n\t\t\t\t\tquery.cost_code_id = costCodeId;\n\t\t\t\t\tcost = this.store.findAll('pay-period-member-project-cost-code-cost', query);\n\t\t\t\t\tseconds = this.store.findAll('pay-period-member-project-cost-code-seconds', query);\n\t\t\t\t} else if (!Ember.isNone(projectId)) {\n\t\t\t\t\tcost = this.store.findAll('pay-period-member-project-cost', query);\n\t\t\t\t\tseconds = this.store.findAll('pay-period-member-project-seconds', query);\n\t\t\t\t} else {\n\t\t\t\t\tcost = this.store.findAll('pay-period-member-cost', query);\n\t\t\t\t\tseconds = this.store.findAll('pay-period-member-seconds', query);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({ cost: cost, seconds: seconds }).then(function (data) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\tvar projectIds = [];\n\t\t\t\tvar costCodeIds = [];\n\t\t\t\tdata.seconds.forEach(function (item) {\n\t\t\t\t\tif (sortBy === 10 && memberIds.indexOf(item.get('memberId')) === -1) {\n\t\t\t\t\t\tmemberIds.push(item.get('memberId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sortBy === 20 && !Ember.isNone(item.get('projectId')) && projectIds.indexOf(item.get('projectId')) === -1) {\n\t\t\t\t\t\tprojectIds.push(item.get('projectId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sortBy === 30 && !Ember.isNone(item.get('costCodeId')) && costCodeIds.indexOf(item.get('costCodeId')) === -1) {\n\t\t\t\t\t\tcostCodeIds.push(item.get('costCodeId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.findByIds('member', memberIds),\n\t\t\t\t\tprojects: _this.store.findByIds('project', projectIds),\n\t\t\t\t\tcostCodes: _this.store.findByIds('cost-code', costCodeIds),\n\t\t\t\t\tcost: data.cost,\n\t\t\t\t\tseconds: data.seconds\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\t\t\tvar sortBy = 'memberId';\n\t\t\tif (this.get('sortWithType') === 20) {\n\t\t\t\tsortBy = 'projectId';\n\t\t\t} else if (this.get('sortWithType') === 30) {\n\t\t\t\tsortBy = 'costCodeId';\n\t\t\t}\n\n\t\t\tvar ids = [];\n\t\t\tdata.seconds.forEach(function (model) {\n\t\t\t\tif (ids.indexOf(model.get(sortBy)) === -1) {\n\t\t\t\t\tvar member = null;\n\t\t\t\t\tif (_this.get('sortWithType') === 10) {\n\t\t\t\t\t\tmember = data.members.findBy('id', model.get('memberId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tvar project = null;\n\t\t\t\t\tif (_this.get('sortWithType') === 20) {\n\t\t\t\t\t\tproject = data.projects.findBy('id', model.get('projectId'));\n\t\t\t\t\t\tif (!Ember.isNone(project) && _this.get('projectId') === project.id) {\n\t\t\t\t\t\t\tproject.set('isParent', true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tproject.set('isParent', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar costCode = null;\n\t\t\t\t\tif (_this.get('sortWithType') === 30) {\n\t\t\t\t\t\tcostCode = data.costCodes.findBy('id', model.get('costCodeId'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// get hours and cost with the sortBy param from fetch()\n\t\t\t\t\tvar cost = data.cost.filterBy(sortBy, model.get(sortBy));\n\t\t\t\t\tvar seconds = data.seconds.filterBy(sortBy, model.get(sortBy));\n\n\t\t\t\t\t// add models to the collection\n\t\t\t\t\t_this.addCollection(seconds, cost, member, project, costCode);\n\n\t\t\t\t\tids.push(model.get(sortBy));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.set('content', this.get('content').sortBy('start'));\n\t\t},\n\n\n\t\ttotalSeconds: Ember.computed('model.@each.totalSeconds', function () {\n\t\t\tvar seconds = 0;\n\t\t\tif (!Ember.isEmpty(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tseconds += item.get('totalSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn seconds;\n\t\t}),\n\n\t\ttotalCost: Ember.computed('model.@each.totalCost', function () {\n\t\t\tvar cost = 0;\n\t\t\tif (!Ember.isEmpty(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\tcost += item.get('totalCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn cost;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/member-conflicts', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/time-card-conflicts', 'busy-app/utils/time-entry-validator'], function (exports, _utils, _timeCardConflicts, _timeEntryValidator) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar _MemberObject = Ember.Object.extend({\n\t\tmember: null,\n\t\tconflicts: null,\n\n\t\ttotalConflicts: Ember.computed('conflicts.length', function () {\n\t\t\treturn this.get('conflicts.length');\n\t\t}),\n\n\t\tconflictText: Ember.computed('totalConflicts', function () {\n\t\t\treturn this.get('totalConflicts') > 1 ? 'conflicts' : 'conflict';\n\t\t})\n\t});\n\n\t/**\n  * `Util/Model/Manager/MemberConflicts`\n  *\n  * @class MemberConflicts\n  * @namespace Utils.Models.Managers\n  * @extends Utils.Models.Managers.TimeCardConflicts\n  */\n\t/**\n  * @module Utils/Models/Managers\n  *\n  */\n\texports.default = _timeCardConflicts.default.extend({\n\t\tfetch: function fetch() {\n\t\t\treturn this._super.apply(this, arguments);\n\t\t},\n\t\tisInDay: function isInDay(entry, day) {\n\t\t\tif (entry.get('startTime') > day && entry.get('startTime') <= _utils.Time.date(day).endOf('day').unix()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tfilterEntriesByDay: function filterEntriesByDay(day, entries) {\n\t\t\tvar _this = this;\n\n\t\t\treturn entries.filter(function (item) {\n\t\t\t\tif (_this.isInDay(item, day)) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tfilterMembersByDay: function filterMembersByDay(day, members, entries) {\n\t\t\treturn members.filter(function (member) {\n\t\t\t\tvar entry = entries.findBy('memberId', member.id);\n\t\t\t\tif (!Ember.isNone(entry)) {\n\t\t\t\t\treturn member;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar days = [];\n\t\t\tdata.entries.sortBy('startTime').reverse().forEach(function (item) {\n\t\t\t\tvar day = _utils.Time.date(item.get('startTime')).startOf('day').unix();\n\t\t\t\tif (days.indexOf(day) === -1) {\n\t\t\t\t\tdays.push(day);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdays.forEach(function (day) {\n\t\t\t\tvar todayEntries = _this2.filterEntriesByDay(day, data.entries);\n\t\t\t\tvar todayMembers = _this2.filterMembersByDay(day, data.members, todayEntries);\n\t\t\t\tvar dayObject = Ember.Object.create({ day: day, members: [] });\n\t\t\t\ttodayMembers.forEach(function (member) {\n\t\t\t\t\tvar entries = todayEntries.filterBy('memberId', member.id).sortBy('createdOn');\n\t\t\t\t\tvar conflicts = _this2.checkConflict(entries);\n\t\t\t\t\tentries.forEach(function (entry) {\n\t\t\t\t\t\t_this2.setEntryData(entry, data);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (conflicts.length > 0) {\n\t\t\t\t\t\tvar memberObject = _MemberObject.create({ member: member, conflicts: conflicts });\n\t\t\t\t\t\tdayObject.get('members').pushObject(memberObject);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (dayObject.get('members.length')) {\n\t\t\t\t\t_this2.addCollection(dayObject);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tcheckConflict: function checkConflict(entries) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar conflicts = [];\n\t\t\tvar collections = [];\n\t\t\tentries.forEach(function (entry1) {\n\t\t\t\tentries.forEach(function (entry2) {\n\t\t\t\t\tif (conflicts.indexOf(entry1.id + entry2.id) === -1 && entry1.id !== entry2.id) {\n\t\t\t\t\t\tconflicts.push(entry1.id + entry2.id);\n\t\t\t\t\t\tconflicts.push(entry2.id + entry1.id);\n\t\t\t\t\t\tif (_timeEntryValidator.default.hasConflict(entry1, entry2)) {\n\t\t\t\t\t\t\tcollections.pushObject(_this3.createTimeCardConflict(entry1, entry2));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn collections;\n\t\t},\n\t\tcreateTimeCardConflict: function createTimeCardConflict() {\n\t\t\tvar collection = this.collectionFor('time-card-conflicts');\n\t\t\treturn collection.push.apply(collection, arguments);\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/payroll-basic-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\tshowProject: false,\n\t\tshowCostCode: false,\n\n\t\tfilename: Ember.computed('start', 'end', function () {\n\t\t\tvar start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n\t\t\tvar end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\t\t\treturn 'Payroll_Basic_' + start + '_to_' + end;\n\t\t}),\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('model.firstName', 'model.lastName', 'wageKey');\n\t\t},\n\n\n\t\tdataMap: Ember.computed(function () {\n\t\t\t// dataMap for the csv export key:val object where key is the path to a\n\t\t\t// data property and the val is the header title\n\t\t\tvar dataMap = {\n\t\t\t\t'model.memberNumber': 'Employee ID',\n\t\t\t\t'model.firstName': 'First Name',\n\t\t\t\t'model.lastName': 'Last Name',\n\t\t\t\t'wage': 'Wage',\n\t\t\t\t'wageType': 'Wage Type',\n\t\t\t\t'hours': 'Hours'\n\t\t\t};\n\t\t\treturn dataMap;\n\t\t}),\n\n\t\tfetch: function fetch(start, end) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tpayPeriod: this.dispatcherFor('member-pay-period').find(start, end),\n\t\t\t\ttimeOff: this.store.filter('time-off').findAllByRange(start, end)\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tdata.payPeriod.members.forEach(function (item) {\n\t\t\t\t_this.addCollection(item, data);\n\t\t\t});\n\t\t},\n\t\taddCollection: function addCollection(member, data) {\n\t\t\tvar collection = this.collectionFor().push(member);\n\n\t\t\tvar wage = data.payPeriod.wage.filterBy('memberId', member.id).sortBy('changeDate').reverse().objectAt(0);\n\t\t\tcollection.set('wageHistory', wage);\n\n\t\t\tvar seconds = data.payPeriod.seconds.findBy('memberId', member.id);\n\t\t\tcollection.set('seconds', seconds);\n\n\t\t\tvar cost = data.payPeriod.cost.findBy('memberId', member.id);\n\t\t\tcollection.set('cost', cost);\n\n\t\t\tvar timeOff = data.timeOff.filterBy('memberId', member.id);\n\t\t\tcollection.set('timeOff', timeOff);\n\n\t\t\tthis.buildObject(collection);\n\t\t},\n\t\tbuildObject: function buildObject(collection) {\n\t\t\tvar isHourly = collection.get('wageHistory.isHourly');\n\t\t\tvar wage = parseFloat(collection.get('wageHistory.effectiveRate'));\n\t\t\tvar grossWages = isHourly ? 'Hourly' : 'Salary';\n\n\t\t\tvar vacSeconds = 0;\n\t\t\tvar sicSeconds = 0;\n\t\t\tvar holSeconds = 0;\n\t\t\tvar ptoSeconds = 0;\n\t\t\tvar othSeconds = 0;\n\n\t\t\tcollection.set('grossWages', grossWages);\n\n\t\t\tif (isHourly) {\n\t\t\t\tvar regular = collection.get('seconds.totalRegularSeconds') || 0;\n\t\t\t\tif (regular > 0) {\n\t\t\t\t\t//Find time off seconds and types\n\t\t\t\t\t//Subtract from regular time\n\t\t\t\t\tcollection.timeOff.forEach(function (item) {\n\t\t\t\t\t\tvar type = item.get('type');\n\t\t\t\t\t\tvar seconds = 0;\n\n\t\t\t\t\t\tif (!Ember.isNone(item.get('seconds'))) {\n\t\t\t\t\t\t\tseconds = item.get('seconds');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (type === 10) {\n\t\t\t\t\t\t\tholSeconds += seconds;\n\t\t\t\t\t\t\tregular -= seconds;\n\t\t\t\t\t\t} else if (type === 20) {\n\t\t\t\t\t\t\tptoSeconds += seconds;\n\t\t\t\t\t\t\tregular -= seconds;\n\t\t\t\t\t\t} else if (type === 30) {\n\t\t\t\t\t\t\tsicSeconds += seconds;\n\t\t\t\t\t\t\tregular -= seconds;\n\t\t\t\t\t\t} else if (type === 40) {\n\t\t\t\t\t\t\tvacSeconds += seconds;\n\t\t\t\t\t\t\tregular -= seconds;\n\t\t\t\t\t\t} else if (type === 50) {\n\t\t\t\t\t\t\tothSeconds += seconds;\n\t\t\t\t\t\t\tregular -= seconds;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (regular > 0) {\n\t\t\t\t\t\tcollection.set('wage', wage.toFixed(2));\n\t\t\t\t\t\tcollection.set('wageType', 'REG');\n\t\t\t\t\t\tcollection.set('hours', (regular / 60 / 60).toFixed(2));\n\t\t\t\t\t\tcollection.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(collection);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (holSeconds > 0) {\n\t\t\t\t\t\tvar obj = this.copy(collection);\n\t\t\t\t\t\tobj.set('wage', wage.toFixed(2));\n\t\t\t\t\t\tobj.set('wageType', 'HOL');\n\t\t\t\t\t\tobj.set('hours', (holSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t\tobj.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(obj);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ptoSeconds > 0) {\n\t\t\t\t\t\tvar _obj = this.copy(collection);\n\t\t\t\t\t\t_obj.set('wage', wage.toFixed(2));\n\t\t\t\t\t\t_obj.set('wageType', 'PTO');\n\t\t\t\t\t\t_obj.set('hours', (ptoSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t\t_obj.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(_obj);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sicSeconds > 0) {\n\t\t\t\t\t\tvar _obj2 = this.copy(collection);\n\t\t\t\t\t\t_obj2.set('wage', wage.toFixed(2));\n\t\t\t\t\t\t_obj2.set('wageType', 'SIC');\n\t\t\t\t\t\t_obj2.set('hours', (sicSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t\t_obj2.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(_obj2);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (vacSeconds > 0) {\n\t\t\t\t\t\tvar _obj3 = this.copy(collection);\n\t\t\t\t\t\t_obj3.set('wage', wage.toFixed(2));\n\t\t\t\t\t\t_obj3.set('wageType', 'VAC');\n\t\t\t\t\t\t_obj3.set('hours', (vacSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t\t_obj3.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(_obj3);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (othSeconds > 0) {\n\t\t\t\t\t\tvar _obj4 = this.copy(collection);\n\t\t\t\t\t\t_obj4.set('wage', wage.toFixed(2));\n\t\t\t\t\t\t_obj4.set('wageType', 'OTH');\n\t\t\t\t\t\t_obj4.set('hours', (othSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t\t_obj4.set('wageKey', 1);\n\t\t\t\t\t\tthis.addInternalModel(_obj4);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar overtime = collection.get('seconds.totalOvertimeSeconds') || 0;\n\t\t\t\tif (overtime > 0) {\n\t\t\t\t\tvar otObject = this.copy(collection);\n\t\t\t\t\totObject.set('wage', (wage * 1.5).toFixed(2));\n\t\t\t\t\totObject.set('wageType', 'OT1');\n\t\t\t\t\totObject.set('hours', (overtime / 60 / 60).toFixed(2));\n\t\t\t\t\totObject.set('wageKey', 2);\n\t\t\t\t\tthis.addInternalModel(otObject);\n\t\t\t\t}\n\n\t\t\t\tvar doubletime = collection.get('seconds.totalDoubletimeSeconds') || 0;\n\t\t\t\tif (doubletime > 0) {\n\t\t\t\t\tvar dtObject = this.copy(collection);\n\t\t\t\t\tdtObject.set('wage', (wage * 2).toFixed(2));\n\t\t\t\t\tdtObject.set('wageType', 'OT2');\n\t\t\t\t\tdtObject.set('hours', (doubletime / 60 / 60).toFixed(2));\n\t\t\t\t\tdtObject.set('wageKey', 3);\n\t\t\t\t\tthis.addInternalModel(dtObject);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar total = collection.get('seconds.totalSeconds') || 0;\n\t\t\t\tcollection.timeOff.forEach(function (item) {\n\t\t\t\t\tvar type = item.get('type');\n\t\t\t\t\tvar seconds = 0;\n\t\t\t\t\tif (!Ember.isNone(item.get('seconds'))) {\n\t\t\t\t\t\tseconds = item.get('seconds');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (type === 10) {\n\t\t\t\t\t\tholSeconds += seconds;\n\t\t\t\t\t\ttotal -= seconds;\n\t\t\t\t\t} else if (type === 20) {\n\t\t\t\t\t\tptoSeconds += seconds;\n\t\t\t\t\t\ttotal -= seconds;\n\t\t\t\t\t} else if (type === 30) {\n\t\t\t\t\t\tsicSeconds += seconds;\n\t\t\t\t\t\ttotal -= seconds;\n\t\t\t\t\t} else if (type === 40) {\n\t\t\t\t\t\tvacSeconds += seconds;\n\t\t\t\t\t\ttotal -= seconds;\n\t\t\t\t\t} else if (type === 50) {\n\t\t\t\t\t\tothSeconds += seconds;\n\t\t\t\t\t\ttotal -= seconds;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (total >= 0) {\n\t\t\t\t\tcollection.set('wage', \"\");\n\t\t\t\t\tcollection.set('wageType', 'SAL');\n\t\t\t\t\tcollection.set('hours', (total / 60 / 60).toFixed(2));\n\t\t\t\t\tcollection.set('wageKey', 8);\n\t\t\t\t\tthis.addInternalModel(collection);\n\t\t\t\t}\n\n\t\t\t\tif (holSeconds > 0) {\n\t\t\t\t\tvar _obj5 = this.copy(collection);\n\t\t\t\t\t_obj5.set('wage', wage.toFixed(2));\n\t\t\t\t\t_obj5.set('wageType', 'SAL-HOL');\n\t\t\t\t\t_obj5.set('hours', (holSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t_obj5.set('wageKey', 1);\n\t\t\t\t\tthis.addInternalModel(_obj5);\n\t\t\t\t}\n\n\t\t\t\tif (ptoSeconds > 0) {\n\t\t\t\t\tvar _obj6 = this.copy(collection);\n\t\t\t\t\t_obj6.set('wage', wage.toFixed(2));\n\t\t\t\t\t_obj6.set('wageType', 'SAL-PTO');\n\t\t\t\t\t_obj6.set('hours', (ptoSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t_obj6.set('wageKey', 1);\n\t\t\t\t\tthis.addInternalModel(_obj6);\n\t\t\t\t}\n\n\t\t\t\tif (sicSeconds > 0) {\n\t\t\t\t\tvar _obj7 = this.copy(collection);\n\t\t\t\t\t_obj7.set('wage', wage.toFixed(2));\n\t\t\t\t\t_obj7.set('wageType', 'SAL-SIC');\n\t\t\t\t\t_obj7.set('hours', (sicSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t_obj7.set('wageKey', 1);\n\t\t\t\t\tthis.addInternalModel(_obj7);\n\t\t\t\t}\n\n\t\t\t\tif (vacSeconds > 0) {\n\t\t\t\t\tvar _obj8 = this.copy(collection);\n\t\t\t\t\t_obj8.set('wage', wage.toFixed(2));\n\t\t\t\t\t_obj8.set('wageType', 'SAL-VAC');\n\t\t\t\t\t_obj8.set('hours', (vacSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t_obj8.set('wageKey', 1);\n\t\t\t\t\tthis.addInternalModel(_obj8);\n\t\t\t\t}\n\n\t\t\t\tif (othSeconds > 0) {\n\t\t\t\t\tvar _obj9 = this.copy(collection);\n\t\t\t\t\t_obj9.set('wage', wage.toFixed(2));\n\t\t\t\t\t_obj9.set('wageType', 'SAL-OTH');\n\t\t\t\t\t_obj9.set('hours', (othSeconds / 60 / 60).toFixed(2));\n\t\t\t\t\t_obj9.set('wageKey', 1);\n\t\t\t\t\tthis.addInternalModel(_obj9);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcopy: function copy(collection) {\n\t\t\tvar _collection = this.collectionFor().push(collection.get('model'));\n\t\t\t_collection.set('wageHistory', collection.get('wageHistory'));\n\t\t\t_collection.set('seconds', collection.get('seconds'));\n\t\t\t_collection.set('cost', collection.get('cost'));\n\t\t\treturn _collection;\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/payroll-member-cost-code-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/payroll-member-csv'], function (exports, _utils, _payrollMemberCsv) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _payrollMemberCsv.default.extend({\n    showCostCode: true,\n\n    filename: Ember.computed('start', 'end', function () {\n      var start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n      var end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\n      return 'Payroll_Daily_By_Cost_Code_' + start + '_to_' + end;\n    }),\n\n    getSorted: function getSorted() {\n      return this.get('model').sortBy('time', 'member.fullName', 'wageTypeOrder', 'costCode.costCode');\n    }\n  });\n});","define('busy-app/utils/models/managers/payroll-member-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tshowProject: false,\n\t\tshowCostCode: false,\n\n\t\tfilename: Ember.computed('start', 'end', function () {\n\t\t\tvar start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n\t\t\tvar end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\n\t\t\treturn 'Payroll_Daily_' + start + '_to_' + end;\n\t\t}),\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('time', 'member.fullName', 'wageTypeOrder');\n\t\t},\n\n\n\t\tdataMap: Ember.computed(function () {\n\t\t\t// dataMap for the csv export key:val object where key is the path to a\n\t\t\t// data property and the val is the header title\n\t\t\tvar dataMap = {\n\t\t\t\t'time': 'Date',\n\t\t\t\t'member.memberNumber': 'Employee ID',\n\t\t\t\t'member.firstName': 'First Name',\n\t\t\t\t'member.lastName': 'Last Name',\n\t\t\t\t'wage': 'Wage',\n\t\t\t\t'wageType': 'Wage Type',\n\t\t\t\t'hours': 'Hours'\n\t\t\t};\n\n\t\t\tif (this.get('showProject') === true) {\n\t\t\t\tdataMap['customer'] = 'Customer';\n\t\t\t\tdataMap['projectNumber'] = 'Project #';\n\t\t\t\tdataMap['depth1'] = 'Project';\n\t\t\t\tdataMap['projectNumber2'] = 'Subproject 1 #';\n\t\t\t\tdataMap['depth2'] = 'Subproject 1';\n\t\t\t\tdataMap['projectNumber3'] = 'Subproject 2 #';\n\t\t\t\tdataMap['depth3'] = 'Subproject 2';\n\t\t\t\tdataMap['projectNumber4'] = 'Subproject 3 #';\n\t\t\t\tdataMap['depth4'] = 'Subproject 3';\n\t\t\t\tdataMap['projectNumber5'] = 'Subproject 4 #';\n\t\t\t\tdataMap['depth5'] = 'Subproject 4';\n\t\t\t\tdataMap['projectNumber6'] = 'Subproject 5 #';\n\t\t\t\tdataMap['depth6'] = 'Subproject 5';\n\t\t\t\tdataMap['projectNumber7'] = 'Subproject 6 #';\n\t\t\t\tdataMap['depth7'] = 'Subproject 6';\n\t\t\t}\n\n\t\t\tif (this.get('showCostCode') === true) {\n\t\t\t\tdataMap['costCode.costCode'] = 'Cost Code';\n\t\t\t\tdataMap['costCode.title'] = 'Cost Code Desc.';\n\t\t\t}\n\n\t\t\tdataMap['description'] = 'Description';\n\n\t\t\treturn dataMap;\n\t\t}),\n\n\t\tfetch: function fetch(start, end, memberId, projectId, costCodeId) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\treturn this.dispatcherFor('time-entry-segment').findAllByRange(start, end, memberId, projectId, costCodeId).then(function (data) {\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tsegmentData: data,\n\t\t\t\t\tmemberData: _this.dispatcherFor('member-pay-period').find(start, end)\n\t\t\t\t}).then(function (_data) {\n\t\t\t\t\t_data.memberData.members.forEach(function (item) {\n\t\t\t\t\t\tif (Ember.isNone(memberId) || memberId === item.id) {\n\t\t\t\t\t\t\tvar idx = _data.segmentData.members.indexOf(item);\n\t\t\t\t\t\t\tif (idx === -1) {\n\t\t\t\t\t\t\t\tvar entry = _this.store.createRecord('time-entry', {\n\t\t\t\t\t\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\t\t\t\t\t\tstartTime: _this.get('end'),\n\t\t\t\t\t\t\t\t\tendTime: _this.get('end'),\n\t\t\t\t\t\t\t\t\tmemberId: item.id\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tvar wages = _data.memberData.wage.filterBy('memberId', item.id);\n\t\t\t\t\t\t\t\tvar wage = _this.getWageHistory(wages, _this.get('start'));\n\t\t\t\t\t\t\t\titem.set('wages', wages);\n\t\t\t\t\t\t\t\titem.set('wage', wage);\n\n\t\t\t\t\t\t\t\t_data.segmentData.timeEntries.pushObject(entry);\n\t\t\t\t\t\t\t\t_data.segmentData.members.pushObject(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn _data.segmentData;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar entries = data.timeEntries.sortBy('startTime');\n\t\t\tvar timeOffEntries = data.timeOffEntries.sortBy('dateStamp');\n\n\t\t\tentries.forEach(function (item) {\n\t\t\t\t_this2.addCollection(item, data);\n\t\t\t});\n\n\t\t\ttimeOffEntries.forEach(function (item) {\n\t\t\t\t_this2.addCollection(item, data);\n\t\t\t});\n\n\t\t\tvar content = this.getSorted();\n\t\t\tthis.set('content', content);\n\t\t},\n\t\tgetWageHistory: function getWageHistory(wages, timestamp) {\n\t\t\t// sort wages\n\t\t\tvar _wages = wages.sortBy('changeDate');\n\n\t\t\tvar wage = _wages.objectAt(0);\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= timestamp) {\n\t\t\t\t\twage = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn wage;\n\t\t},\n\t\taddCollection: function addCollection(entry, data) {\n\t\t\tvar collection = this.collectionFor().push(entry);\n\n\t\t\tvar start = entry.get('startTime');\n\t\t\tif (!Ember.isNone(entry.get('dateStamp'))) {\n\t\t\t\tstart = _utils.Time.date(entry.get('dateStamp')).startOf('day').unix();\n\t\t\t}\n\n\t\t\tif (start < this.get('start')) {\n\t\t\t\tstart = this.get('start');\n\t\t\t}\n\n\t\t\tvar member = data.members.findBy('id', entry.get('memberId'));\n\t\t\tif (Ember.isNone(member)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (Ember.isNone(member.get('archivedOn')) || member.get('archivedOn') > this.get('start')) {\n\t\t\t\tcollection.set('member', member);\n\n\t\t\t\tif (this.get('showProject') && !Ember.isNone(entry.get('projectId'))) {\n\t\t\t\t\tcollection.set('project', entry.get('project'));\n\t\t\t\t\tthis.setProjectPath(collection, collection.get('project'));\n\t\t\t\t}\n\n\t\t\t\tif (this.get('showCostCode') && !Ember.isNone(entry.get('costCodeId'))) {\n\t\t\t\t\tcollection.set('costCode', entry.get('costCode'));\n\t\t\t\t}\n\n\t\t\t\tcollection.set('time', _utils.Time.date(start).format('MM/DD/YYYY'));\n\n\t\t\t\tthis.buildObject(collection);\n\t\t\t}\n\t\t},\n\t\tsetProjectPath: function setProjectPath(collection, project) {\n\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\tvar depth = project.get('depth');\n\n\t\t\t\tif (!Ember.isNone(depth)) {\n\t\t\t\t\tvar _collection$setProper;\n\n\t\t\t\t\tvar depthKey = '_depth' + depth;\n\t\t\t\t\tvar projectInfoKey = !Ember.isNone(depth) && depth === 1 ? 'projectInfo' : 'projectInfo' + depth;\n\t\t\t\t\tvar info = project.get('projectInfo');\n\n\t\t\t\t\tcollection.setProperties((_collection$setProper = {}, _defineProperty(_collection$setProper, depthKey, project), _defineProperty(_collection$setProper, projectInfoKey, info), _collection$setProper));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(project.get('parentProject'))) {\n\t\t\t\t\tthis.setProjectPath(collection, project.get('parentProject'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t// _setProjectPath(collection) {\n\t\t// \tconst fullPath = collection.get('project.fullTitle');\n\t\t// \tif (!isNone(fullPath) && !isEmpty(fullPath)) {\n\t\t// \t\tconst path = fullPath.split(' > ');\n\t\t//\n\t\t// \t\t$.each(path, function(key, val) {\n\t\t// \t\t\tif (path.hasOwnProperty(key)) {\n\t\t// \t\t\t\tcollection.set('_depth' + (key+1), val);\n\t\t// \t\t\t}\n\t\t// \t\t});\n\t\t// \t}\n\t\t// },\n\n\t\tbuildObject: function buildObject(collection) {\n\t\t\tvar _this3 = this;\n\n\t\t\tif (!Ember.isEmpty(collection.get('model.dateStamp'))) {\n\t\t\t\tvar regular = collection.get('model.segmentRegularSeconds');\n\t\t\t\tthis.addCollectionSeconds(collection, { regular: regular, overtime: 0, doubletime: 0, total: regular });\n\t\t\t} else if (!Ember.isEmpty(collection.get('model.segments'))) {\n\t\t\t\tcollection.get('model.segments').forEach(function (item) {\n\t\t\t\t\tvar start = _utils.Time.date(item.get('startTime')).startOf('day').unix();\n\t\t\t\t\tvar _collection = _this3.copy(collection);\n\n\t\t\t\t\t_collection.set('time', _utils.Time.date(start).format('MM/DD/YYYY'));\n\n\t\t\t\t\t_this3.addCollectionSeconds(_collection, {\n\t\t\t\t\t\tregular: item.get('regularSeconds'),\n\t\t\t\t\t\tovertime: item.get('overtimeSeconds'),\n\t\t\t\t\t\tdoubletime: item.get('doubletimeSeconds'),\n\t\t\t\t\t\ttotal: item.get('totalSeconds')\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.addCollectionSeconds(collection, { regular: 0, overtime: 0, doubletime: 0, total: 0 });\n\t\t\t}\n\t\t},\n\t\taddCollectionSeconds: function addCollectionSeconds(collection, seconds) {\n\t\t\tvar isHourly = collection.get('member.wage.isHourly');\n\t\t\tvar wage = parseFloat(collection.get('member.wage.effectiveRate'));\n\t\t\tvar grossWages = isHourly ? 'Hourly' : 'Salary';\n\n\t\t\tcollection.set('grossWages', grossWages);\n\n\t\t\tif (isHourly) {\n\t\t\t\tif (seconds.regular > 0) {\n\t\t\t\t\tvar type = collection.get('model.typeStringShort') || 'REG';\n\t\t\t\t\tvar typeOrder = 1;\n\t\t\t\t\tif (type !== 'REG') {\n\t\t\t\t\t\ttypeOrder = 4;\n\t\t\t\t\t}\n\n\t\t\t\t\tcollection.set('wage', wage.toFixed(2));\n\t\t\t\t\tcollection.set('wageType', type);\n\t\t\t\t\tcollection.set('wageTypeOrder', typeOrder);\n\t\t\t\t\tcollection.set('hours', (seconds.regular / 60 / 60).toFixed(2));\n\t\t\t\t\tcollection.set('wageKey', 1);\n\n\t\t\t\t\tthis.addInternalModel(collection);\n\t\t\t\t}\n\n\t\t\t\tif (seconds.overtime > 0) {\n\t\t\t\t\tvar otObject = this.copy(collection);\n\n\t\t\t\t\totObject.set('wage', (wage * 1.5).toFixed(2));\n\t\t\t\t\totObject.set('wageType', 'OT1');\n\t\t\t\t\totObject.set('wageTypeOrder', 2);\n\t\t\t\t\totObject.set('hours', (seconds.overtime / 60 / 60).toFixed(2));\n\t\t\t\t\totObject.set('wageKey', 2);\n\n\t\t\t\t\tthis.addInternalModel(otObject);\n\t\t\t\t}\n\n\t\t\t\tif (seconds.doubletime > 0) {\n\t\t\t\t\tvar dtObject = this.copy(collection);\n\n\t\t\t\t\tdtObject.set('wage', (wage * 2).toFixed(2));\n\t\t\t\t\tdtObject.set('wageType', 'OT2');\n\t\t\t\t\tdtObject.set('wageTypeOrder', 3);\n\t\t\t\t\tdtObject.set('hours', (seconds.doubletime / 60 / 60).toFixed(2));\n\t\t\t\t\tdtObject.set('wageKey', 3);\n\n\t\t\t\t\tthis.addInternalModel(dtObject);\n\t\t\t\t}\n\t\t\t} else if (seconds.total >= 0) {\n\t\t\t\tvar _type = ('SAL-' + (collection.get('model.typeStringShort') || '')).replace(/-$/, '');\n\t\t\t\tvar _typeOrder = 5;\n\t\t\t\tif (_type !== 'SAL') {\n\t\t\t\t\t_typeOrder = 6;\n\t\t\t\t}\n\n\t\t\t\tcollection.set('wage', \"\");\n\t\t\t\tcollection.set('wageType', _type);\n\t\t\t\tcollection.set('wageTypeOrder', _typeOrder);\n\t\t\t\tcollection.set('hours', (seconds.total / 60 / 60).toFixed(2));\n\t\t\t\tcollection.set('wageKey', 8);\n\n\t\t\t\tthis.addInternalModel(collection);\n\t\t\t}\n\t\t},\n\t\tcopy: function copy(collection) {\n\t\t\tvar _collection = this.collectionFor().push(collection.get('model'));\n\n\t\t\t_collection.set('member', collection.get('member'));\n\t\t\t_collection.set('project', collection.get('project'));\n\t\t\t_collection.set('costCode', collection.get('costCode'));\n\t\t\t_collection.set('projectInfo', collection.get('projectInfo'));\n\t\t\t_collection.set('time', collection.get('time'));\n\t\t\t_collection.set('grossWages', collection.get('grossWages'));\n\t\t\t_collection.set('_depth1', collection.get('_depth1'));\n\t\t\t_collection.set('_depth2', collection.get('_depth2'));\n\t\t\t_collection.set('_depth3', collection.get('_depth3'));\n\t\t\t_collection.set('_depth4', collection.get('_depth4'));\n\t\t\t_collection.set('_depth5', collection.get('_depth5'));\n\t\t\t_collection.set('_depth6', collection.get('_depth6'));\n\t\t\t_collection.set('_depth7', collection.get('_depth7'));\n\t\t\t_collection.set('projectInfo2', collection.get('projectInfo2'));\n\t\t\t_collection.set('projectInfo3', collection.get('projectInfo3'));\n\t\t\t_collection.set('projectInfo4', collection.get('projectInfo4'));\n\t\t\t_collection.set('projectInfo5', collection.get('projectInfo5'));\n\t\t\t_collection.set('projectInfo6', collection.get('projectInfo6'));\n\t\t\t_collection.set('projectInfo7', collection.get('projectInfo7'));\n\n\t\t\treturn _collection;\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/payroll-member-project-cost-code-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/payroll-member-csv'], function (exports, _utils, _payrollMemberCsv) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _payrollMemberCsv.default.extend({\n\t\tshowProject: true,\n\t\tshowCostCode: true,\n\n\t\tfilename: Ember.computed('start', 'end', function () {\n\t\t\tvar start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n\t\t\tvar end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\n\t\t\treturn 'Payroll_Daily_By_Project_Cost_Code_' + start + '_to_' + end;\n\t\t}),\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('time', 'member.fullName', 'wageTypeOrder', 'depth1Sort', 'depth2', 'depth3', 'depth4', 'depth5', 'depth6', 'depth7', 'costCode.costCode');\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/payroll-member-project-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/payroll-member-csv'], function (exports, _utils, _payrollMemberCsv) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = _payrollMemberCsv.default.extend({\n    showProject: true,\n\n    filename: Ember.computed('start', 'end', function () {\n      var start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n      var end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\n      return 'Payroll_Daily_By_Project_' + start + '_to_' + end;\n    }),\n\n    getSorted: function getSorted() {\n      return this.get('model').sortBy('time', 'member.fullName', 'wageTypeOrder', 'depth1Sort', 'depth2', 'depth3', 'depth4', 'depth5', 'depth6', 'depth7');\n    }\n  });\n});","define('busy-app/utils/models/managers/payroll-member-project', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/payroll-member'], function (exports, _utils, _payrollMember) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _payrollMember.default.extend({\n\t\tprojectId: null,\n\n\t\ttype: 'member-project',\n\n\t\ttitleString: 'Title',\n\t\ttypeString: 'Employee Project',\n\t\thasImage: false,\n\n\t\tfetch: function fetch(start, end, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('projectId', projectId);\n\n\t\t\t(true && !(!Ember.isNone(start)) && Ember.assert('You must provide a start {number} to PayrollMemberManager', !Ember.isNone(start)));\n\t\t\t(true && !(!Ember.isNone(end)) && Ember.assert('You must provide a end {number} to PayrollMemberManager', !Ember.isNone(end)));\n\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmemberData: this.store.dispatcher('member-pay-period').find(start, end),\n\t\t\t\tprojectData: this.store.dispatcher('project-pay-period').find(start, end, projectId)\n\t\t\t}).then(function (data) {\n\t\t\t\treturn {\n\t\t\t\t\tmemberCost: data.memberData.cost,\n\t\t\t\t\tmemberSeconds: data.memberData.seconds,\n\t\t\t\t\twageHistory: data.memberData.wage,\n\t\t\t\t\tprojectSeconds: data.projectData.seconds,\n\t\t\t\t\tprojectCost: data.projectData.cost,\n\t\t\t\t\tmembers: data.memberData.members,\n\t\t\t\t\tprojects: data.projectData.projects\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar members = data.members.sortBy('firstName', 'lastName');\n\t\t\tmembers.forEach(function (member) {\n\t\t\t\tif (Ember.isNone(member.get('archivedOn')) || member.get('archivedOn') > _this.get('start')) {\n\t\t\t\t\tvar seconds = data.projectSeconds.filterBy('memberId', member.id);\n\t\t\t\t\tvar cost = data.projectCost.filterBy('memberId', member.id);\n\t\t\t\t\tvar actualCost = data.memberCost.findBy('memberId', member.id);\n\t\t\t\t\tvar actualSeconds = data.memberSeconds.findBy('memberId', member.id);\n\t\t\t\t\tvar wage = _this.getWageHistory(data.wageHistory.filterBy('memberId', member.id), _this.get('start'));\n\n\t\t\t\t\tif (!Ember.isNone(actualSeconds) && actualSeconds.get('totalSeconds') > 0 || wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50) {\n\t\t\t\t\t\tvar memberData = _this.buildCostData(member, seconds, cost, actualSeconds, actualCost, wage, data.projects);\n\t\t\t\t\t\t_this.addInternalModel(memberData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tbuildCostData: function buildCostData(member, projectSeconds, projectCost, memberSeconds, memberCost, wage, projects) {\n\t\t\tvar PayrollMemberCollection = this.collectionFor('payroll-member');\n\t\t\tvar data = {\n\t\t\t\ttype: this.get('type'),\n\t\t\t\tid: member.get('id'),\n\t\t\t\tisModel: true,\n\t\t\t\tstartTime: this.get('start'),\n\t\t\t\tendTime: this.get('end'),\n\t\t\t\tmember: member, wage: wage, projectSeconds: projectSeconds, projectCost: projectCost, memberCost: memberCost, memberSeconds: memberSeconds\n\t\t\t};\n\n\t\t\tvar collection = PayrollMemberCollection.push(data);\n\t\t\tvar projectData = this.buildProjectData(projects, projectSeconds, projectCost, member, memberSeconds, memberCost, wage);\n\t\t\tcollection.set('projectData', projectData);\n\t\t\treturn collection;\n\t\t},\n\t\tbuildProjectData: function buildProjectData(projects, projectSeconds, projectCost, member, memberSeconds, memberCost, wage, depth) {\n\t\t\tvar _this2 = this;\n\n\t\t\tdepth = depth || 1;\n\t\t\tvar data = [];\n\t\t\tprojectSeconds.forEach(function (item) {\n\t\t\t\tvar project = projects.findBy('id', item.get('projectId'));\n\t\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\t\tproject.set('sortWeight', 1);\n\t\t\t\t} else {\n\t\t\t\t\tif (depth === 1) {\n\t\t\t\t\t\tproject = Ember.Object.create({\n\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\tisUnassigned: true,\n\t\t\t\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\t\t\tdepth: depth,\n\t\t\t\t\t\t\tsortWeight: 2\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(project) && project.get('depth') === depth) {\n\t\t\t\t\tvar seconds = projectSeconds.filterBy('projectId', project.id);\n\t\t\t\t\tvar cost = projectCost.filterBy('projectId', project.id);\n\t\t\t\t\tvar filtered = _this2.getChildProjects(projects, project.id);\n\t\t\t\t\tvar projectData = _this2.buildProjectCostData(project, seconds, cost, member, memberSeconds, memberCost, wage, filtered.length > 0);\n\n\t\t\t\t\tif (filtered.length > 0) {\n\t\t\t\t\t\tvar childProjectData = _this2.buildProjectData(filtered, projectSeconds, projectCost, member, memberSeconds, memberCost, wage, depth + 1);\n\t\t\t\t\t\tprojectData.set('projectData', childProjectData);\n\t\t\t\t\t\t_this2.addUnassigned(projectData, member, memberSeconds, memberCost, wage, project.id);\n\t\t\t\t\t}\n\t\t\t\t\tdata.pushObject(projectData);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn data.sortBy('project.sortWeight', 'project.title');\n\t\t},\n\t\tgetChildProjects: function getChildProjects(projects, projectId) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar filtered = projects;\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tfiltered = filtered.filterBy('parentProjectId', projectId);\n\t\t\t\tvar children = [];\n\t\t\t\tfiltered.forEach(function (item) {\n\t\t\t\t\titem.set('sortWeight', 1);\n\t\t\t\t\tchildren = children.concat(_this3.getChildProjects(projects, item.id));\n\t\t\t\t});\n\t\t\t\tfiltered = filtered.concat(children);\n\t\t\t}\n\t\t\treturn filtered;\n\t\t},\n\t\taddUnassigned: function addUnassigned(data, member, memberSeconds, memberCost, wage, parentProjectId) {\n\t\t\tdata.set('filterChildren', true);\n\t\t\tif (data.get('totalSeconds') > 0) {\n\t\t\t\tvar project = Ember.Object.create({\n\t\t\t\t\tid: null,\n\t\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\tisUnassigned: true,\n\t\t\t\t\tdepth: data.get('project.depth') + 1,\n\t\t\t\t\tparentProjectId: parentProjectId,\n\t\t\t\t\tsortWeight: 2\n\t\t\t\t});\n\n\t\t\t\tvar seconds = Ember.Object.create({\n\t\t\t\t\ttotalRegularSeconds: data.get('totalRegularSeconds'),\n\t\t\t\t\ttotalOvertimeSeconds: data.get('totalOvertimeSeconds'),\n\t\t\t\t\ttotalDoubletimeSeconds: data.get('totalDoubletimeSeconds'),\n\t\t\t\t\ttotalSeconds: data.get('totalSeconds')\n\t\t\t\t});\n\n\t\t\t\tvar cost = Ember.Object.create({\n\t\t\t\t\ttotalRegularCost: data.get('totalRegularCost'),\n\t\t\t\t\ttotalOvertimeCost: data.get('totalOvertimeCost'),\n\t\t\t\t\ttotalDoubletimeCost: data.get('totalDoubletimeCost'),\n\t\t\t\t\ttotalCost: data.get('totalCost')\n\t\t\t\t});\n\n\t\t\t\tvar projectData = this.buildProjectCostData(project, [seconds], [cost], member, memberSeconds, memberCost, wage, false);\n\t\t\t\tdata.get('projectData').pushObject(projectData);\n\t\t\t\tdata.set('hasUnassigned', true);\n\t\t\t}\n\t\t\tdata.set('filterChildren', false);\n\t\t},\n\t\tbuildProjectCostData: function buildProjectCostData(project, projectSeconds, projectCost, member, memberSeconds, memberCost, wage, hasChildren) {\n\t\t\tvar PayrollProjectCollection = this.collectionFor();\n\t\t\tvar data = {\n\t\t\t\ttype: this.get('type'),\n\t\t\t\tid: project.get('id'),\n\t\t\t\tisOpen: hasChildren,\n\t\t\t\tisModel: true,\n\t\t\t\tstartTime: this.get('start'),\n\t\t\t\tendTime: this.get('end'),\n\t\t\t\tproject: project, member: member, wage: wage, projectSeconds: projectSeconds, projectCost: projectCost, memberCost: memberCost, memberSeconds: memberSeconds\n\t\t\t};\n\t\t\treturn PayrollProjectCollection.push(data);\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/payroll-member', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\ttype: 'member',\n\t\ttitleString: 'Name',\n\t\ttypeString: 'Employee',\n\t\thasImage: true,\n\n\t\tfetch: function fetch(start, end) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\t(true && !(!Ember.isNone(start)) && Ember.assert('You must provide a start {number} to PayrollMemberManager', !Ember.isNone(start)));\n\t\t\t(true && !(!Ember.isNone(end)) && Ember.assert('You must provide a end {number} to PayrollMemberManager', !Ember.isNone(end)));\n\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\tmemberData: this.store.dispatcher('member-pay-period').find(start, end)\n\t\t\t}).then(function (data) {\n\t\t\t\treturn {\n\t\t\t\t\tmemberCost: data.memberData.cost,\n\t\t\t\t\tmemberSeconds: data.memberData.seconds,\n\t\t\t\t\twageHistory: data.memberData.wage,\n\t\t\t\t\tmembers: data.memberData.members\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar members = data.members.sortBy('firstName', 'lastName');\n\t\t\tmembers.forEach(function (member) {\n\t\t\t\tif (Ember.isNone(member.get('archivedOn')) || member.get('archivedOn') > _this.get('start')) {\n\t\t\t\t\tvar actualCost = data.memberCost.findBy('memberId', member.id);\n\t\t\t\t\tvar actualSeconds = data.memberSeconds.findBy('memberId', member.id);\n\t\t\t\t\tvar wage = _this.getWageHistory(data.wageHistory.filterBy('memberId', member.id), _this.get('start'));\n\t\t\t\t\tif (!Ember.isNone(actualSeconds) && actualSeconds.get('totalSeconds') > 0 || wage.get('wageRate') === 30 || wage.get('wageRate') === 40 || wage.get('wageRate') === 50) {\n\t\t\t\t\t\tvar memberData = _this.buildCostData(member, actualSeconds, actualCost, wage);\n\t\t\t\t\t\t_this.addInternalModel(memberData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tgetWageHistory: function getWageHistory(wages, timestamp) {\n\t\t\t// sort wages\n\t\t\tvar _wages = wages.sortBy('changeDate');\n\t\t\tvar wage = _wages.objectAt(0);\n\t\t\t_wages.forEach(function (item) {\n\t\t\t\tif (item.get('changeDate') > wage.get('changeDate') && item.get('changeDate') <= timestamp) {\n\t\t\t\t\twage = item;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn wage;\n\t\t},\n\t\tbuildCostData: function buildCostData(member, memberSeconds, memberCost, wage) {\n\t\t\tvar PayrollMemberCollection = this.collectionFor();\n\t\t\tvar data = {\n\t\t\t\ttype: this.get('type'),\n\t\t\t\tid: member.get('id'),\n\t\t\t\tisModel: true,\n\t\t\t\tstartTime: this.get('start'),\n\t\t\t\tendTime: this.get('end'),\n\t\t\t\tmember: member, wage: wage, memberCost: memberCost, memberSeconds: memberSeconds\n\t\t\t};\n\t\t\treturn PayrollMemberCollection.push(data);\n\t\t},\n\n\n\t\t/**\n   * Gets Estimated Hourly Cost for the given time period\n   * from all contents in content Array\n   * and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostHourly\n   * @returns int\n   */\n\t\testCostHourly: Ember.computed('model.@each.estCostHourly', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('estCostHourly');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Gets Estimated Salary Cost for the given time period\n   * from all contents in content Array who have a wage\n   * type of anything but hourly and adds them up and returns the total.\n   *\n   * @public\n   * @method estCostSalary\n   * @returns int\n   */\n\t\testCostSalary: Ember.computed('model.@each.estCostSalary', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('estCostSalary');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Gets Total Cost for payPeriod and converts it to a String\n   *\n   * @public\n   * @method totalCostString\n   */\n\t\ttotalCost: Ember.computed('model.@each.totalCost', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('totalCost');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('model.@each.totalSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('totalSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Calculates Total Time for the given Payperiod and converts it to a String\n   *\n   * @public\n   * @method totalTimeString\n   */\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalSeconds'));\n\t\t\treturn time.hours + ' hrs ' + time.minutes + ' mins';\n\t\t}),\n\n\t\tregularSeconds: Ember.computed('model.@each.memberRegularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('memberRegularSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Calculates Regular Time for the given Payperiod and converts it to a String\n   *\n   * @public\n   * @method regularTimeString\n   */\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('regularSeconds'));\n\t\t\treturn time.hours + ' hrs ' + time.minutes + ' mins';\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('model.@each.memberOvertimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('memberOvertimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Calculates Overtime for the given Payperiod and converts it to a String\n   *\n   * @public\n   * @method overtimeTimeString\n   */\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('overtimeSeconds'));\n\t\t\treturn time.hours + ' hrs ' + time.minutes + ' mins';\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('model.@each.memberDoubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tvar content = this.get('model');\n\t\t\tif (!Ember.isNone(content)) {\n\t\t\t\tcontent.forEach(function (item) {\n\t\t\t\t\ttotal += item.get('memberDoubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * Calculates Doubletime for the given Payperiod and converts it to a String\n   *\n   * @public\n   * @method doubletimeTimeString\n   */\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('doubletimeSeconds'));\n\t\t\treturn time.hours + ' hrs ' + time.minutes + ' mins';\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/quickbooks', ['exports', 'busy-app/utils/models/managers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\torganization: null,\n\n\t\tfetch: function fetch() {\n\t\t\tvar _this = this;\n\n\t\t\tvar orgId = this.get('organization.id');\n\t\t\tvar mappingMembers = [];\n\t\t\tthis.store.query('member', { organization_id: orgId, archived_on: '_-NULL-_' }).then(function (members) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\tmembers.forEach(function (member) {\n\t\t\t\t\tmemberIds.push(member.id);\n\t\t\t\t});\n\n\t\t\t\t_this.store.findWhereIn('member-connector', 'member_id', memberIds, { deleted_on: '_-NULL-_' }).then(function (memberConnectors) {\n\t\t\t\t\tmemberConnectors.forEach(function (connector) {\n\t\t\t\t\t\t_this.store.findRecord('member', connector.get('memberId')).then(function (member) {\n\t\t\t\t\t\t\tmember.set('connectorId', connector.id);\n\t\t\t\t\t\t\tmappingMembers.pushObject(member);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tEmber.RSVP.hash({ members: mappingMembers });\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/time-card-conflicts', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base', 'busy-app/utils/time-entry-validator', 'busy-app/utils/logger'], function (exports, _utils, _base, _timeEntryValidator, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tauth: Ember.inject.service(),\n\n\t\tstart: null,\n\t\tend: null,\n\t\tprojectId: null,\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('start').reverse();\n\t\t},\n\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfetch: function fetch(memberId, start, end, projectId, groupId) {\n\t\t\tvar _this = this;\n\n\t\t\tvar useGroupPermissionScoping = Ember.get(this, 'auth.useGroupPermissionScoping');\n\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('projectId', projectId);\n\n\t\t\tvar loadTimeEntries = void 0;\n\t\t\tvar params = {};\n\n\t\t\tif (!Ember.isNone(start)) {\n\t\t\t\tEmber.setProperties(params, { range_start: start });\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(end)) {\n\t\t\t\tEmber.setProperties(params, { range_end: end });\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(memberId)) {\n\t\t\t\tEmber.setProperties(params, { member_id: memberId });\n\t\t\t\tloadTimeEntries = function loadTimeEntries() {\n\t\t\t\t\treturn _this.store.query('time-entry-member-conflicts', params);\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tloadTimeEntries = function loadTimeEntries() {\n\t\t\t\t\treturn _this.store.query('time-entry-organization-conflicts', params);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntries: loadTimeEntries(),\n\t\t\t\tgroupMembers: this.loadScopedGroupMembers(useGroupPermissionScoping, groupId)\n\t\t\t}).then(function (_ref) {\n\t\t\t\tvar timeEntries = _ref.timeEntries,\n\t\t\t\t    groupMembers = _ref.groupMembers;\n\n\n\t\t\t\t// if the current user is restricted to group scoped permissions,\n\t\t\t\t// \tfilter out any members they shouldn't be able to access\n\t\t\t\tif (useGroupPermissionScoping || !Ember.isNone(groupId)) {\n\t\t\t\t\tvar groupMemberIds = new Set(groupMembers.mapBy('id'));\n\t\t\t\t\ttimeEntries = timeEntries.filter(function (entry) {\n\t\t\t\t\t\treturn groupMemberIds.has(Ember.get(entry, 'memberId'));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// const entries = this.removeModels(timeEntries);\n\t\t\t\tvar ids = [];\n\t\t\t\tvar projectIds = [];\n\t\t\t\tvar costCodeIds = [];\n\t\t\t\tvar equipmentIds = [];\n\t\t\t\tvar logIds = [];\n\t\t\t\tvar locationIds = [];\n\t\t\t\ttimeEntries.forEach(function (item) {\n\t\t\t\t\tif (ids.indexOf(item.get('memberId')) === -1) {\n\t\t\t\t\t\tids.push(item.get('memberId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('startLocationId')) && locationIds.indexOf(item.get('startLocationId')) === -1) {\n\t\t\t\t\t\tlocationIds.push(item.get('startLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('endLocationId')) && locationIds.indexOf(item.get('endLocationId')) === -1) {\n\t\t\t\t\t\tlocationIds.push(item.get('endLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('timeEntryBreaks'))) {\n\t\t\t\t\t\titem.get('timeEntryBreaks').forEach(function (breakItem) {\n\t\t\t\t\t\t\tif (!Ember.isNone(breakItem.get('startLocationId')) && locationIds.indexOf(breakItem.get('startLocationId')) === -1) {\n\t\t\t\t\t\t\t\tlocationIds.push(breakItem.get('startLocationId'));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!Ember.isNone(breakItem.get('endLocationId')) && locationIds.indexOf(breakItem.get('endLocationId')) === -1) {\n\t\t\t\t\t\t\t\tlocationIds.push(breakItem.get('endLocationId'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('projectId')) && projectIds.indexOf(item.get('projectId')) === -1) {\n\t\t\t\t\t\tprojectIds.push(item.get('projectId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('costCodeId')) && costCodeIds.indexOf(item.get('costCodeId')) === -1) {\n\t\t\t\t\t\tcostCodeIds.push(item.get('costCodeId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(item.get('equipmentId')) && equipmentIds.indexOf(item.get('equipmentId')) === -1) {\n\t\t\t\t\t\tequipmentIds.push(item.get('equipmentId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (logIds.indexOf(item.get('id')) === -1) {\n\t\t\t\t\t\tlogIds.push(item.get('id'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.findByIds('member', ids),\n\t\t\t\t\tlocations: _this.store.findByIds('member-location', locationIds),\n\t\t\t\t\tprojects: _this.store.filter('project').findFullProjects(projectIds),\n\t\t\t\t\tcostCodes: _this.store.findByIds('cost-code', costCodeIds),\n\t\t\t\t\tequipment: _this.store.findByIds('equipment', equipmentIds),\n\t\t\t\t\tlogs: _this.store.findWhereIn('client-time-entry-log', 'time_entry_id', logIds, { deleted_on: '_-NULL-_' }),\n\t\t\t\t\tentries: timeEntries\n\t\t\t\t}).then(function (extData) {\n\t\t\t\t\tvar creatorIds = [];\n\t\t\t\t\tvar creatorMap = {};\n\t\t\t\t\textData.logs.sortBy('createdOn').forEach(function (log) {\n\t\t\t\t\t\tif (!Ember.isNone(log.get('timeEntryId')) && creatorMap[log.get('timeEntryId')] === undefined) {\n\t\t\t\t\t\t\tvar _start = void 0,\n\t\t\t\t\t\t\t    _end = void 0,\n\t\t\t\t\t\t\t    startMember = void 0,\n\t\t\t\t\t\t\t    endMember = void 0;\n\t\t\t\t\t\t\tvar startChange = false;\n\t\t\t\t\t\t\tvar endChange = false;\n\t\t\t\t\t\t\tvar map = {};\n\t\t\t\t\t\t\tvar entryLogs = extData.logs.filterBy('timeEntryId', log.get('timeEntryId'));\n\n\t\t\t\t\t\t\tentryLogs.sortBy('createdOn').reverse().forEach(function (item) {\n\t\t\t\t\t\t\t\tif (!Ember.isNone(item.get('updaterMemberId'))) {\n\t\t\t\t\t\t\t\t\tvar startTime = _utils.Time.date(item.get('startTime')).startOf('minute').unix();\n\t\t\t\t\t\t\t\t\tvar endTime = !Ember.isNone(item.get('endTime')) ? _utils.Time.date(item.get('endTime')).startOf('minute').unix() : null;\n\n\t\t\t\t\t\t\t\t\tif (_start === undefined) {\n\t\t\t\t\t\t\t\t\t\t_start = startTime;\n\t\t\t\t\t\t\t\t\t\tstartMember = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t\tmap.startTime = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t} else if (!startChange && _start !== startTime) {\n\t\t\t\t\t\t\t\t\t\t_start = startTime;\n\t\t\t\t\t\t\t\t\t\tmap.startTime = startMember;\n\t\t\t\t\t\t\t\t\t\tstartChange = true;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tstartMember = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (!Ember.isNone(endTime)) {\n\t\t\t\t\t\t\t\t\t\tif (_end === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t_end = endTime;\n\t\t\t\t\t\t\t\t\t\t\tendMember = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t\t\tmap.endTime = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t\t} else if (!endChange && _end !== item.get('endTime')) {\n\t\t\t\t\t\t\t\t\t\t\t_end = endTime;\n\t\t\t\t\t\t\t\t\t\t\tmap.endTime = endMember;\n\t\t\t\t\t\t\t\t\t\t\tendChange = true;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tendMember = item.get('updaterMemberId');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (!Ember.isNone(map.startTime)) {\n\t\t\t\t\t\t\t\tif (!startChange) {\n\t\t\t\t\t\t\t\t\tmap.startTime = startMember;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (creatorIds.indexOf(map.startTime) === -1) {\n\t\t\t\t\t\t\t\t\tcreatorIds.push(map.startTime);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!Ember.isNone(map.endTime)) {\n\t\t\t\t\t\t\t\tif (!endChange) {\n\t\t\t\t\t\t\t\t\tmap.endTime = endMember;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (creatorIds.indexOf(map.endTime) === -1) {\n\t\t\t\t\t\t\t\t\tcreatorIds.push(map.endTime);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!Ember.isNone(map.startTime) || !Ember.isNone(map.endTime)) {\n\t\t\t\t\t\t\t\tcreatorMap[log.get('timeEntryId')] = map;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\t\tmembers: extData.members,\n\t\t\t\t\t\tlocations: extData.locations,\n\t\t\t\t\t\tprojects: extData.projects,\n\t\t\t\t\t\tcostCodes: extData.costCodes,\n\t\t\t\t\t\tequipment: extData.equipment,\n\t\t\t\t\t\tentries: extData.entries,\n\t\t\t\t\t\tcreatorMap: creatorMap,\n\t\t\t\t\t\tcreators: _this.store.findByIds('member', creatorIds)\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadScopedGroupMembers: function loadScopedGroupMembers(useGroupPermissionScoping, groupId) {\n\t\t\tif (!useGroupPermissionScoping && Ember.isNone(groupId)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\n\t\t\tvar query = {\n\t\t\t\tdeleted_on: null,\n\t\t\t\tarchived_on: null,\n\t\t\t\tmember_group_id: groupId\n\t\t\t};\n\n\t\t\tif (useGroupPermissionScoping) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(query, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(query, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.store.findAll('member', query);\n\t\t},\n\t\tremoveModels: function removeModels(data) {\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\t\t\tvar projectId = this.get('projectId');\n\t\t\tvar tooOldToEdit = _utils.Time.date().subtract(89, 'days').endOf('day').unix();\n\t\t\tvar ids = [];\n\t\t\tvar uniq = [];\n\n\t\t\tdata.forEach(function (model) {\n\t\t\t\tif (ids.indexOf(model.id) === -1 && Ember.isNone(model.get('deletedOn')) && model.get('startTime') > tooOldToEdit) {\n\t\t\t\t\tif (Ember.isNone(start) && Ember.isNone(end) && Ember.isNone(projectId)) {\n\t\t\t\t\t\tids.push(model.id);\n\t\t\t\t\t\tuniq.pushObject(model);\n\t\t\t\t\t} else if (Ember.isNone(projectId) && model.get('endTime') > start && model.get('startTime') < end) {\n\t\t\t\t\t\tids.pushObject(model.id);\n\t\t\t\t\t\tuniq.pushObject(model);\n\t\t\t\t\t} else if (Ember.isNone(start) && Ember.isNone(end) && model.get('projectId') === projectId) {\n\t\t\t\t\t\tids.push(model.id);\n\t\t\t\t\t\tuniq.pushObject(model);\n\t\t\t\t\t} else if (model.get('projectId') === projectId && model.get('endTime') > start && model.get('startTime') < end) {\n\t\t\t\t\t\tids.push(model.id);\n\t\t\t\t\t\tuniq.pushObject(model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn uniq;\n\t\t},\n\t\tsetEntryData: function setEntryData(entry, data) {\n\t\t\tentry.get('member');\n\t\t\tentry.get('project');\n\t\t\tentry.get('costCode');\n\t\t\tentry.get('equipment');\n\n\t\t\tif (!Ember.isNone(entry.get('startLocationId'))) {\n\t\t\t\tvar startLocation = data.locations.findBy('id', entry.get('startLocationId'));\n\t\t\t\tentry.set('startLocation', startLocation);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(entry.get('endLocationId'))) {\n\t\t\t\tvar endLocation = data.locations.findBy('id', entry.get('endLocationId'));\n\t\t\t\tentry.set('endLocation', endLocation);\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(entry.get('timeEntryBreaks'))) {\n\t\t\t\tentry.get('timeEntryBreaks').forEach(function (breakItem) {\n\t\t\t\t\tif (!Ember.isNone(breakItem.get('startLocationId'))) {\n\t\t\t\t\t\tvar breakStartLocation = data.locations.findBy('id', breakItem.get('startLocationId'));\n\t\t\t\t\t\tbreakItem.set('startLocation', breakStartLocation);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!Ember.isNone(breakItem.get('endLocationId'))) {\n\t\t\t\t\t\tvar breakEndLocation = data.locations.findBy('id', breakItem.get('endLocationId'));\n\t\t\t\t\t\tbreakItem.set('endLocation', breakEndLocation);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar creatorObj = data.creatorMap[entry.get('id')];\n\t\t\tif (!Ember.isNone(creatorObj)) {\n\t\t\t\tentry.set('startMember', data.creators.findBy('id', creatorObj.startTime));\n\t\t\t\tentry.set('endMember', data.creators.findBy('id', creatorObj.endTime));\n\t\t\t}\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar index = 0;\n\t\t\tvar entries = data.entries.sortBy('createdOn');\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\t_this2.setEntryData(entry, data);\n\t\t\t\tindex++;\n\t\t\t\t_this2.checkConflict(entry, entries, index);\n\t\t\t});\n\t\t},\n\t\tcheckConflict: function checkConflict(model, entries, currentIndex) {\n\t\t\tfor (var i = currentIndex; i < entries.get('length'); i++) {\n\t\t\t\tvar conflictModel = entries.objectAt(i);\n\t\t\t\tif (model.id !== conflictModel.id && model.get('memberId') === conflictModel.get('memberId')) {\n\t\t\t\t\tvar hasConflict = _timeEntryValidator.default.hasConflict(model, conflictModel);\n\t\t\t\t\tif (!hasConflict) {\n\t\t\t\t\t\t// this was double checking the data to see if the returned conflicts actually have conflicts\n\t\t\t\t\t\t// it shouldn't need to, and it was failing, so the check was changed to a warning\n\t\t\t\t\t\t// TODO: debug TimeEntryValidator.hasConflict()\n\t\t\t\t\t\t_logger.default.warn(this, 'Client cannot detect conflict reported by API', { model: model, conflictModel: conflictModel });\n\t\t\t\t\t}\n\t\t\t\t\tthis.createTimeCardConflict(model, conflictModel);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcreateTimeCardConflict: function createTimeCardConflict(model, conflictModel) {\n\t\t\tthis.addCollection(model, conflictModel);\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/time-card-report-csv', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\tmemberId: null,\n\t\tprojectId: null,\n\n\t\tshowProject: false,\n\t\tshowCostCode: false,\n\t\tshowEquipment: false,\n\n\t\thasCostCode: false,\n\t\thasEquipment: false,\n\n\t\tfilename: Ember.computed('start', 'end', function () {\n\t\t\tvar start = _utils.Time.date(this.get('start')).format('MM-DD-YY');\n\t\t\tvar end = _utils.Time.date(this.get('end')).format('MM-DD-YY');\n\t\t\treturn 'Time_Card_Report_' + start + '_to_' + end;\n\t\t}),\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('model.member.firstName', 'model.member.lastName', 'startTime', 'endTime');\n\t\t},\n\n\n\t\tdataMap: Ember.computed(function () {\n\t\t\t// dataMap for the csv export key:val object where key is the path to a\n\t\t\t// data property and the val is the header title\n\t\t\tvar dataMap = {\n\t\t\t\t'model.member.memberNumber': 'Employee ID',\n\t\t\t\t'model.member.firstName': 'First Name',\n\t\t\t\t'model.member.lastName': 'Last Name',\n\t\t\t\t'startTimeString': 'Start',\n\t\t\t\t'endTimeString': 'End',\n\t\t\t\t'breakTimeString': 'Break',\n\t\t\t\t'totalTimeString': 'Total',\n\t\t\t\t'customer': 'Customer',\n\t\t\t\t'projectNumber': 'Project #',\n\t\t\t\t'depth1.title': 'Project',\n\t\t\t\t'projectNumber2': 'Subproject 1 #',\n\t\t\t\t'depth2.title': 'Subproject 1',\n\t\t\t\t'projectNumber3': 'Subproject 2 #',\n\t\t\t\t'depth3.title': 'Subproject 2',\n\t\t\t\t'projectNumber4': 'Subproject 3 #',\n\t\t\t\t'depth4.title': 'Subproject 3',\n\t\t\t\t'projectNumber5': 'Subproject 4 #',\n\t\t\t\t'depth5.title': 'Subproject 4',\n\t\t\t\t'projectNumber6': 'Subproject 5 #',\n\t\t\t\t'depth6.title': 'Subproject 5',\n\t\t\t\t'projectNumber7': 'Subproject 6 #',\n\t\t\t\t'depth7.title': 'Subproject 6'\n\t\t\t};\n\n\t\t\tif (this.get('hasCostCode')) {\n\t\t\t\tdataMap['model.costCode.costCode'] = 'Cost Code';\n\t\t\t\tdataMap['model.costCode.title'] = 'Cost Code Desc.';\n\t\t\t}\n\n\t\t\tif (this.get('hasEquipment')) {\n\t\t\t\tdataMap['model.equipment.fullName'] = 'Equipment';\n\t\t\t}\n\n\t\t\tdataMap['model.description'] = 'Description';\n\n\t\t\treturn dataMap;\n\t\t}),\n\n\t\tfetch: function fetch(start, end, memberId, projectId) {\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('memberId', memberId);\n\t\t\tthis.set('projectId', projectId);\n\n\t\t\treturn this.dispatcherFor('time-entry').findByDateRange(start, end, memberId, projectId);\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tdata.timeEntries.forEach(function (item) {\n\t\t\t\t_this.set('hasCostCode', !Ember.isNone(item.get('costCode')));\n\t\t\t\t_this.set('hasEquipment', !Ember.isNone(item.get('equipment')));\n\t\t\t\t_this.addCollection(item);\n\t\t\t});\n\n\t\t\tdata.timeOffEntries.forEach(function (item) {\n\t\t\t\treturn _this.addCollection(item);\n\t\t\t});\n\t\t},\n\t\taddCollection: function addCollection(model) {\n\t\t\tvar collection = this.collectionFor().push(model);\n\t\t\tcollection.set('start', this.get('start'));\n\t\t\tcollection.set('end', this.get('end'));\n\n\t\t\tthis.setProjectPath(collection, model.get('project'));\n\t\t\tthis.addInternalModel(collection);\n\t\t},\n\t\tsetProjectPath: function setProjectPath(collection, project) {\n\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\tvar depth = project.get('depth');\n\n\t\t\t\tif (!Ember.isNone(depth)) {\n\t\t\t\t\tvar _collection$setProper;\n\n\t\t\t\t\tvar depthKey = 'depth' + depth;\n\t\t\t\t\tvar projectInfoKey = !Ember.isNone(depth) && depth === 1 ? 'projectInfo' : 'projectInfo' + depth;\n\t\t\t\t\tvar info = project.get('projectInfo');\n\n\t\t\t\t\tcollection.setProperties((_collection$setProper = {}, _defineProperty(_collection$setProper, depthKey, project), _defineProperty(_collection$setProper, projectInfoKey, info), _collection$setProper));\n\t\t\t\t}\n\n\t\t\t\tif (!Ember.isNone(project.get('parentProject'))) {\n\t\t\t\t\tthis.setProjectPath(collection, project.get('parentProject'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_setProjectPath: function _setProjectPath(collection) {\n\t\t\tvar fullPath = collection.get('model.project.fullTitle');\n\t\t\tif (!Ember.isNone(fullPath) && !Ember.isEmpty(fullPath)) {\n\t\t\t\tvar path = fullPath.split(' > ');\n\t\t\t\tEmber.$.each(path, function (key, val) {\n\t\t\t\t\tif (path.hasOwnProperty(key)) {\n\t\t\t\t\t\tcollection.set('depth' + (key + 1), val);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/time-card-report', ['exports', 'busy-app/utils/models/managers/time-entry-report'], function (exports, _timeEntryReport) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _timeEntryReport.default.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfetch: function fetch(start, end, memberId, projectId, costCodeId, equipmentId) {\n\t\t\tvar exclusive = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n\t\t\tvar sortOrder = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 'desc';\n\t\t\t(true && !(sortOrder === 'desc' || sortOrder === 'asc') && Ember.assert('sortOrder must be a String [desc | asc]', sortOrder === 'desc' || sortOrder === 'asc'));\n\n\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('sortOrder', sortOrder);\n\n\t\t\treturn this.dispatcherFor('time-entry-segment').findAllByMemberRange(start, end, memberId, projectId, costCodeId, equipmentId, exclusive);\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/time-entry-day', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/time-entry-range'], function (exports, _utils, _timeEntryRange) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _timeEntryRange.default.extend({\n\t\taddCollection: function addCollection(model, start, day) {\n\t\t\tvar prev = this.get('model').findBy('day', day);\n\t\t\tif (!Ember.isNone(prev)) {\n\t\t\t\tprev.get('model').unshiftObject(model);\n\t\t\t} else {\n\t\t\t\tthis._super(model, start, day);\n\t\t\t}\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('_rangeItems', []);\n\t\t\tvar entries = data.entries.sortBy('startTime');\n\t\t\tentries.forEach(function (model) {\n\t\t\t\t_this.checkConflict(model, entries);\n\t\t\t\t_this.splitEntries(model);\n\t\t\t});\n\n\t\t\tvar rangeItems = this.get('_rangeItems').sortBy('start');\n\t\t\trangeItems.forEach(function (model) {\n\t\t\t\tvar day = model.get('dayString');\n\t\t\t\tvar date = model.get('start');\n\t\t\t\t_this.addCollection(model, date, day);\n\t\t\t});\n\t\t\tthis.set('content', this.get('content').sortBy('start').reverse());\n\t\t},\n\n\n\t\t_rangeItems: null,\n\t\tsplitEntries: function splitEntries(model) {\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tvar startTime = _utils.Time.date(model.get('startTime')).startOf('day').unix();\n\t\t\tif (startTime < start) {\n\t\t\t\tstartTime = start;\n\t\t\t}\n\n\t\t\tvar endTime = _utils.Time.date(model.get('endTime')).endOf('day').unix();\n\t\t\tif (endTime > end) {\n\t\t\t\tendTime = end;\n\t\t\t}\n\n\t\t\twhile (startTime < endTime) {\n\t\t\t\tvar endDay = _utils.Time.date(startTime).endOf('day').unix() + 1;\n\t\t\t\tvar collection = this.collectionFor('time-entry-range');\n\t\t\t\tvar _collection = collection.push(model, startTime, endDay);\n\t\t\t\tthis.get('_rangeItems').pushObject(_collection);\n\t\t\t\tstartTime = _utils.Time.date(startTime).add(1, 'days').unix();\n\t\t\t}\n\t\t},\n\n\n\t\ttotalTime: Ember.computed('model.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds') + item.get('overtimeSeconds') + item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/time-entry-log', ['exports', 'busy-app/utils/models/managers/base'], function (exports, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model');\n\t\t},\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @return {promise}\n   */\n\t\tfetch: function fetch(timeEntryId) {\n\t\t\tvar _this = this;\n\n\t\t\treturn Ember.RSVP.hash({\n\t\t\t\ttimeEntryLog: this.store.query('client-time-entry-log', { time_entry_id: timeEntryId }),\n\t\t\t\ttimeEntryBreakLog: this.store.query('client-time-entry-break-log', { time_entry_id: timeEntryId })\n\t\t\t}).then(function (data) {\n\t\t\t\tvar ids = [];\n\t\t\t\tvar memberIds = [];\n\t\t\t\tdata.timeEntryLog.forEach(function (model) {\n\t\t\t\t\tif (memberIds.indexOf(model.get('memberId')) === -1) {\n\t\t\t\t\t\tmemberIds.push(model.get('memberId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ids.indexOf(model.get('startLocationId')) === -1 && !Ember.isNone(model.get('startLocationId'))) {\n\t\t\t\t\t\tids.push(model.get('startLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ids.indexOf(model.get('endLocationId')) === -1 && !Ember.isNone(model.get('endLocationId'))) {\n\t\t\t\t\t\tids.push(model.get('endLocationId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tdata.timeEntryBreakLog.forEach(function (entryBreak) {\n\t\t\t\t\tif (ids.indexOf(entryBreak.get('startLocationId')) === -1 && !Ember.isNone(entryBreak.get('startLocationId'))) {\n\t\t\t\t\t\tids.push(entryBreak.get('startLocationId'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ids.indexOf(entryBreak.get('endLocationId')) === -1 && !Ember.isNone(entryBreak.get('endLocationId'))) {\n\t\t\t\t\t\tids.push(entryBreak.get('endLocationId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.findByIds('member', memberIds),\n\t\t\t\t\tlocations: _this.store.findByIds('member-location', ids)\n\t\t\t\t}).then(function (meta) {\n\t\t\t\t\tdata.timeEntryBreakLog.forEach(function (entryBreak) {\n\n\t\t\t\t\t\t// only gather start location for break start action types\n\t\t\t\t\t\tif ([10, 11].indexOf(entryBreak.get('actionType')) !== -1) {\n\t\t\t\t\t\t\tvar startLocation = meta.locations.findBy('id', entryBreak.get('startLocationId'));\n\t\t\t\t\t\t\tentryBreak.set('startLocation', startLocation);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// only gather end location for break end action types\n\t\t\t\t\t\tif ([20, 21].indexOf(entryBreak.get('actionType')) !== -1) {\n\t\t\t\t\t\t\tvar endLocation = meta.locations.findBy('id', entryBreak.get('endLocationId'));\n\t\t\t\t\t\t\tentryBreak.set('endLocation', endLocation);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar timeEntry = data.timeEntryLog.findBy('id', entryBreak.get('clientTimeEntryLogId'));\n\t\t\t\t\t\tentryBreak.set('timeEntry', timeEntry);\n\t\t\t\t\t});\n\n\t\t\t\t\tdata.timeEntryLog.forEach(function (entry) {\n\t\t\t\t\t\t// only gather start location for clock in action types\n\t\t\t\t\t\tif ([10, 11, 30, 31].indexOf(entry.get('actionType')) !== -1) {\n\t\t\t\t\t\t\tvar startLocation = meta.locations.findBy('id', entry.get('startLocationId'));\n\t\t\t\t\t\t\tentry.set('startLocation', startLocation);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// only gather end location for clock out action types\n\t\t\t\t\t\tif ([20, 21, 40, 41].indexOf(entry.get('actionType')) !== -1) {\n\t\t\t\t\t\t\tvar endLocation = meta.locations.findBy('id', entry.get('endLocationId'));\n\t\t\t\t\t\t\tentry.set('endLocation', endLocation);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar member = meta.members.findBy('id', entry.get('memberId'));\n\t\t\t\t\t\tentry.set('member', member);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar entries = data.timeEntryLog.sortBy('createdOn');\n\t\t\tentries.forEach(function (model) {\n\t\t\t\tvar breaks = _this2.getBreaks(data.timeEntryBreakLog, model);\n\n\t\t\t\t// set breaks for the collection data and timeEntryBreaks for maps and templates\n\t\t\t\tmodel.set('breaks', breaks);\n\t\t\t\tmodel.set('timeEntryBreaks', breaks);\n\n\t\t\t\tif (Ember.isNone(model.get('originalTimeEntryId')) || model.get('timeEntryId') === model.get('originalTimeEntryId')) {\n\t\t\t\t\tvar prevModel = _this2.getPrevState(entries, model);\n\n\t\t\t\t\t// get merged entry state\n\t\t\t\t\tvar mergedEntry = _this2.getMergeState(entries, model);\n\n\t\t\t\t\t// add to the collection\n\t\t\t\t\t_this2.addCollection(model, prevModel, mergedEntry);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tgetMergeState: function getMergeState(entries, model) {\n\t\t\tvar mergedEntry = null;\n\t\t\tif (!Ember.isNone(model.get('mergedTimeEntryId')) && model.get('actionType') === 80) {\n\t\t\t\t// more than one merged log can be in the new logs\n\t\t\t\tvar mEntry = entries.filterBy('originalTimeEntryId', model.get('mergedTimeEntryId'));\n\t\t\t\tif (!Ember.isEmpty(mEntry)) {\n\t\t\t\t\t// the last merged entry log should be the last state of\n\t\t\t\t\t// the merged entry.\n\t\t\t\t\tmergedEntry = mEntry.get('lastObject');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn mergedEntry;\n\t\t},\n\t\tgetPrevState: function getPrevState(entries, model) {\n\t\t\tvar previousIndex = entries.indexOf(model) - 1;\n\t\t\tvar prevModel = null;\n\t\t\tif (previousIndex >= 0) {\n\t\t\t\tvar prev = entries.objectAt(previousIndex);\n\t\t\t\tif (prev.get('timeEntryId') === prev.get('originalTimeEntryId')) {\n\t\t\t\t\tprevModel = prev;\n\t\t\t\t} else {\n\t\t\t\t\tprevModel = this.getPrevState(entries, prev);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn prevModel;\n\t\t},\n\t\tgetBreaks: function getBreaks(breakEntries, model) {\n\t\t\tvar modelBreaks = breakEntries.filterBy('clientTimeEntryLogId', model.get('id'));\n\t\t\tvar breaks = breakEntries.filter(function (item) {\n\t\t\t\t// return all breaks that are linked to the entry log\n\t\t\t\tif (model.get('id') === item.get('clientTimeEntryLogId')) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar modelBreak = modelBreaks.findBy('timeEntryBreakId', item.get('timeEntryBreakId'));\n\t\t\t\treturn model.get('createdOn') >= item.get('createdOn') && Ember.isNone(modelBreak);\n\t\t\t});\n\t\t\treturn breaks;\n\t\t},\n\t\toldGetBreaks: function oldGetBreaks(breakEntries, entries, model) {\n\t\t\tvar breaks = [];\n\t\t\tvar ids = [];\n\t\t\tvar isMergedEntry = Ember.isNone(model.get('originalTimeEntryId')) || model.get('timeEntryId') !== model.get('originalTimeEntryId');\n\n\t\t\t// loop through the list of entries from newest to oldest\n\t\t\t// so any breaks found that are deleted will not be added to the list of\n\t\t\t// last state breaks\n\t\t\tvar list = entries.sortBy('createdOn').reverse();\n\t\t\tvar modelIndex = list.indexOf(model);\n\n\t\t\tlist = list.slice(modelIndex);\n\t\t\tlist.forEach(function (item) {\n\t\t\t\t// find breaks for only merged or only unmerged entries so breaks dont get mixed\n\t\t\t\t// in the log entries.\n\t\t\t\tvar isMerged = Ember.isNone(item.get('originalTimeEntryId')) || item.get('timeEntryId') !== item.get('originalTimeEntryId');\n\t\t\t\tif (isMergedEntry === isMerged) {\n\t\t\t\t\tvar breakLogs = breakEntries.filterBy('clientTimeEntryLogId', item.id);\n\t\t\t\t\tbreakLogs.forEach(function (breakItem) {\n\t\t\t\t\t\tif (ids.indexOf(breakItem.get('timeEntryBreakId')) === -1) {\n\t\t\t\t\t\t\tbreaks.pushObject(breakItem);\n\n\t\t\t\t\t\t\t// store the id even when deletedOn is set\n\t\t\t\t\t\t\t// so it wont get added later\n\t\t\t\t\t\t\tids.push(breakItem.get('timeEntryBreakId'));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn breaks;\n\t\t}\n\t});\n});","define('busy-app/utils/models/managers/time-entry-pto-day', ['exports', 'busy-app/utils/models/managers/time-entry-pto-range', '@busy-web/utils'], function (exports, _timeEntryPtoRange, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _timeEntryPtoRange.default.extend({\n\t\taddCollection: function addCollection(model, start, day) {\n\t\t\tvar prev = this.get('model').findBy('day', day);\n\t\t\tif (!Ember.isNone(prev)) {\n\t\t\t\tprev.get('model').unshiftObject(model);\n\t\t\t} else {\n\t\t\t\tthis._super(model, start, day);\n\t\t\t}\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('_rangeItems', []);\n\n\t\t\tvar entries = data.timeEntries.sortBy('startTime');\n\t\t\tentries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.checkConflict(model, entries);\n\t\t\t\t_this.splitEntries(model);\n\t\t\t});\n\n\t\t\tdata.timeOffEntries.sortBy('dateStamp').forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\n\t\t\t\tvar startTime = _utils.Time.date(model.get('dateStamp')).startOf('day').unix();\n\t\t\t\tvar endTime = _utils.Time.date(model.get('dateStamp')).endOf('day').unix();\n\t\t\t\t_this.addRangeCollection(model, startTime, endTime, false);\n\t\t\t});\n\n\t\t\tvar openEntries = data.openTimeEntries.sortBy('startTime');\n\t\t\topenEntries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.splitEntries(model, false);\n\t\t\t});\n\n\t\t\tthis.getRangeCollections().forEach(function (model) {\n\t\t\t\tvar day = model.get('dayString');\n\t\t\t\tvar date = model.get('start');\n\n\t\t\t\t_this.addCollection(model, date, day);\n\t\t\t});\n\n\t\t\tthis.set('content', this.getSorted());\n\t\t},\n\t\tsplitEntries: function splitEntries(model) {\n\t\t\tvar includeSegments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tvar startTime = model.get('startTime');\n\t\t\tstartTime = _utils.Time.date(startTime).startOf('day').unix();\n\t\t\tstartTime = startTime < start ? start : startTime;\n\n\t\t\tvar endTime = model.get('endTime') || _utils.Time.timestamp();\n\t\t\tendTime = _utils.Time.date(endTime).endOf('day').unix();\n\t\t\tendTime = endTime > end ? end : endTime;\n\n\t\t\twhile (startTime < endTime) {\n\t\t\t\tvar endDay = _utils.Time.date(startTime).endOf('day').unix() + 1;\n\t\t\t\tthis.addRangeCollection(model, startTime, endDay, includeSegments);\n\t\t\t\tstartTime = _utils.Time.date(startTime).add(1, 'days').unix();\n\t\t\t}\n\t\t},\n\t\tgetRangeCollections: function getRangeCollections() {\n\t\t\tvar rangeItems = this.get('_rangeItems').sortBy('model.startTime', 'model.endTime');\n\t\t\tif (this.get('sortOrder') === 'asc') {\n\t\t\t\trangeItems = rangeItems.reverse();\n\t\t\t}\n\t\t\treturn rangeItems;\n\t\t},\n\t\taddRangeCollection: function addRangeCollection(model, startTime, endTime, includeSegments) {\n\t\t\tif (Ember.isEmpty(this.get('_rangeItems'))) {\n\t\t\t\tthis.set('_rangeItems', []);\n\t\t\t}\n\t\t\tvar CollectionClass = this.collectionFor('time-entry-pto-range');\n\t\t\tthis.get('_rangeItems').pushObject(CollectionClass.push(model, startTime, endTime, includeSegments));\n\t\t},\n\n\n\t\ttotalTime: Ember.computed('model.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds') + item.get('overtimeSeconds') + item.get('doubletimeSeconds') + item.get('timeOffSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/time-entry-pto-range', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base', 'busy-app/utils/time-entry-validator'], function (exports, _utils, _base, _timeEntryValidator) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\t\tsortOrder: 'desc',\n\n\t\tgetSorted: function getSorted() {\n\t\t\tvar sorted = this.get('model').sortBy('start');\n\t\t\tif (this.get('sortOrder') === 'desc') {\n\t\t\t\tsorted = sorted.reverse();\n\t\t\t}\n\t\t\treturn sorted;\n\t\t},\n\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfetch: function fetch(start, end, memberId, projectId, costCodeId, equipmentId, exclusive, sortOrder) {\n\t\t\tsortOrder = !Ember.isNone(sortOrder) ? sortOrder : 'desc';\n\t\t\texclusive = !Ember.isNone(exclusive) ? exclusive : false;\n\n\t\t\t(true && !(sortOrder === 'desc' || sortOrder === 'asc') && Ember.assert('sortOrder must be a String [desc | asc]', sortOrder === 'desc' || sortOrder === 'asc'));\n\n\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\t\t\tthis.set('sortOrder', sortOrder);\n\n\t\t\treturn this.dispatcherFor('time-entry-segment').findAllByRange(start, end, memberId, projectId, costCodeId, equipmentId, exclusive);\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tvar entries = data.timeEntries.sortBy('startTime');\n\t\t\tentries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.checkConflict(model, entries);\n\t\t\t\t_this.addCollection(model, start, end);\n\t\t\t});\n\n\t\t\tvar timeOffEntries = data.timeOffEntries.sortBy('dateStamp');\n\t\t\ttimeOffEntries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.addCollection(model, start, end, false);\n\t\t\t});\n\n\t\t\tvar openEntries = data.openTimeEntries.sortBy('startTime');\n\t\t\topenEntries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.addCollection(model, start, end);\n\t\t\t});\n\n\t\t\tthis.set('content', this.get('content').sortBy('sortTime'));\n\t\t},\n\t\tcheckConflict: function checkConflict(model, entries) {\n\t\t\tmodel.set('hasConflict', false);\n\t\t\tentries.forEach(function (conflictModel) {\n\t\t\t\tif (model.id !== conflictModel.id && model.get('memberId') === conflictModel.get('memberId')) {\n\t\t\t\t\tif (_timeEntryValidator.default.hasConflict(model, conflictModel)) {\n\t\t\t\t\t\tmodel.set('hasConflict', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\ttotalSeconds: Ember.computed('model.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds') + item.get('overtimeSeconds') + item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * totalTimeString is the total time calculated from the time entry segments using\n   * the regularSeconds, overtimeSeconds, and doubletimeSeconds\n   *\n   */\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('totalSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tregularSeconds: Ember.computed('model.@each.{regularSeconds,timeOffSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * regularTimeString is the regulartime calculated from the time entry segments\n   *\n   */\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('regularSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('model.@each.overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * overtimeTimeString is the overtime calculated from the time entry segments\n   *\n   */\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('overtimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('model.@each.doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * doubletimeTimeString is the doubletime calculated from the time entry segments\n   *\n   */\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('doubletimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tbreaktimeSeconds: Ember.computed('model.@each.breaktimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('breaktimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * breakTimeString is the break time calculated from the time entries\n   *\n   */\n\t\tbreakTimeString: Ember.computed('breaktimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('breaktimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/time-entry-range', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base', 'busy-app/utils/time-entry-validator'], function (exports, _utils, _base, _timeEntryValidator) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\texports.default = _base.default.extend({\n\t\tstart: null,\n\t\tend: null,\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('start').reverse();\n\t\t},\n\n\n\t\t/**\n   * fetches the data for a time-entry by range.\n   *\n   * @public\n   * @method fetch\n   * @param start {number} Required timestamp for the start of the range.\n   * @param end {number} Required timestamp for the end of the range.\n   * @param memberId {string} Optional id to filter by a member.\n   * @param projectId {string} Optional param to filter by a top level project and its children.\n   * @param costCodeId {string} Optional param to filter by a cost code.\n   * @param exclusive {boolean} Default false, true will force the filter by projectId to disinclude children.\n   * @return {promise}\n   */\n\t\tfetch: function fetch() {\n\t\t\tvar start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\t\tvar end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\t\tvar memberId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\t\t\tvar projectId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\t\t\tvar costCodeId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\t\t\tvar equipmentId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n\t\t\tvar exclusive = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n\n\t\t\tvar options = start;\n\t\t\tif (Ember.isNone(options) || (typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object') {\n\t\t\t\toptions = {\n\t\t\t\t\tstart: start, end: end, memberId: memberId, projectId: projectId, costCodeId: costCodeId, equipmentId: equipmentId, exclusive: exclusive,\n\t\t\t\t\tdisableTimeOff: false,\n\t\t\t\t\tdisableOpenEntry: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.set('start', options.start);\n\t\t\tthis.set('end', options.end);\n\n\t\t\treturn this.dispatcherFor('time-entry-segment').findAllByRange(options);\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar start = this.get('start');\n\t\t\tvar end = this.get('end');\n\n\t\t\tvar entries = data.timeEntries.sortBy('startTime');\n\t\t\tentries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.checkConflict(model, entries);\n\t\t\t\t_this.addCollection(model, start, end);\n\t\t\t});\n\n\t\t\tthis.set('content', this.get('content').sortBy('start'));\n\t\t},\n\t\tcheckConflict: function checkConflict(model, entries) {\n\t\t\tmodel.set('hasConflict', false);\n\t\t\tentries.forEach(function (conflictModel) {\n\t\t\t\tif (model.id !== conflictModel.id && model.get('memberId') === conflictModel.get('memberId')) {\n\t\t\t\t\tif (_timeEntryValidator.default.hasConflict(model, conflictModel)) {\n\t\t\t\t\t\tmodel.set('hasConflict', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\ttotalSeconds: Ember.computed('model.@each.{regularSeconds,overtimeSeconds,doubletimeSeconds}', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds') + item.get('overtimeSeconds') + item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * totalTimeString is the total time calculated from the time entry segments using\n   * the regularSeconds, overtimeSeconds, and doubletimeSeconds\n   *\n   */\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('totalSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tregularSeconds: Ember.computed('model.@each.regularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('regularSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * regularTimeString is the regulartime calculated from the time entry segments\n   *\n   */\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('regularSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('model.@each.overtimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('overtimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * overtimeTimeString is the overtime calculated from the time entry segments\n   *\n   */\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('overtimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('model.@each.doubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('doubletimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * doubletimeTimeString is the doubletime calculated from the time entry segments\n   *\n   */\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('doubletimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t}),\n\n\t\tbreaktimeSeconds: Ember.computed('model.@each.breaktimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\t\ttotal += item.get('breaktimeSeconds');\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn total;\n\t\t}),\n\n\t\t/**\n   * breakTimeString is the break time calculated from the time entries\n   *\n   */\n\t\tbreakTimeString: Ember.computed('breaktimeSeconds', function () {\n\t\t\tvar timeObj = _utils.Time.convertSeconds(this.get('breaktimeSeconds'), true);\n\t\t\treturn timeObj.hours + ':' + timeObj.minutes;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/time-entry-report', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/time-entry-pto-day'], function (exports, _utils, _timeEntryPtoDay) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _timeEntryPtoDay.default.extend({\n\t\tfeatures: Ember.inject.service('features'),\n\n\t\thasOpenTime: false,\n\n\t\taddCollection: function addCollection(model, days, projects) {\n\t\t\tvar collection = this.collectionFor().push(model, days, projects, this.get('start'), this.get('end'));\n\t\t\tthis.get('content').pushObject(collection);\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('_rangeItems', []);\n\n\t\t\t// build the time entry list\n\t\t\tvar sortedEntries = data.timeEntries.sortBy('startTime', 'endTime');\n\t\t\tsortedEntries.forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\t\t\t\t_this.checkConflict(model, sortedEntries);\n\t\t\t\t_this.splitEntries(model);\n\t\t\t});\n\n\t\t\t// add timeoff to the time entry list\n\t\t\tdata.timeOffEntries.sortBy('dateStamp').forEach(function (model) {\n\t\t\t\tmodel.set('member', data.members.findBy('id', model.get('memberId')));\n\n\t\t\t\tvar startTime = _utils.Time.date(model.get('dateStamp')).startOf('day').unix();\n\t\t\t\tvar endTime = _utils.Time.date(model.get('dateStamp')).endOf('day').unix();\n\n\t\t\t\t_this.addRangeCollection(model, startTime, endTime, false);\n\t\t\t});\n\n\t\t\tthis.set('hasOpenTime', data.openTimeEntries.get('length') > 0);\n\n\t\t\t// sort time entries list by member\n\t\t\tdata.members.sortBy('fullName').forEach(function (member) {\n\t\t\t\tvar projectData = [];\n\t\t\t\tvar days = [];\n\n\t\t\t\t// get member time entries sorted by start and end time and reverse the order for desc. list\n\t\t\t\tvar collections = _this.get('_rangeItems').filterBy('model.memberId', member.id).sortBy('model.startTime', 'model.endTime');\n\t\t\t\tif (collections && collections[0]) {\n\t\t\t\t\tif (_this.get('sortOrder') === 'desc') {\n\t\t\t\t\t\tcollections = collections.reverse();\n\t\t\t\t\t}\n\n\t\t\t\t\t// build the member time entry list\n\t\t\t\t\tcollections.forEach(function (model) {\n\t\t\t\t\t\tvar projectId = model.get('model.projectId');\n\t\t\t\t\t\tvar project = model.get('model.project');\n\t\t\t\t\t\tif (Ember.isNone(projectId)) {\n\t\t\t\t\t\t\tprojectId = '_-NULL-_';\n\t\t\t\t\t\t\tproject = Ember.Object.create({\n\t\t\t\t\t\t\t\tid: '_-NULL-_',\n\t\t\t\t\t\t\t\ttitle: (0, _utils.loc)('Unassigned'),\n\t\t\t\t\t\t\t\tfullTitle: (0, _utils.loc)('Unassigned')\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar prevProj = projectData.findBy('id', projectId);\n\t\t\t\t\t\tif (!Ember.isNone(prevProj)) {\n\t\t\t\t\t\t\tprevProj.get('model').pushObject(model);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tprojectData.pushObject(_this.collectionFor('time-entry-project').push([model], projectId, project));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar day = model.get('dayString');\n\t\t\t\t\t\tvar date = model.get('start');\n\n\t\t\t\t\t\tvar prev = days.findBy('day', day);\n\t\t\t\t\t\tif (!Ember.isNone(prev)) {\n\t\t\t\t\t\t\tprev.get('model').pushObject(model);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdays.pushObject(_this.collectionFor('time-entry-pto-day').push(model, date, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t_this.addCollection(member, days, projectData.sortBy('project.fullTitle'));\n\t\t\t});\n\t\t},\n\n\n\t\tregularSeconds: Ember.computed('model.@each.projectDataRegularSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('projectDataRegularSeconds') || 0;\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\tregularTimeString: Ember.computed('regularSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('regularSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tovertimeSeconds: Ember.computed('model.@each.projectDataOvertimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('projectDataOvertimeSeconds') || 0;\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\tovertimeTimeString: Ember.computed('overtimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('overtimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\tdoubletimeSeconds: Ember.computed('model.@each.projectDataDoubletimeSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('projectDataDoubletimeSeconds') || 0;\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\tdoubletimeTimeString: Ember.computed('doubletimeSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('doubletimeSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t}),\n\n\t\ttotalPTOSeconds: Ember.computed('model.@each.totalPTOSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('totalPTOSeconds');\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\tregularHoursWorked: Ember.computed('model.@each.regularHoursWorked', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('regularHoursWorked');\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalSeconds: Ember.computed('model.@each.projectDataTotalSeconds', function () {\n\t\t\tvar total = 0;\n\t\t\tthis.get('model').forEach(function (item) {\n\t\t\t\ttotal += item.get('projectDataTotalSeconds') || 0;\n\t\t\t});\n\t\t\treturn total;\n\t\t}),\n\n\t\ttotalTimeString: Ember.computed('totalSeconds', function () {\n\t\t\tvar time = _utils.Time.convertSeconds(this.get('totalSeconds'), true);\n\t\t\treturn time.hours + ':' + time.minutes;\n\t\t})\n\t});\n});","define('busy-app/utils/models/managers/time-off-report', ['exports', '@busy-web/utils', 'busy-app/utils/models/managers/base'], function (exports, _utils, _base) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _base.default.extend({\n\t\taccess: Ember.inject.service('access'),\n\t\tauth: Ember.inject.service('auth'),\n\t\tstart: null,\n\t\tend: null,\n\n\t\tgetSorted: function getSorted() {\n\t\t\treturn this.get('model').sortBy('start').reverse();\n\t\t},\n\t\tfetch: function fetch(start, end) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('start', start);\n\t\t\tthis.set('end', end);\n\n\t\t\tvar query = {\n\t\t\t\t_gte: { date_stamp: start },\n\t\t\t\t_lte: { date_stamp: end },\n\t\t\t\t_asc: ['date_stamp']\n\t\t\t};\n\n\t\t\tvar membersQuery = {};\n\t\t\tif (Ember.get(this, 'auth.useGroupPermissionScoping')) {\n\t\t\t\tvar authMember = Ember.get(this, 'auth.member');\n\n\t\t\t\tvar _EmberGetProperties = Ember.getProperties(authMember, ['id', 'memberGroupId']),\n\t\t\t\t    id = _EmberGetProperties.id,\n\t\t\t\t    memberGroupId = _EmberGetProperties.memberGroupId;\n\n\t\t\t\tEmber.setProperties(membersQuery, { member_group_id: memberGroupId });\n\n\t\t\t\tif (Ember.isNone(memberGroupId)) {\n\t\t\t\t\tEmber.setProperties(membersQuery, { id: id });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.store.findAll('time-off', query).then(function (timeOff) {\n\t\t\t\tvar memberIds = [];\n\t\t\t\ttimeOff.forEach(function (entry) {\n\t\t\t\t\tif (memberIds.indexOf(entry.get('memberId')) === -1) {\n\t\t\t\t\t\tmemberIds.push(entry.get('memberId'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t_this.set('entries', timeOff);\n\n\t\t\t\treturn Ember.RSVP.hash({\n\t\t\t\t\tmembers: _this.store.findByIds('member', memberIds, membersQuery),\n\t\t\t\t\tentries: timeOff,\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: end\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tbuildCollections: function buildCollections(data) {\n\t\t\tvar _this2 = this;\n\n\t\t\tdata.members.forEach(function (member) {\n\t\t\t\tvar memberEntries = data.entries.filterBy('memberId', member.id);\n\t\t\t\tvar access = _this2.get('access');\n\t\t\t\tif (access.canTakeActionFor('manageTimeEntries', member)) {\n\t\t\t\t\tif (memberEntries.get('length') > 0) {\n\t\t\t\t\t\t_this2.addCollection(memberEntries, member);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.set('model', this.get('model').sortBy('member.fullName'));\n\t\t},\n\n\n\t\tdateRangeString: Ember.computed('start', 'end', function () {\n\t\t\tvar date = '';\n\t\t\tif (!Ember.isNone(this.get('start')) && !Ember.isNone(this.get('end'))) {\n\t\t\t\tdate = _utils.Time.timeFormat(this.get('start'), 'MMM D') + ' - ' + _utils.Time.timeFormat(this.get('end'), 'MMM D, YYYY');\n\t\t\t}\n\t\t\treturn date;\n\t\t}),\n\n\t\ttotalPaidTime: Ember.computed('model.@each.totalSeconds', function () {\n\t\t\treturn this.get('model').mapBy('totalSeconds').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t});\n\t\t}),\n\n\t\ttotalDaysUnpaid: Ember.computed('module.@each.totalDaysUnpaid', function () {\n\t\t\treturn this.get('model').mapBy('totalDaysUnpaid').reduce(function (a, b) {\n\t\t\t\treturn a + b;\n\t\t\t});\n\t\t})\n\t});\n});","define('busy-app/utils/models/socket', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\t/***/\n\t/**\n  * @module Utils/Models\n  *\n  */\n\tvar kMaxInterval = 60;\n\tvar kMinInterval = 15;\n\n\t/**\n  * `Util/Model/Socket`\n  *\n  * @class Socket\n  * @namespace Utils.Models\n  * @extends EmberObject\n  */\n\texports.default = Ember.Object.extend(Ember.Evented, {\n\t\ttype: null,\n\t\tmodelType: null,\n\t\tqueryParams: null,\n\n\t\t_interval: null,\n\n\t\tlastSync: null,\n\t\tsyncTime: null,\n\n\t\t_lastModelState: null,\n\n\t\tquery: function query(modelType, _query) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.set('type', 'query');\n\t\t\tthis.set('modelType', modelType);\n\t\t\tthis.set('queryParams', _query);\n\t\t\tthis.scheduleSync();\n\n\t\t\tthis.store.query(modelType, _query).then(function (res) {\n\t\t\t\t_this.sync(res);\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\tfindRecord: function findRecord(modelType, id) {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.set('type', 'query');\n\t\t\tthis.set('modelType', modelType);\n\t\t\tthis.set('queryParams', id);\n\t\t\tthis.scheduleSync();\n\n\t\t\tthis.store.query(modelType, id).then(function (res) {\n\t\t\t\t_this2.sync(res);\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\tthen: function then(callback) {\n\t\t\tthis.on('sync', callback);\n\t\t\treturn this;\n\t\t},\n\t\tupdate: function update() {\n\t\t\tvar shouldUpdate = this.shouldUpdate;\n\t\t\tif (Ember.isNone(shouldUpdate) || typeof shouldUpdate === 'function' && this.shouldUpdate()) {\n\t\t\t\tvar method = this.get('type');\n\t\t\t\tvar modelType = this.get('modelType');\n\t\t\t\tvar queryParams = this.get('queryParams');\n\t\t\t\tthis[method].call(this, modelType, queryParams);\n\t\t\t} else {\n\t\t\t\tthis.scheduleSync();\n\t\t\t}\n\t\t},\n\t\tsync: function sync(data) {\n\t\t\tvar isUpdated = true;\n\t\t\tif (isUpdated) {\n\t\t\t\tthis.set('lastSync', _utils.Time.timestamp());\n\t\t\t\tthis.set('_lastModelState', data);\n\t\t\t\tthis.trigger('sync', data, this);\n\t\t\t}\n\t\t},\n\t\tvalidateData: function validateData(data) {\n\t\t\tvar savedData = this.get('_lastModelState');\n\t\t\tvar isValid = false;\n\t\t\tif ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n\t\t\t\tif ((typeof savedData === 'undefined' ? 'undefined' : _typeof(savedData)) === 'object') {\n\t\t\t\t\tif (typeof Ember.get(data, 'content.length') === 'number') {\n\t\t\t\t\t\tif (Ember.get(data, 'content.length') === Ember.get(savedData, 'content.length')) {\n\t\t\t\t\t\t\tdata.forEach(function (item, key) {\n\t\t\t\t\t\t\t\tif (item.get('updatedOn') !== savedData.objectAt(key).get('updatedOn')) {\n\t\t\t\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (typeof Ember.get(data, 'id') === 'string') {\n\t\t\t\t\t\tif (Ember.get(data, 'updatedOn') !== Ember.get(savedData, 'updatedOn')) {\n\t\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisValid = true;\n\t\t\t\t}\n\t\t\t} else if ((typeof savedData === 'undefined' ? 'undefined' : _typeof(savedData)) === 'object') {\n\t\t\t\tisValid = true;\n\t\t\t}\n\t\t\treturn isValid;\n\t\t},\n\t\tscheduleSync: function scheduleSync() {\n\t\t\tthis.clearInterval();\n\t\t\tvar time = _utils.Time.timestamp();\n\t\t\tvar timeSince = Math.round((time - this.get('lastSync')) / 60) * 5;\n\n\t\t\tvar timeToWait = kMinInterval + timeSince;\n\t\t\tif (timeToWait > kMaxInterval) {\n\t\t\t\ttimeToWait = kMaxInterval;\n\t\t\t}\n\n\t\t\tthis.set('syncTime', timeToWait);\n\t\t\tthis.interval(kMinInterval);\n\t\t},\n\t\tdestroy: function destroy() {\n\t\t\tthis.clearInterval();\n\t\t\tthis.set('savedData', null);\n\t\t},\n\t\tclearInterval: function clearInterval() {\n\t\t\tvar curInterval = this.get('_interval');\n\t\t\tif (!Ember.isNone(curInterval)) {\n\t\t\t\twindow.clearTimeout(curInterval);\n\t\t\t\tthis.set('_interval', null);\n\t\t\t}\n\t\t},\n\t\tinterval: function interval(time) {\n\t\t\tvar _this3 = this;\n\n\t\t\tif (Ember.isNone(this.get('_interval'))) {\n\t\t\t\tvar interval = window.setTimeout(function () {\n\t\t\t\t\t_this3.update();\n\t\t\t\t}, time * 1000);\n\t\t\t\tthis.set('_interval', interval);\n\t\t\t}\n\t\t}\n\t});\n});","define('busy-app/utils/organization/overtime-period', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.getOvertimePeriodByDate = exports.weekStartForPeriod = exports.createOvertimeBoundWeekForPeriod = exports.createOvertimeBoundWeek = undefined;\n\tvar createOvertimeBoundWeek = exports.createOvertimeBoundWeek = function createOvertimeBoundWeek(overtimePeriods, time) {\n\t\tvar period = getOvertimePeriodByDate(overtimePeriods, time);\n\n\t\treturn createOvertimeBoundWeekForPeriod(period, time);\n\t}; /**\n     * @module Utils.Organization\n     *\n     */\n\tvar createOvertimeBoundWeekForPeriod = exports.createOvertimeBoundWeekForPeriod = function createOvertimeBoundWeekForPeriod(period, time) {\n\t\tvar overtimeDay = weekStartForPeriod(period);\n\t\tvar startDay = _utils.Time.date(time).startOf('day').day();\n\t\tvar diff = overtimeDay - startDay;\n\n\t\tvar start = _utils.Time.date(time).add(diff, 'days').startOf('day').unix();\n\t\tif (time < start) {\n\t\t\tstart = _utils.Time.date(start).subtract(7, 'days').unix();\n\t\t}\n\n\t\tvar end = _utils.Time.date(start).add(6, 'days').endOf('day').unix();\n\t\treturn { start: start, end: end };\n\t};\n\n\tvar weekStartForPeriod = exports.weekStartForPeriod = function weekStartForPeriod(period) {\n\t\tvar overtimeDay = 0;\n\t\tif (!Ember.isNone(period)) {\n\t\t\tovertimeDay = _utils.Time.date(Ember.get(period, 'startTime')).day();\n\t\t}\n\t\treturn overtimeDay;\n\t};\n\n\tvar getOvertimePeriodByDate = exports.getOvertimePeriodByDate = function getOvertimePeriodByDate(overtimePeriods, timestamp) {\n\t\t// return default null value if overtimePeriods is undefined\n\t\tif (Ember.isNone(overtimePeriods)) return null;\n\n\t\t// convert overtime periods to normal array\n\t\tif (overtimePeriods.toArray) {\n\t\t\tovertimePeriods = overtimePeriods.toArray();\n\t\t}\n\n\t\t// return overtime period for the timestamp\n\t\tif (!Ember.isEmpty(overtimePeriods) && Array.isArray(overtimePeriods)) {\n\t\t\treturn overtimePeriods.find(function (p) {\n\t\t\t\treturn p.get('startTime') <= timestamp;\n\t\t\t});\n\t\t}\n\n\t\t// return null if overtimePeriods was not an array\n\t\treturn null;\n\t};\n});","define('busy-app/utils/organization/pay-period', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.getPayPeriod = exports.getPayPeriodRange = exports.getPayPeriodDateRange = undefined;\n\n\n  /**\n   * Pay period generation tools\n   *\n   */\n\n  /**\n   * @module Utils\n   *\n   */\n  var getPayPeriodDateRange = exports.getPayPeriodDateRange = function getPayPeriodDateRange(payPeriodDefs, start, end, excludeEnd) {\n    excludeEnd = excludeEnd !== undefined ? excludeEnd : false;\n\n    var timestamp = start;\n    var def = getPayPeriodDef(payPeriodDefs, timestamp);\n    var nextDef = getNextPayPeriodDef(payPeriodDefs, timestamp);\n\n    var payPeriods = [];\n\n    while (timestamp >= end) {\n      var payPeriod = getPayPeriodByDefinition(timestamp, def, nextDef);\n\n      timestamp = __createEndDate(payPeriod.start).subtract(1, 'days').unix();\n\n      if (timestamp < end && excludeEnd === true) {\n        break;\n      }\n\n      payPeriods.push(payPeriod);\n\n      if (timestamp < Ember.get(def, 'startDate')) {\n        nextDef = def;\n        def = getPayPeriodDef(payPeriodDefs, timestamp);\n      }\n\n      if (Ember.isNone(def)) {\n        break;\n      }\n    }\n    return payPeriods;\n  };\n\n  /**\n   * Generates a list of pay periods from the timestamp provided\n   * back to the number of periods asked for.\n   *\n   * @public\n   * @method getPayPeriodRange\n   * @param timestamp {number} start time for generating the periods\n   * @param periods {number} number of periods to genrate\n   * @return {array}\n   */\n  var getPayPeriodRange = exports.getPayPeriodRange = function getPayPeriodRange(payPeriodDefs, timestamp, periods) {\n    timestamp = timestamp || _utils.Time.timestamp();\n\n    var def = getPayPeriodDef(payPeriodDefs, timestamp);\n    var nextDef = getNextPayPeriodDef(payPeriodDefs, timestamp);\n\n    var payPeriods = [];\n\n    for (var i = 0; i < periods && timestamp > 0; i++) {\n      var payPeriod = getPayPeriodByDefinition(timestamp, def, nextDef);\n\n      timestamp = __createEndDate(payPeriod.start).subtract(1, 'days').unix();\n\n      payPeriods.push(payPeriod);\n\n      if (timestamp < Ember.get(def, 'startDate')) {\n        nextDef = def;\n        def = getPayPeriodDef(payPeriodDefs, timestamp);\n      }\n    }\n    return payPeriods;\n  };\n\n  /**\n   * Gets a single payperiod that the timestamp fits within\n   *\n   * @public\n   * @method getPayPeriod\n   * @param timestamp {number}\n   * @return {object} The payPeriod Object\n   */\n  var getPayPeriod = exports.getPayPeriod = function getPayPeriod(payPeriodDefs, timestamp) {\n    var def = getPayPeriodDef(payPeriodDefs, timestamp);\n    var nextDef = getNextPayPeriodDef(payPeriodDefs, timestamp);\n    return getPayPeriodByDefinition(timestamp, def, nextDef);\n  };\n\n  /**\n   * Method to get a single pay period that can be called\n   * by getPayPeriod or getPayPeriodRange\n   *\n   * @private\n   * @method _getPayPeriod\n   * @param timestamp {number}\n   * @param def {DS.Model} organizationPayPeriod model object\n   * @param nextDef {DS.Model} organizationPayPeriod model object\n   * @return {object} PayPeriod Object\n   */\n  var getPayPeriodByDefinition = function getPayPeriodByDefinition(timestamp, def, nextDef) {\n    var type = parseInt(Ember.get(def, 'payPeriodType'), 10);\n    timestamp = timestamp || _utils.Time.timestamp();\n\n    // get the startDate and endDate from the definition and next definition.\n    // if the nextDefinition does not exist then make up a date some time in\n    // the future.\n    var start = Ember.get(def, 'startDate');\n    var end = !Ember.isNone(nextDef) ? Ember.get(nextDef, 'startDate') : _utils.Time.date().add(1, 'years').unix();\n\n    var dayOne = Ember.get(def, 'dayOne');\n    var dayTwo = Ember.get(def, 'dayTwo');\n\n    // get the payperiod\n    var payPeriod = createPeriodForType(type, start, dayOne, dayTwo, timestamp);\n\n    // adjust the period if the period is outside\n    // the definitions start or end.\n    if (!Ember.isNone(payPeriod)) {\n      payPeriod = adjustForStartAndEndPeriod(payPeriod, start, end);\n    }\n    return payPeriod;\n  };\n\n  /**\n   * Dispatches the pay period call to getWeekly or get Monthly types\n   * all other types are unsupported at this time\n   *\n   * @private\n   * @method createPeriodForType\n   * @param timestamp {number}\n   * @param definition {DS.Model} organizationPayPeriod Model object\n   * @return {object}\n   */\n  var createPeriodForType = function createPeriodForType(type, start, dayOne, dayTwo, timestamp) {\n    (true && !([10, 20, 30, 40].indexOf(type) !== -1) && Ember.assert(\"<utils:organization/pay-period> createPeriodByDefinition only accepts type: [ 10, 20, 30, 40 ]\", [10, 20, 30, 40].indexOf(type) !== -1));\n\n\n    if (type === 10 || type === 20) {\n      // get the pay period bounds for biweekly and weekly periods.\n      return createWeeklyPeriod(timestamp, start, dayOne, type);\n    } else if (type === 30 || type === 40) {\n      // get the pay period bounds for monthly and Semimonthly periods.\n      return createMonthlyPeriod(timestamp, dayOne, dayTwo, type);\n    }\n  };\n\n  var adjustForStartAndEndPeriod = function adjustForStartAndEndPeriod(payPeriod, start, end) {\n    payPeriod = Object.assign({}, payPeriod);\n\n    // Create moment js date objects to work with. The definition end\n    // will be the next definition start minus one day.\n    // NOTE: createEndDate returns a date at the end of the day. So\n    // subtracting a day here will give us the previous day and 23:59 hours.\n    var periodStart = __createStartDate(start).unix();\n    var periodEnd = __createEndDate(end).subtract(1, 'days').unix();\n\n    // if the definition start is greater than the payPeriod start\n    // set the payPeriod start to the definition start\n    if (periodStart > payPeriod.start) {\n      payPeriod.start = periodStart;\n    }\n\n    // if the definition end is less than the payPeriod end\n    // set the payPeriod end to the definition end.\n    if (periodEnd < payPeriod.end) {\n      payPeriod.end = periodEnd;\n    }\n\n    return payPeriod;\n  };\n\n  /**\n   * Creates a pay period for both weekly and biweekly types\n   * and returns the object\n   *\n   * @private\n   * @method createWeeklyPeriod\n   * @param timestamp {number}\n   * @param payPeriodDay {number} The day of the week from 0-6 for Sun-Sat.\n   * @param duration {number} The duration of the pay period in weeks\n   * @return {object}\n   */\n  var createWeeklyPeriod = function createWeeklyPeriod(timestamp, defTimestamp, defDay, type) {\n    var secsInWeek = 604800;\n    var originalOffset = void 0,\n        defStartDate = void 0;\n    var duration = 1;\n\n    // biweekly definition day is not the day of the\n    // week like in weekly. It is an offset from the start date of the definition.\n    // Add the offset to the start date to get the day of the week before doing any other operations.\n    if (type === 20) {\n      // mod the dayOne by 14 and add the that to the definition startDate\n      defStartDate = _utils.Time.date(defTimestamp).add(defDay % 14, 'days');\n\n      // moment js function returns the day of the week.\n      defDay = defStartDate.day();\n      duration = 2;\n\n      // gets the week 0 or 1 that the biweekly period whould be in.\n      originalOffset = parseInt(defStartDate.unix() / secsInWeek % 2, 10);\n    }\n\n    // get the timestamp day of the week\n    var targetDay = _utils.Time.date(timestamp).day();\n\n    // get the offset of the definition day and the timestamp day\n    var dayOffset = defDay - targetDay;\n\n    // create a start and end date by adding the dayOffset to the timestamp.\n    // Adding the offset moves it to the nearest day that matches the definitions\n    // day of the week. The end date gets the start date plus the duration (1 or 2 weeks) minus\n    // one day. So it will end the day before the next start date.\n    var startDate = __createStartDate(timestamp).add(dayOffset, 'days');\n    var endDate = __createEndDate(startDate.unix()).add(duration, 'weeks').subtract(1, 'days');\n\n    // Get the biweekly offset 0 or 1 the period is on currently\n    var targetOffset = parseInt(startDate.unix() / secsInWeek % 2, 10);\n\n    // if the originalOffset is set then ensure the offsets match\n    // when the offset do not match adjust the dates back one week\n    // to get the proper biweekly start and end dates\n    if (!Ember.isNone(originalOffset) && originalOffset !== targetOffset) {\n      startDate.subtract(1, 'weeks');\n      endDate.subtract(1, 'weeks');\n    }\n\n    // At this point the dates could only be off if the timestamp\n    // is older the start date. So adjust the start and end dates\n    // back according to the duration (1 or 2 weeks).\n    if (timestamp < startDate.unix()) {\n      startDate.subtract(duration, 'weeks');\n      endDate.subtract(duration, 'weeks');\n    }\n\n    var start = startDate.unix();\n    var end = endDate.unix();\n    return { start: start, end: end, type: type };\n  };\n\n  /**\n   * Creates a pay period for both Semimonthly and monthly types\n   * and returns the object\n   *\n   * @private\n   * @method createMonthlyPeriod\n   * @param timestamp {number}\n   * @param definition {DS.Model} organizationPayPeriod Model object\n   * @return {object}\n   */\n  var createMonthlyPeriod = function createMonthlyPeriod(timestamp, payPeriodDay, payPeriodDay2, type) {\n    // disreguard monthly pay period day2 in case invalid data\n    // shows up. Monthly pay periods only use day1.\n    payPeriodDay2 = type === 40 ? payPeriodDay : payPeriodDay2;\n\n    // set payPeriodDay2 to payPeriodDay if payPeriodDay2 was undefined\n    payPeriodDay2 = !Ember.isNone(payPeriodDay2) ? payPeriodDay2 : payPeriodDay;\n\n    // make sure payPeriodDay is less than payPeriodDay2\n    if (payPeriodDay > payPeriodDay2) {\n      var tempDay = payPeriodDay;\n      payPeriodDay = payPeriodDay2;\n      payPeriodDay2 = tempDay;\n    }\n\n    // create the start and end dates. The end date will be day2 -1 day\n    // even in monthly because payPeriodDay2 is payPeriodDay when payPeriodDay2\n    // was undefined.\n    var startDate = __createStartDateByDay(timestamp, payPeriodDay);\n    var endDate = __createEndDateByDay(timestamp, payPeriodDay2).subtract(1, 'day');\n\n    if (timestamp < startDate.unix()) {\n      // The timestamp is less than the startDate of the pay period. In order to cover\n      // semi monthly and monthly, swap the start and end dates with the definition\n      // dates to get fresh dates with no conversion and subtract a month\n      // from the startDate and only one day from the endDate. Since the dayOne is ensured\n      // to be less than dayTwo (the same in monthly cases) this will give us the previous\n      // pay period.\n      startDate = __createStartDateByDay(_utils.Time.date(timestamp).subtract(1, 'months').unix(), payPeriodDay2);\n      endDate = __createEndDateByDay(timestamp, payPeriodDay).subtract(1, 'days');\n    } else if (timestamp > endDate.unix()) {\n      // The timestamp is greater than the startDate of the pay period. This is the same as\n      // the less than case with swapping the dates, but in this case the end date needs to\n      // be moved forward one month and then back on day.\n      startDate = __createStartDateByDay(timestamp, payPeriodDay2);\n      endDate = __createEndDateByDay(_utils.Time.date(timestamp).add(1, 'months').unix(), payPeriodDay).subtract(1, 'days');\n    } else if (payPeriodDay === payPeriodDay2) {\n      // if the first two case have not been hit then in monthly\n      // cases the end date is the same as the start date so\n      // add one month to the end date here.\n      endDate.add(1, 'months');\n    }\n\n    var start = startDate.unix();\n    var end = endDate.unix();\n    return { start: start, end: end, type: type };\n  };\n\n  /**\n   * gets the pay period definition model for the timestamp\n   *\n   * @private\n   * @method getPayPeriodDef\n   * @param timestamp {number}\n   * @return {DS.Model} organizationPayPeriod model object\n   */\n  var getPayPeriodDef = function getPayPeriodDef(payPeriods, timestamp) {\n    (true && !(!Ember.isEmpty(payPeriods) && Array.isArray(payPeriods)) && Ember.assert(\"<utils:organization/pay-periods> getPayPeriodDef() requires a list of OrganizationPayPeriod models\", !Ember.isEmpty(payPeriods) && Array.isArray(payPeriods)));\n\n\n    if (Ember.isNone(timestamp)) {\n      timestamp = _utils.Time.timestamp();\n    }\n\n    var definition = void 0;\n    payPeriods.forEach(function (item) {\n      if (Ember.get(item, 'startDate') <= timestamp) {\n        if (Ember.isNone(definition)) {\n          definition = item;\n        } else if (Ember.get(definition, 'startDate') < Ember.get(item, 'startDate')) {\n          definition = item;\n        }\n      }\n    });\n\n    if (Ember.isNone(definition)) {\n      createDefaultPeriod(Ember.get(payPeriods[0], 'store'));\n    }\n\n    return definition;\n  };\n\n  /**\n   * gets the next pay period definition model after the timestamp\n   *\n   *\n   * @private\n   * @method getNextPayPeriodDef\n   * @param timestamp {number}\n   * @return {DS.Model} OrganizationPayPeriod model object\n   */\n  var getNextPayPeriodDef = function getNextPayPeriodDef(payPeriods, timestamp) {\n    if (Ember.isNone(timestamp)) {\n      timestamp = _utils.Time.timestamp();\n    }\n\n    var definition = null;\n    payPeriods.forEach(function (item) {\n      if (Ember.get(item, 'startDate') > timestamp) {\n        if (Ember.isNone(definition)) {\n          definition = item;\n        } else if (Ember.get(item, 'startDate') < Ember.get(definition, 'startDate')) {\n          definition = item;\n        }\n      }\n    });\n    return definition;\n  };\n\n  var createDefaultPeriod = function createDefaultPeriod(store) {\n    return store.createRecord('organization-pay-period', {\n      payPeriodType: 10,\n      startDate: 345600,\n      dayOne: 1\n    });\n  };\n\n  /** internal helper methods **/\n  var __createStartDate = function __createStartDate(timestamp) {\n    return _utils.Time.date(timestamp).startOf('day');\n  };\n  var __createEndDate = function __createEndDate(timestamp) {\n    return _utils.Time.date(timestamp).endOf('day');\n  };\n\n  var __createStartDateByDay = function __createStartDateByDay(timestamp, day) {\n    var startDate = __createStartDate(timestamp).date(day);\n\n    // if the startDate is the last day of the month and the month\n    // has less days then the startDate like 31 and the month has 30\n    // then the date will shift to the 1st of the next month so\n    // use the last day of the month instead.\n    if (_utils.Time.date(timestamp).endOf('month').date() < day) {\n      startDate = __createStartDate(timestamp).endOf('month').startOf('day');\n    }\n    return startDate;\n  };\n\n  var __createEndDateByDay = function __createEndDateByDay(timestamp, day) {\n    var endDate = __createEndDate(timestamp).date(day);\n\n    // if the endDate is the last day of the month and the month\n    // has less days then the endDate like 31 and the month has 30\n    // then the date will shift to the 1st of the next month so\n    // use the last day of the month instead.\n    if (_utils.Time.date(timestamp).endOf('month').date() < day) {\n      endDate = __createEndDate(timestamp).endOf('month');\n    }\n    return endDate;\n  };\n});","define('busy-app/utils/parse', ['exports', '@busy-web/components/utils/parse'], function (exports, _parse) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _parse.default;\n    }\n  });\n});","define('busy-app/utils/project-csv-import', ['exports', 'busy-app/utils/csv-import', '@busy-web/utils'], function (exports, _csvImport, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = _csvImport.default.extend({\n\t\tactiveProjectList: null,\n\n\t\trootProjects: Ember.computed('model.@each.isTopLevelProject', function () {\n\t\t\tvar projects = [];\n\t\t\tif (!Ember.isNone(this.get('model'))) {\n\t\t\t\tprojects = this.get('model').filterBy('isTopLevelProject', true);\n\t\t\t}\n\t\t\treturn projects;\n\t\t}),\n\n\t\tloadSubProjects: function loadSubProjects() {\n\t\t\tvar projects = this.get('model');\n\t\t\tprojects.forEach(function (item) {\n\t\t\t\tvar subProjects = projects.filterBy('parentProjectId', item.get('id'));\n\t\t\t\titem.set('subProjects', subProjects);\n\t\t\t});\n\t\t},\n\n\t\tdefaultMap: Ember.computed(function () {\n\t\t\treturn {\n\t\t\t\t\"projectInfo.number\": \"Project Number\",\n\t\t\t\t\"projectInfo.customer\": \"Customer\",\n\t\t\t\t\"projectInfo.address1\": \"Address 1\",\n\t\t\t\t\"projectInfo.address2\": \"Address 2\",\n\t\t\t\t\"projectInfo.city\": \"City\",\n\t\t\t\t\"projectInfo.state\": \"State\",\n\t\t\t\t\"projectInfo.postalCode\": \"Postal Code\",\n\t\t\t\t\"project1\": \"Project Name\",\n\t\t\t\t\"project2\": \"Project Name Lvl 2\",\n\t\t\t\t\"project3\": \"Project Name Lvl 3\",\n\t\t\t\t\"project4\": \"Project Name Lvl 4\",\n\t\t\t\t\"project5\": \"Project Name Lvl 5\",\n\t\t\t\t\"project6\": \"Project Name Lvl 6\",\n\t\t\t\t\"project7\": \"Project Name Lvl 7\"\n\t\t\t};\n\t\t}),\n\n\t\trun: function run(file) {\n\t\t\tthis.set('activeProjectList', []);\n\t\t\tthis._super(file);\n\t\t},\n\n\t\tonFinishFileParse: function onFinishFileParse(headers, data) {\n\t\t\tthis._super(headers, data);\n\t\t\tthis.setHeaderMap({});\n\t\t\tthis.parse();\n\t\t},\n\n\t\tproject1Transform: function project1Transform(value, model) {\n\t\t\tif (!Ember.isNone(value)) {\n\t\t\t\tmodel.set('title', value);\n\t\t\t\tmodel.set('depth', 1);\n\n\t\t\t\tvar oldModel = this.hasModel(model);\n\t\t\t\tif (!oldModel) {\n\t\t\t\t\tthis.setActiveList(0, model);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setActiveList(0, oldModel);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tproject2Transform: function project2Transform(value, model) {\n\t\t\tthis.createNewSubModel(1, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tproject3Transform: function project3Transform(value, model) {\n\t\t\tthis.createNewSubModel(2, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tproject4Transform: function project4Transform(value, model) {\n\t\t\tthis.createNewSubModel(3, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tproject5Transform: function project5Transform(value, model) {\n\t\t\tthis.createNewSubModel(4, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tproject6Transform: function project6Transform(value, model) {\n\t\t\tthis.createNewSubModel(5, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tproject7Transform: function project7Transform(value, model) {\n\t\t\tthis.createNewSubModel(6, value, model);\n\t\t\treturn true;\n\t\t},\n\n\t\tsetActiveList: function setActiveList(index, model) {\n\t\t\tthis.get('activeProjectList').splice(index, 1, model);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetActiveList: function getActiveList(index) {\n\t\t\treturn this.get('activeProjectList').objectAt(index);\n\t\t},\n\n\t\tcreateNewModel: function createNewModel(hasProjectInfo) {\n\t\t\thasProjectInfo = !Ember.isNone(hasProjectInfo) ? hasProjectInfo : true;\n\n\t\t\tvar id = _utils.UUID.generate();\n\t\t\tvar project = this.get('store').createRecord('project', {\n\t\t\t\tid: id,\n\t\t\t\trootProjectId: id,\n\t\t\t\torganizationId: this.get('organizationId'),\n\t\t\t\tsubProjects: []\n\t\t\t});\n\n\t\t\tif (hasProjectInfo) {\n\t\t\t\tproject.set('projectInfo', this.get('store').createRecord('project-info', {\n\t\t\t\t\tid: _utils.UUID.generate(),\n\t\t\t\t\tprojectId: id\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn project;\n\t\t},\n\n\t\tcreateNewSubModel: function createNewSubModel(index, value, model) {\n\t\t\tif (!Ember.isNone(value)) {\n\t\t\t\tvar rootProject = this.getActiveList(0);\n\t\t\t\tvar parentProject = this.getActiveList(index - 1);\n\n\t\t\t\tvar subProject = this.createNewModel(false);\n\t\t\t\tsubProject.set('title', value);\n\t\t\t\tsubProject.set('rootProjectId', rootProject.get('id'));\n\t\t\t\tsubProject.set('parentProjectId', parentProject.get('id'));\n\t\t\t\tsubProject.set('depth', index + 1);\n\t\t\t\tsubProject.set('projectInfo', model.get('projectInfo'));\n\t\t\t\tsubProject.set('projectInfo.projectId', subProject.get('id'));\n\n\t\t\t\tif (this.modelHasData(subProject)) {\n\t\t\t\t\tvar oldModel = this.hasModel(subProject);\n\t\t\t\t\tif (!oldModel) {\n\t\t\t\t\t\tthis.get('model').pushObject(subProject);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsubProject = oldModel;\n\t\t\t\t\t}\n\t\t\t\t\tthis.setActiveList(index, subProject);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thasModel: function hasModel(model) {\n\t\t\tvar found = this.get('model').find(function (item) {\n\t\t\t\tif (item.get('title') === model.get('title')) {\n\t\t\t\t\tif (model.get('rootProjectId') === model.get('id')) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if (item.get('rootProjectId') === model.get('rootProjectId') && item.get('parentProjectId') === model.get('parentProjectId')) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}, this);\n\n\t\t\treturn !Ember.isNone(found) ? found : false;\n\t\t},\n\n\t\tmodelHasData: function modelHasData(model) {\n\t\t\tvar title = model.get('title') || '';\n\t\t\tif (typeof title !== 'string') {\n\t\t\t\ttitle = title.toString();\n\t\t\t}\n\n\t\t\ttitle = title.trim();\n\n\t\t\tif (!Ember.isEmpty(title)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tonDoneParsing: function onDoneParsing() {\n\t\t\tthis.loadSubProjects();\n\t\t\tthis._super();\n\t\t},\n\n\t\tsaveModel: function saveModel() {\n\t\t\tvar _this = this;\n\t\t\tvar models = this.get('model').sortBy('depth');\n\t\t\treturn this._saveModels(models).then(function (data) {\n\t\t\t\t_this.trigger('complete');\n\t\t\t\treturn data;\n\t\t\t});\n\t\t},\n\n\t\t_saveModels: function _saveModels(models) {\n\t\t\tvar _this = this;\n\t\t\tvar dataArray = [];\n\t\t\tmodels.forEach(function (item) {\n\t\t\t\tvar projectData = _this.prepareObject('project', {\n\t\t\t\t\tid: item.id,\n\t\t\t\t\ttitle: item.get('title'),\n\t\t\t\t\troot_project_id: item.get('rootProjectId'),\n\t\t\t\t\tparent_project_id: item.get('parentProjectId'),\n\t\t\t\t\tdepth: item.get('depth'),\n\t\t\t\t\torganization_id: item.get('organizationId'),\n\t\t\t\t\tcreated_on: _utils.Time.timestamp()\n\t\t\t\t});\n\n\t\t\t\tdataArray.push(projectData);\n\n\t\t\t\tif (!Ember.isNone(item.get('projectInfo'))) {\n\t\t\t\t\tvar projectInfoData = _this.prepareObject('project-info', {\n\t\t\t\t\t\tid: item.get('projectInfo.id'),\n\t\t\t\t\t\tproject_id: item.get('projectInfo.projectId'),\n\t\t\t\t\t\tnumber: item.get('projectInfo.number'),\n\t\t\t\t\t\tcustomer: item.get('projectInfo.customer'),\n\t\t\t\t\t\taddress1: item.get('projectInfo.address1'),\n\t\t\t\t\t\taddress2: item.get('projectInfo.address2'),\n\t\t\t\t\t\tcity: item.get('projectInfo.city'),\n\t\t\t\t\t\tstate: item.get('projectInfo.state'),\n\t\t\t\t\t\tpostal_code: item.get('projectInfo.postalCode'),\n\t\t\t\t\t\tcreated_on: _utils.Time.timestamp()\n\t\t\t\t\t\t//\tphone: item.get('phone')\n\t\t\t\t\t});\n\t\t\t\t\tdataArray.push(projectInfoData);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this.sendRequest(dataArray, 20);\n\t\t}\n\t});\n});","define('busy-app/utils/project-parser', ['exports', '@busy-web/utils', 'busy-app/utils/logger'], function (exports, _utils, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\tvar ProjectCSVObject = Ember.Object.extend({\n\t\tmember: null,\n\t\tseconds: null,\n\t\tcost: null,\n\n\t\twage: null,\n\t\twageType: null,\n\t\thours: null,\n\t\ttime: null,\n\n\t\tdepth1: null,\n\t\tdepth2: null,\n\t\tdepth3: null,\n\t\tdepth4: null,\n\t\tdepth5: null,\n\t\tdepth6: null,\n\t\tdepth7: null\n\t});\n\n\t/**\n  * `Util/ProjectParser`\n  *\n  */\n\t/**\n  * @module Utils\n  *\n  */\n\texports.default = Ember.Object.extend(Ember.Evented, {\n\t\tpayPeriods: Ember.inject.service('pay-period'),\n\t\tfeatures: Ember.inject.service('pay-features'),\n\n\t\t// required\n\t\tstore: null,\n\t\tstartTime: null,\n\t\tendTime: null,\n\n\t\t// optional\n\t\tprojectId: null,\n\t\tmemberId: null,\n\n\t\tsortBy: 'member.firstName',\n\n\t\tparse: function parse() {\n\t\t\tvar _this = this;\n\n\t\t\t(true && !(!Ember.isNone(this.get('startTime'))) && Ember.assert('You must set a startTime before calling parse', !Ember.isNone(this.get('startTime'))));\n\t\t\t(true && !(!Ember.isNone(this.get('endTime'))) && Ember.assert('You must set a endTime before calling parse', !Ember.isNone(this.get('endTime'))));\n\t\t\t(true && !(!Ember.isNone(this.get('store'))) && Ember.assert('You must set a store before calling parse', !Ember.isNone(this.get('store'))));\n\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\t_this.loadData().then(function (data) {\n\t\t\t\t\tvar list = _this.createList(data);\n\t\t\t\t\tlist = list.sortBy(_this.get('sortBy'));\n\t\t\t\t\tresolve(list);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tloadData: function loadData() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\t_this2.getPayPeriodData().then(function (payPeriodSeconds) {\n\t\t\t\t\tvar projects = [];\n\t\t\t\t\tvar members = [];\n\t\t\t\t\tpayPeriodSeconds.forEach(function (item) {\n\t\t\t\t\t\tif (!Ember.isNone(item.get('memberId'))) {\n\t\t\t\t\t\t\tvar memberPromise = _this2.getMemberData(item.get('memberId'));\n\t\t\t\t\t\t\tmembers.push(memberPromise);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Ember.isNone(item.get('projectId'))) {\n\t\t\t\t\t\t\tvar projectPromise = _this2.getProjectData(item.get('projectId'));\n\t\t\t\t\t\t\tprojects.push(projectPromise);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tEmber.RSVP.hash({\n\t\t\t\t\t\tmembers: Ember.RSVP.all(members),\n\t\t\t\t\t\tprojects: Ember.RSVP.all(projects)\n\t\t\t\t\t}).then(function (data) {\n\t\t\t\t\t\tdata.payPeriodSeconds = payPeriodSeconds;\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetPayPeriodData: function getPayPeriodData() {\n\t\t\tif (!Ember.isNone(this.get('projectId'))) {\n\t\t\t\treturn this._getPayPeriodDataByProject(this.get('projectId'));\n\t\t\t} else {\n\t\t\t\treturn this._getPayPeriodData();\n\t\t\t}\n\t\t},\n\t\t_getPayPeriodData: function _getPayPeriodData() {\n\t\t\tvar query = {\n\t\t\t\tstart_time: this.get('startTime'),\n\t\t\t\tend_time: this.get('endTime'),\n\t\t\t\tpage_size: 10000\n\t\t\t};\n\n\t\t\tif (!Ember.isNone(this.get('memberId'))) {\n\t\t\t\tquery.member_id = this.get('memberId');\n\t\t\t}\n\n\t\t\treturn this.store.query('pay-period-member-project-seconds', query);\n\t\t},\n\t\t_getPayPeriodDataByProject: function _getPayPeriodDataByProject(projectId) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\tvar query = {\n\t\t\t\t\troot_project_id: projectId,\n\t\t\t\t\tpage_size: 10000\n\t\t\t\t};\n\n\t\t\t\t_this3.store.query('project', query).then(function (projects) {\n\t\t\t\t\tvar total = 0;\n\t\t\t\t\tvar found = 0;\n\t\t\t\t\tvar query2 = {\n\t\t\t\t\t\tstart_time: _this3.get('startTime'),\n\t\t\t\t\t\tend_time: _this3.get('endTime'),\n\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\tpage_size: 10000\n\t\t\t\t\t};\n\n\t\t\t\t\tvar payPeriods = null;\n\t\t\t\t\tprojects.forEach(function (item) {\n\t\t\t\t\t\ttotal++;\n\t\t\t\t\t\tquery2.project_id = item.get('id');\n\t\t\t\t\t\t_this3.store.query('pay-period-member-project-seconds', query2).then(function (payPeriod) {\n\t\t\t\t\t\t\tfound++;\n\t\t\t\t\t\t\tif (Ember.isNone(payPeriods)) {\n\t\t\t\t\t\t\t\tpayPeriods = payPeriod;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpayPeriods.pushObjects(payPeriod.get('content'));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (total <= found) {\n\t\t\t\t\t\t\t\tresolve(payPeriods);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetMemberData: function getMemberData(memberId) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\t\t_this4.store.findRecord('member', memberId).then(function (member) {\n\t\t\t\t\tvar params = {\n\t\t\t\t\t\tmember_id: member.get('id'),\n\t\t\t\t\t\t_lte: { change_date: _this4.get('startTime') },\n\t\t\t\t\t\t_desc: ['change_date']\n\t\t\t\t\t};\n\n\t\t\t\t\t_this4.store.query('wage-history', params).then(function (wage) {\n\t\t\t\t\t\tmember.set('wage', wage.objectAt(0));\n\t\t\t\t\t\tresolve(member);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tgetProjectData: function getProjectData(projectId) {\n\t\t\treturn this.store.findRecord('project', projectId);\n\t\t},\n\t\tcreateList: function createList(data) {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar list = [];\n\t\t\tdata.payPeriodSeconds.forEach(function (item) {\n\t\t\t\t_this5.buildObject(item, list, data);\n\t\t\t});\n\t\t\tlist = list.sortBy('member.firstName', 'member.lastName', 'depth1', 'depth2', 'depth3', 'depth4', 'depth5', 'depth6', 'depth7');\n\t\t\treturn list;\n\t\t},\n\t\tbuildObject: function buildObject(payPeriod, list, data) {\n\t\t\tvar member = this.getMemberObj(payPeriod.get('memberId'), data);\n\t\t\tvar projectData = Ember.get(data, 'projects');\n\n\t\t\tvar object = ProjectCSVObject.create();\n\t\t\tobject.set('member', member);\n\t\t\tobject.set('seconds', payPeriod);\n\n\t\t\tif (!Ember.isNone(payPeriod.get('projectId'))) {\n\t\t\t\tthis.setProjectPath(payPeriod.get('projectId'), object, projectData);\n\t\t\t}\n\n\t\t\tvar isHourly = member.get('wage.isHourly');\n\t\t\tvar wage = parseFloat(member.get('wage.effectiveRate'));\n\t\t\tvar grossWages = isHourly ? 'Hourly' : 'Salary';\n\t\t\tif (isHourly) {\n\t\t\t\tif (payPeriod.get('regularSeconds') > 0) {\n\t\t\t\t\t//extra info\n\t\t\t\t\tobject.set('wage', wage.toFixed(2));\n\t\t\t\t\tobject.set('wageType', 'REG');\n\t\t\t\t\tobject.set('grossWages', grossWages);\n\t\t\t\t\tobject.set('hours', (payPeriod.get('regularSeconds') / 60 / 60).toFixed(2));\n\t\t\t\t\tobject.set('time', _utils.Time.date(payPeriod.get('endTime')).format('MM/DD/YYYY'));\n\t\t\t\t\tlist.pushObject(object);\n\t\t\t\t}\n\n\t\t\t\tif (payPeriod.get('overtimeSeconds') > 0) {\n\t\t\t\t\tvar otObject = this.copy(object);\n\t\t\t\t\totObject.set('wage', (wage * 1.5).toFixed(2));\n\t\t\t\t\totObject.set('wageType', 'OT_1.5x');\n\t\t\t\t\totObject.set('grossWages', grossWages);\n\t\t\t\t\totObject.set('hours', (payPeriod.get('overtimeSeconds') / 60 / 60).toFixed(2));\n\t\t\t\t\tlist.pushObject(otObject);\n\t\t\t\t}\n\n\t\t\t\tif (payPeriod.get('doubletimeSeconds') > 0) {\n\t\t\t\t\tvar dtObject = this.copy(object);\n\t\t\t\t\tdtObject.set('wage', (wage * 2).toFixed(2));\n\t\t\t\t\tdtObject.set('wageType', 'OT_2x');\n\t\t\t\t\tdtObject.set('grossWages', grossWages);\n\t\t\t\t\tdtObject.set('hours', (payPeriod.get('doubletimeSeconds') / 60 / 60).toFixed(2));\n\t\t\t\t\tlist.pushObject(dtObject);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (payPeriod.get('regularSeconds') > 0 || payPeriod.get('overtimeSeconds') > 0 || payPeriod.get('doubletimeSeconds')) {\n\t\t\t\t\tvar payPeriodDef = this.get('payPeriods')._getPayPeriodDef(payPeriod.get('startTime'));\n\t\t\t\t\tvar workWeek = parseFloat(member.get('wage.workWeek'));\n\t\t\t\t\tvar hours = workWeek.toString();\n\t\t\t\t\tif (payPeriodDef.get('payPeriodType') === 20) {\n\t\t\t\t\t\thours = (workWeek * 2).toString();\n\t\t\t\t\t} else if (payPeriodDef.get('payPeriodType') === 30) {\n\t\t\t\t\t\thours = (workWeek * 52 / 24).toFixed(3);\n\t\t\t\t\t} else if (payPeriodDef.get('payPeriodType') === 40) {\n\t\t\t\t\t\thours = (workWeek * 52 / 12).toFixed(3);\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.set('wage', wage.toFixed(2));\n\t\t\t\t\tobject.set('wageType', 'SAL');\n\t\t\t\t\tobject.set('grossWages', grossWages);\n\t\t\t\t\tobject.set('hours', hours);\n\t\t\t\t\tobject.set('time', _utils.Time.date(payPeriod.get('endTime')).format('MM/DD/YYYY'));\n\t\t\t\t\tlist.pushObject(object);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetMemberObj: function getMemberObj(memberId, data) {\n\t\t\tvar members = Ember.get(data, 'members');\n\t\t\treturn members.findBy('id', memberId);\n\t\t},\n\t\tsetProjectPath: function setProjectPath(projectId, object, projectData) {\n\t\t\tif (!Ember.isNone(projectId)) {\n\t\t\t\tvar project = projectData.findBy('id', projectId);\n\t\t\t\tif (!Ember.isNone(project)) {\n\t\t\t\t\tobject.set('depth' + project.get('depth'), project.get('title'));\n\t\t\t\t\tif (project.get('depth') === 1) {\n\t\t\t\t\t\treturn object;\n\t\t\t\t\t}\n\t\t\t\t\tvar parentProjectId = project.get('parentProjectId');\n\t\t\t\t\treturn this.setProjectPath(parentProjectId, object, projectData);\n\t\t\t\t} else {\n\t\t\t\t\t_logger.default.warn('ProjectParser', 'Project path was not found!');\n\t\t\t\t\treturn object;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_logger.default.warn('ProjectParser', 'Project path was not found!');\n\t\t\t\treturn object;\n\t\t\t}\n\t\t},\n\t\tcopy: function copy(obj) {\n\t\t\treturn ProjectCSVObject.create({\n\t\t\t\tmember: obj.get('member'),\n\t\t\t\tcost: obj.get('cost'),\n\t\t\t\tseconds: obj.get('seconds'),\n\t\t\t\twage: obj.get('wage'),\n\t\t\t\twageType: obj.get('wageType'),\n\t\t\t\thours: obj.get('hours'),\n\t\t\t\ttime: obj.get('time'),\n\t\t\t\tdepth1: obj.get('depth1'),\n\t\t\t\tdepth2: obj.get('depth2'),\n\t\t\t\tdepth3: obj.get('depth3'),\n\t\t\t\tdepth4: obj.get('depth4'),\n\t\t\t\tdepth5: obj.get('depth5'),\n\t\t\t\tdepth6: obj.get('depth6'),\n\t\t\t\tdepth7: obj.get('depth7')\n\t\t\t});\n\t\t},\n\t\thandleError: function handleError(error) {\n\t\t\tthis.trigger('error', error);\n\t\t}\n\t});\n});","define('busy-app/utils/public-api', ['exports', 'ember-google-maps/utils/public-api'], function (exports, _publicApi) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _publicApi.default;\n    }\n  });\n});","define('busy-app/utils/query-builder', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.createQuery = exports.mapByUniq = undefined;\n\texports.default = queryBuilder;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _createClass = function () {\n\t\tfunction defineProperties(target, props) {\n\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\tvar descriptor = props[i];\n\t\t\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\t\t\tdescriptor.configurable = true;\n\t\t\t\tif (\"value\" in descriptor) descriptor.writable = true;\n\t\t\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t\t\t}\n\t\t}\n\n\t\treturn function (Constructor, protoProps, staticProps) {\n\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t\t\tif (staticProps) defineProperties(Constructor, staticProps);\n\t\t\treturn Constructor;\n\t\t};\n\t}();\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\t/**\n  * @module utils\n  *\n  */\n\tvar NULL_VALUE = null;\n\n\tvar mapByUniq = exports.mapByUniq = function mapByUniq(list, property) {\n\t\treturn list.map(function (item) {\n\t\t\treturn item[property];\n\t\t}).uniq().compact();\n\t};\n\n\tvar Builder = Ember.Object.extend({\n\t\t_query: null,\n\t\t_modelAttrs: null,\n\n\t\t_addToQuery: function _addToQuery(key, value) {\n\t\t\tkey = Ember.String.underscore(key);\n\t\t\tEmber.set(this, '_query.' + key, value);\n\t\t},\n\t\tequal: function equal(key, value) {\n\t\t\tthis._addToQuery(key, value);\n\t\t\treturn this;\n\t\t},\n\t\tnotEqual: function notEqual(key, value) {\n\t\t\tthis._addToQuery('_not_equal', _defineProperty({}, key, value));\n\t\t\treturn this;\n\t\t},\n\t\tpage: function page() {\n\t\t\tvar page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 80;\n\n\t\t\tthis._addToQuery('page', page);\n\t\t\tthis._addToQuery('page_size', size);\n\t\t\treturn this;\n\t\t},\n\t\tlimit: function limit() {\n\t\t\tvar size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 80;\n\n\t\t\tthis._addToQuery('limit', size);\n\t\t\treturn this;\n\t\t},\n\t\tgreaterThanOrEqual: function greaterThanOrEqual(key, value) {\n\t\t\tkey = Ember.String.underscore(key);\n\t\t\tthis._addToQuery('_gte', _defineProperty({}, key, value));\n\t\t\treturn this;\n\t\t},\n\t\tlessThanOrEqual: function lessThanOrEqual(key, value) {\n\t\t\tkey = Ember.String.underscore(key);\n\t\t\tthis._addToQuery('_lte', _defineProperty({}, key, value));\n\t\t\treturn this;\n\t\t},\n\t\tascending: function ascending(key) {\n\t\t\tkey = Ember.String.underscore(key);\n\t\t\tthis._addToQuery('_asc', [key]);\n\t\t\treturn this;\n\t\t},\n\t\tdescending: function descending(key) {\n\t\t\tkey = Ember.String.underscore(key);\n\t\t\tthis._addToQuery('_desc', [key]);\n\t\t\treturn this;\n\t\t},\n\t\tnotDeleted: function notDeleted() {\n\t\t\tthis._addToQuery('deleted_on', NULL_VALUE);\n\t\t\treturn this;\n\t\t},\n\t\tnotArchived: function notArchived() {\n\t\t\tthis._addToQuery('archived_on', NULL_VALUE);\n\t\t\treturn this;\n\t\t},\n\t\tdeleted: function deleted() {\n\t\t\tthis._addToQuery('_not_equal', { deleted_on: NULL_VALUE });\n\t\t\treturn this;\n\t\t},\n\t\tarchived: function archived() {\n\t\t\tthis._addToQuery('archived_on', '!' + NULL_VALUE);\n\t\t\treturn this;\n\t\t},\n\t\topenEntry: function openEntry() {\n\t\t\tthis.equal('end_time', NULL_VALUE);\n\t\t\treturn this;\n\t\t},\n\t\tinRange: function inRange(startKey, start, endKey, end) {\n\t\t\t_utils.Assert.isString(startKey);\n\t\t\t_utils.Assert.isNumber(start);\n\n\t\t\t_utils.Assert.isString(endKey);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\tthis.greaterThanOrEqual(endKey, start);\n\t\t\tthis.lessThanOrEqual(startKey, end);\n\t\t\treturn this;\n\t\t},\n\t\tstrictInRange: function strictInRange(startKey, start, endKey, end) {\n\t\t\t_utils.Assert.isString(startKey);\n\t\t\t_utils.Assert.isNumber(start);\n\n\t\t\t_utils.Assert.isString(endKey);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\tthis.greaterThanOrEqual(startKey, start);\n\t\t\tthis.lessThanOrEqual(endKey, end);\n\t\t\treturn this;\n\t\t},\n\t\tmatchRange: function matchRange(startKey, start, endKey, end) {\n\t\t\t_utils.Assert.isString(startKey);\n\t\t\t_utils.Assert.isNumber(start);\n\n\t\t\t_utils.Assert.isString(endKey);\n\t\t\t_utils.Assert.isNumber(end);\n\n\t\t\tthis.equal(startKey, start);\n\t\t\tthis.equal(endKey, end);\n\t\t\treturn this;\n\t\t},\n\t\ttoJSON: function toJSON() {\n\t\t\treturn Ember.get(this, '_query');\n\t\t}\n\t});\n\n\tfunction queryBuilder(_query, _modelName, modelClass) {\n\t\t_utils.Assert.isObject(_query);\n\n\t\tvar _modelAttrs = void 0;\n\t\tif (modelClass && modelClass.attributes) {\n\t\t\t_modelAttrs = Ember.get(modelClass, 'attributes');\n\t\t}\n\n\t\treturn Builder.create({ _modelName: _modelName, _modelAttrs: _modelAttrs, _query: _query });\n\t}\n\n\tvar QueryBuilder = function () {\n\t\tfunction QueryBuilder(baseQuery) {\n\t\t\t_classCallCheck(this, QueryBuilder);\n\n\t\t\tthis._query = Object.assign({}, baseQuery);\n\t\t}\n\n\t\t_createClass(QueryBuilder, [{\n\t\t\tkey: '_addToQuery',\n\t\t\tvalue: function _addToQuery(key, value) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._query = Object.assign({}, this._query, _defineProperty({}, key, value));\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'add',\n\t\t\tvalue: function add(prop) {\n\t\t\t\tif (!Ember.isNone(prop) && (typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) === 'object') {\n\t\t\t\t\tthis._query = Object.assign({}, this._query, prop);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'equal',\n\t\t\tvalue: function equal(key, value) {\n\t\t\t\tthis._addToQuery(key, value);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'notEqual',\n\t\t\tvalue: function notEqual(key, value) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._addToQuery('_not_equal', Object.assign({}, this._query._not_equal, _defineProperty({}, key, value)));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'page',\n\t\t\tvalue: function page() {\n\t\t\t\tvar _page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n\t\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 80;\n\n\t\t\t\tthis._addToQuery('page', _page);\n\t\t\t\tthis._addToQuery('page_size', size);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'limit',\n\t\t\tvalue: function limit() {\n\t\t\t\tvar size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 80;\n\n\t\t\t\tthis._addToQuery('limit', size);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'greaterThanOrEqual',\n\t\t\tvalue: function greaterThanOrEqual(key, value) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._addToQuery('_gte', Object.assign({}, this._query._gte, _defineProperty({}, key, value)));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'lessThanOrEqual',\n\t\t\tvalue: function lessThanOrEqual(key, value) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._addToQuery('_lte', Object.assign({}, this._query._lte, _defineProperty({}, key, value)));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'ascending',\n\t\t\tvalue: function ascending(key) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._addToQuery('_asc', [].concat(this._query._asc || [], [key]));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'descending',\n\t\t\tvalue: function descending(key) {\n\t\t\t\tkey = Ember.String.underscore(key);\n\t\t\t\tthis._addToQuery('_desc', [].concat(this._query._desc || [], [key]));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'sort',\n\t\t\tvalue: function sort(dir, key) {\n\t\t\t\tif (dir === 'desc') {\n\t\t\t\t\tthis.descending(key);\n\t\t\t\t} else {\n\t\t\t\t\tthis.ascending(key);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'deleted',\n\t\t\tvalue: function deleted() {\n\t\t\t\tvar flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t\t\t\tif (flag) {\n\t\t\t\t\tthis.notEqual({ deleted_on: null });\n\t\t\t\t} else {\n\t\t\t\t\tthis._addToQuery('deleted_on', null);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'archived',\n\t\t\tvalue: function archived() {\n\t\t\t\tvar flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t\t\t\tif (flag) {\n\t\t\t\t\tthis.notEqual({ archived_on: null });\n\t\t\t\t} else {\n\t\t\t\t\tthis._addToQuery('archived_on', null);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'inRange',\n\t\t\tvalue: function inRange(startKey, start, endKey, end) {\n\t\t\t\tthis.greaterThanOrEqual(endKey, start);\n\t\t\t\tthis.lessThanOrEqual(startKey, end);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'strictInRange',\n\t\t\tvalue: function strictInRange(startKey, start, endKey, end) {\n\t\t\t\tthis.greaterThanOrEqual(startKey, start);\n\t\t\t\tthis.lessThanOrEqual(endKey, end);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'matchRange',\n\t\t\tvalue: function matchRange(startKey, start, endKey, end) {\n\t\t\t\tthis.equal(startKey, start);\n\t\t\t\tthis.equal(endKey, end);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'toJSON',\n\t\t\tvalue: function toJSON() {\n\t\t\t\treturn Ember.get(this, '_query');\n\t\t\t}\n\t\t}]);\n\n\t\treturn QueryBuilder;\n\t}();\n\n\tvar createQuery = exports.createQuery = function createQuery() {\n\t\tvar baseQuery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\treturn new QueryBuilder(baseQuery);\n\t};\n});","define('busy-app/utils/query-string-to-json', ['exports', 'busy-app/utils/type-cast'], function (exports, _typeCast) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = queryStringToJson;\n\n\tvar _slicedToArray = function () {\n\t\tfunction sliceIterator(arr, i) {\n\t\t\tvar _arr = [];\n\t\t\tvar _n = true;\n\t\t\tvar _d = false;\n\t\t\tvar _e = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t\t\t\t_arr.push(_s.value);\n\n\t\t\t\t\tif (i && _arr.length === i) break;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_d = true;\n\t\t\t\t_e = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_d) throw _e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _arr;\n\t\t}\n\n\t\treturn function (arr, i) {\n\t\t\tif (Array.isArray(arr)) {\n\t\t\t\treturn arr;\n\t\t\t} else if (Symbol.iterator in Object(arr)) {\n\t\t\t\treturn sliceIterator(arr, i);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t\t}\n\t\t};\n\t}();\n\n\t/**\n  * @public\n  * @method queryStringToJson\n  * @params str {string} the query string to parse\n  * @return {object} JSON object\n  */\n\tfunction queryStringToJson(str) {\n\t\tvar res = {};\n\n\t\t// remove leading question mark if it exists\n\t\tstr = str.replace(/^\\?/, '');\n\n\t\t// split string into pairs\n\t\tstr.split('&').forEach(function (pair) {\n\t\t\tvar _pair$split = pair.split('='),\n\t\t\t    _pair$split2 = _slicedToArray(_pair$split, 2),\n\t\t\t    key = _pair$split2[0],\n\t\t\t    val = _pair$split2[1];\n\n\t\t\tif (/\\[\\]$/.test(key)) {\n\t\t\t\t// key is an array of values\n\t\t\t\tvar _key = key.slice(0, -2);\n\t\t\t\tif (Ember.isNone(Ember.get(res, _key))) {\n\t\t\t\t\tEmber.set(res, _key, []);\n\t\t\t\t}\n\t\t\t\tEmber.get(res, _key).push((0, _typeCast.default)(val));\n\t\t\t} else if (/[^[].\\]$/.test(key)) {\n\t\t\t\tvar _key$split = key.split('['),\n\t\t\t\t    _key$split2 = _slicedToArray(_key$split, 2),\n\t\t\t\t    _key2 = _key$split2[0],\n\t\t\t\t    _sub = _key$split2[1];\n\n\t\t\t\t_sub = _sub.slice(0, -1);\n\t\t\t\tif (Ember.isNone(Ember.get(res, _key2))) {\n\t\t\t\t\tEmber.set(res, _key2, {});\n\t\t\t\t}\n\t\t\t\tEmber.set(res, _key2 + '.' + _sub, (0, _typeCast.default)(val));\n\t\t\t} else {\n\t\t\t\tEmber.set(res, key, (0, _typeCast.default)(val));\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t}\n});","define('busy-app/utils/query', ['exports', '@busy-web/data/utils/query'], function (exports, _query) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _query.default;\n    }\n  });\n});","define('busy-app/utils/request-handler', ['exports', 'ember-inflector', 'busy-app/utils/request-helpers'], function (exports, _emberInflector, _requestHelpers) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar getModelProperty = _requestHelpers.default.getModelProperty;\n\n\n\t/**\n  * Private helper method to get an array if ids\n  * from the parent model\n  *\n  * @private\n  * @method getParamFromModels\n  * @param key {string} the key to be used in finding the properties\n  * @param model {DS.Model}\n  * @return {array}\n  */\n\tfunction getParamFromModels(key, model) {\n\t\tvar prop = null;\n\t\tif (!Ember.isNone(model.forEach)) {\n\t\t\tprop = [];\n\t\t\tmodel.forEach(function (item) {\n\t\t\t\tvar id = getModelProperty(item, key);\n\t\t\t\tif (!Ember.isNone(id) && prop.indexOf(id) === -1) {\n\t\t\t\t\tprop.push(id);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvar id = getModelProperty(model, key);\n\t\t\tif (!Ember.isNone(id)) {\n\t\t\t\tprop = [id];\n\t\t\t}\n\t\t}\n\t\treturn prop;\n\t}\n\n\tfunction objectIsEmpty(obj) {\n\t\tif (Ember.isNone(obj)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar length = 0;\n\t\tfor (var i in obj) {\n\t\t\tif (obj.hasOwnProperty(i)) {\n\t\t\t\tlength = length + 1;\n\t\t\t}\n\t\t}\n\t\treturn length === 0;\n\t}\n\n\tfunction isJoinAll(type) {\n\t\treturn (/join/.test(Ember.String.dasherize(type)) && /all/.test(Ember.String.dasherize(type))\n\t\t);\n\t}\n\n\tfunction isOuterJoin(type) {\n\t\treturn (/join/.test(Ember.String.dasherize(type)) && /outer/.test(Ember.String.dasherize(type))\n\t\t);\n\t}\n\n\tfunction forEachPromise(model, callback) {\n\t\tvar target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\treturn new Ember.RSVP.Promise(function (resolve) {\n\t\t\tvar length = Ember.get(model, 'length') || 0;\n\t\t\tmodel.forEach(function (item, index, enumerable) {\n\t\t\t\tcallback.call(target, item, index, enumerable);\n\n\t\t\t\tif (index >= length - 1) {\n\t\t\t\t\t// resolve promise\n\t\t\t\t\tEmber.run(target, resolve, null);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (length === 0) {\n\t\t\t\tEmber.run(target, resolve, null);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n  * `Util\\RequestHandler`\n  *\n  */\n\texports.default = Ember.Object.extend({\n\t\tstore: null,\n\n\t\tfinishedList: null,\n\n\t\tbuildQuery: function buildQuery(operation) {\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar query = Ember.get(operation, 'params.query');\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\t\t\t(true && !(!Ember.isNone(query)) && Ember.assert('You must set a query params for the operation object.', !Ember.isNone(query)));\n\n\n\t\t\treturn this.store.query(modelType, query);\n\t\t},\n\t\tbuildQueryRecord: function buildQueryRecord(operation) {\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar query = Ember.get(operation, 'params.query');\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\t\t\t(true && !(!Ember.isNone(query)) && Ember.assert('You must set a query params for the operation object.', !Ember.isNone(query)));\n\n\n\t\t\treturn this.store.queryRecord(modelType, query);\n\t\t},\n\t\tbuildFindAll: function buildFindAll(operation) {\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar query = Ember.get(operation, 'params.query');\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\t\t\t(true && !(!Ember.isNone(query)) && Ember.assert('You must set a query params for the operation object.', !Ember.isNone(query)));\n\n\n\t\t\treturn this.store.findAll(modelType, query);\n\t\t},\n\t\tbuildFindRecord: function buildFindRecord(operation) {\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar id = Ember.get(operation, 'params.id');\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\t\t\t(true && !(!Ember.isNone(id)) && Ember.assert('You must set an id for the operation object.', !Ember.isNone(id)));\n\n\n\t\t\treturn this.store.findRecord(modelType, id);\n\t\t},\n\t\tbuildFindWhereIn: function buildFindWhereIn(operation) {\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar key = Ember.get(operation, 'params.key');\n\t\t\tvar id = Ember.get(operation, 'params.id');\n\t\t\tvar query = Ember.get(operation, 'params.query');\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\t\t\t(true && !(!Ember.isNone(key)) && Ember.assert('You must set a key for the operation object.', !Ember.isNone(key)));\n\t\t\t(true && !(!Ember.isNone(id)) && Ember.assert('You must set an id for the operation object.', !Ember.isNone(id)));\n\t\t\t(true && !(!Ember.isNone(query)) && Ember.assert('You must set a query params for the operation object.', !Ember.isNone(query)));\n\n\n\t\t\treturn this.store.findWhereIn(modelType, key, id, query);\n\t\t},\n\t\tbuildOuterJoin: function buildOuterJoin(operation, parentModel) {\n\t\t\treturn this.buildJoinTo(operation, parentModel);\n\t\t},\n\t\tbuildOuterJoinAll: function buildOuterJoinAll(operation, parentModel) {\n\t\t\treturn this.buildJoinTo(operation, parentModel);\n\t\t},\n\t\tbuildJoin: function buildJoin(operation, parentModel) {\n\t\t\treturn this.buildJoinTo(operation, parentModel);\n\t\t},\n\t\tbuildJoinAll: function buildJoinAll(operation, parentModel) {\n\t\t\treturn this.buildJoinTo(operation, parentModel);\n\t\t},\n\t\tbuildJoinTo: function buildJoinTo(operation, parentModel) {\n\t\t\tvar type = Ember.get(operation, 'operationType');\n\t\t\tvar modelType = Ember.get(operation, 'modelType');\n\t\t\tvar joinOn = Ember.get(operation, 'params.joinOn');\n\t\t\tvar joinModel = Ember.get(operation, 'params.joinModel');\n\t\t\tvar query = Ember.get(operation, 'params.query') || {};\n\t\t\tvar alias = Ember.String.camelize(Ember.get(operation, 'alias'));\n\n\t\t\tvar hasMany = isJoinAll(Ember.String.dasherize(type));\n\t\t\tvar isOuter = isOuterJoin(Ember.String.dasherize(type));\n\n\t\t\t(true && !(!Ember.isNone(modelType)) && Ember.assert('You must set a model type in the operation object.', !Ember.isNone(modelType)));\n\n\n\t\t\tvar modelKey = Ember.String.underscore(joinOn === 'id' ? joinModel + '-id' : 'id');\n\t\t\tvar modelProperty = getParamFromModels(joinOn, parentModel);\n\t\t\tif (Ember.isNone(modelProperty)) {\n\t\t\t\treturn Ember.RSVP.resolve(null);\n\t\t\t}\n\n\t\t\treturn this.store.findWhereIn(modelType, modelKey, modelProperty, query).then(function (children) {\n\t\t\t\talias = hasMany ? (0, _emberInflector.pluralize)(alias) : alias;\n\n\t\t\t\tvar promise = Ember.RSVP.resolve(children);\n\t\t\t\tif (!isOuter) {\n\t\t\t\t\tpromise = Ember.RSVP.resolve(null);\n\t\t\t\t\tif (!Ember.isNone(parentModel.forEach)) {\n\t\t\t\t\t\tvar getter = hasMany ? 'filterBy' : 'findBy';\n\t\t\t\t\t\tpromise = forEachPromise(parentModel, function (item) {\n\t\t\t\t\t\t\tvar childGet = Ember.get(children, getter);\n\t\t\t\t\t\t\tvar value = childGet.call(children, Ember.String.camelize(modelKey), getModelProperty(item, joinOn));\n\t\t\t\t\t\t\tEmber.set(item, alias, value);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparentModel.set(alias, hasMany ? children : children.objectAt(0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t\t});\n\t\t},\n\n\n\t\tdispatchCall: function dispatchCall(type, operation, parentModel) {\n\t\t\treturn this['build' + Ember.String.classify(type)].call(this, operation, parentModel);\n\t\t},\n\n\t\tbuildRequest: function buildRequest(operations, parents) {\n\t\t\tvar _this = this;\n\n\t\t\tvar requests = {};\n\t\t\tvar remove = [];\n\n\t\t\toperations.forEach(function (item) {\n\t\t\t\tvar type = Ember.get(item, 'operationType');\n\t\t\t\tvar alias = Ember.String.camelize(Ember.get(item, 'alias'));\n\n\t\t\t\tif (type === 'join' || type === 'joinAll' || type === 'outerJoin' || type === 'outerJoinAll') {\n\t\t\t\t\talias = isJoinAll(type) ? (0, _emberInflector.pluralize)(alias) : alias;\n\t\t\t\t\tvar joinTo = Ember.get(item, 'params.join');\n\t\t\t\t\talias = alias + '-' + joinTo;\n\n\t\t\t\t\tif (!objectIsEmpty(parents)) {\n\t\t\t\t\t\tvar parentPath = _this.findParentPath(item);\n\n\t\t\t\t\t\tif (!Ember.isEmpty(parentPath)) {\n\t\t\t\t\t\t\tvar parentModel = Ember.get(parents, parentPath);\n\n\t\t\t\t\t\t\tif (!Ember.isNone(parentModel)) {\n\t\t\t\t\t\t\t\tif (!Ember.isNone(Ember.get(parentModel, 'value'))) {\n\t\t\t\t\t\t\t\t\tparentModel = Ember.get(parentModel, 'value');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (Ember.get(parentModel, 'isLoaded') === true || Ember.get(parentModel, 'content.isLoaded') === true) {\n\t\t\t\t\t\t\t\t\trequests[alias] = _this.dispatchCall(type, item, parentModel);\n\t\t\t\t\t\t\t\t\tremove.pushObject(item);\n\t\t\t\t\t\t\t\t\t_this.finishedList.unshiftObject(item);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trequests[alias] = _this.dispatchCall(type, item);\n\t\t\t\t\tremove.pushObject(item);\n\t\t\t\t\t_this.finishedList.unshiftObject(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\toperations.removeObjects(remove);\n\t\t\treturn Ember.RSVP.hashSettled(requests).then(function (data) {\n\t\t\t\t// convert hashSettled data to regular hash data\n\t\t\t\tvar _data = {};\n\t\t\t\tfor (var i in data) {\n\t\t\t\t\tif (data.hasOwnProperty(i)) {\n\t\t\t\t\t\tvar val = Ember.get(data[i], 'value');\n\t\t\t\t\t\tif (!Ember.isNone(val)) {\n\t\t\t\t\t\t\t_data[i.replace(/-[\\s\\S]*$/, '')] = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn _data;\n\t\t\t});\n\t\t},\n\t\tfindParentPath: function findParentPath(operation) {\n\t\t\tvar joinName = Ember.get(operation || {}, 'params.join');\n\t\t\tif (Ember.isNone(joinName)) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tvar parentPath = '';\n\t\t\tvar currJoin = joinName;\n\t\t\tvar finished = this.finishedList;\n\t\t\tvar isOuter = false;\n\n\t\t\tfor (var key in finished) {\n\t\t\t\tif (finished.hasOwnProperty(key)) {\n\t\t\t\t\tvar item = finished[key];\n\t\t\t\t\tif (Ember.get(item, 'modelType') === Ember.String.dasherize(currJoin)) {\n\t\t\t\t\t\tvar tempName = Ember.String.camelize(Ember.get(item, 'modelType'));\n\t\t\t\t\t\tif (isJoinAll(Ember.get(item, 'operationType'))) {\n\t\t\t\t\t\t\ttempName = (0, _emberInflector.pluralize)(tempName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentPath = tempName + '.' + parentPath;\n\t\t\t\t\t\tcurrJoin = Ember.get(item, 'params.join');\n\t\t\t\t\t\tisOuter = isOuterJoin(Ember.get(item, 'operationType'));\n\t\t\t\t\t} else if (Ember.get(item, 'alias') === Ember.String.camelize(currJoin)) {\n\t\t\t\t\t\tparentPath = Ember.get(item, 'alias') + '.' + parentPath;\n\t\t\t\t\t\tcurrJoin = Ember.get(item, 'params.join');\n\t\t\t\t\t\tisOuter = isOuterJoin(Ember.get(item, 'operationType'));\n\t\t\t\t\t}\n\n\t\t\t\t\t// break from the loop if the currJoin is null\n\t\t\t\t\t// or we hit an outer join model\n\t\t\t\t\tif (Ember.isNone(currJoin) || isOuter) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentPath = parentPath.replace(/\\.$/, '');\n\t\t\treturn parentPath;\n\t\t}\n\t});\n});","define('busy-app/utils/request-helpers', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar FilterArray = Ember.ArrayProxy.extend(Ember.Enumerable);\n\n\t/**\n  * Private helper function to get properties from the models\n  *\n  * @private\n  * @method getModelProperty\n  * @param model {DS.Model}\n  * @param key {string}\n  * @return {mixed}\n  */\n\t/**\n  * @module Utils\n  *\n  */\n\tfunction getModelProperty(model, key) {\n\t\treturn Ember.get(model, camelizePath(key));\n\t}\n\n\t/**\n  * Private helper function to get properties from the models\n  *\n  * @private\n  * @method setModelProperty\n  * @param model {DS.Model}\n  * @param key {string}\n  * @param value {mixed}\n  * @return {mixed}\n  */\n\tfunction setModelProperty(model, key, value) {\n\t\tEmber.set(model, camelizePath(key), value);\n\t}\n\n\t/**\n  * Private helper function for generating a rendom id hash\n  *\n  * @Private\n  * @method generateId\n  * @return {string}\n  */\n\tfunction generateId() {\n\t\tfunction s4() {\n\t\t\treturn Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n\t\t}\n\t\treturn s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n\t}\n\n\tfunction mergeObject(toObject, fromObject) {\n\t\tfor (var i in fromObject) {\n\t\t\tif (fromObject.hasOwnProperty(i)) {\n\t\t\t\tvar prop = getModelProperty(fromObject, i);\n\t\t\t\tif (!Ember.isNone(prop)) {\n\t\t\t\t\tsetModelProperty(toObject, i, prop);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn toObject;\n\t}\n\n\tfunction cleanArray(arr) {\n\t\tarr = arr || [];\n\t\treturn FilterArray.create({ content: arr }).filter(function (item) {\n\t\t\treturn !Ember.isNone(item);\n\t\t});\n\t}\n\n\tfunction generateModelPath() {\n\t\tvar args = arguments;\n\t\tfor (var key in args) {\n\t\t\tif (args.hasOwnProperty(key) && !Ember.isNone(args[key]) && key !== 'length') {\n\t\t\t\tvar extendedPath = args[key].split('.');\n\t\t\t\tif (extendedPath.length > 1) {\n\t\t\t\t\targs[key] = generateModelPath.apply(null, extendedPath);\n\t\t\t\t} else {\n\t\t\t\t\targs[key] = Ember.String.camelize(args[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar path = cleanArray(arguments).join('.');\n\t\treturn path;\n\t}\n\n\tfunction camelizePath(path) {\n\t\treturn generateModelPath.apply(null, path.split('.'));\n\t}\n\n\texports.getModelProperty = getModelProperty;\n\texports.setModelProperty = setModelProperty;\n\texports.generateId = generateId;\n\texports.generateModelPath = generateModelPath;\n\texports.mergeObject = mergeObject;\n});","define('busy-app/utils/request-manager', ['exports', 'busy-app/utils/request-handler', 'busy-app/utils/request-helpers', '@busy-web/utils'], function (exports, _requestHandler, _requestHelpers, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar getModelProperty = _requestHelpers.default.getModelProperty,\n\t    setModelProperty = _requestHelpers.default.setModelProperty,\n\t    generateModelPath = _requestHelpers.default.generateModelPath,\n\t    generateId = _requestHelpers.default.generateId,\n\t    mergeObject = _requestHelpers.default.mergeObject;\n\n\n\tfunction buildDataObject(toObject, fromObject) {\n\t\tif (Object.keys(fromObject).length === 0) {\n\t\t\treturn toObject;\n\t\t}\n\n\t\tfor (var i in fromObject) {\n\t\t\tif (fromObject.hasOwnProperty(i)) {\n\t\t\t\tvar base = i.split('.');\n\t\t\t\tbase.pop();\n\t\t\t\tbase = base.join('.');\n\t\t\t\tif (getModelProperty(toObject, base)) {\n\t\t\t\t\tsetModelProperty(toObject, i, getModelProperty(fromObject, i));\n\t\t\t\t\tdelete fromObject[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn buildDataObject(toObject, fromObject);\n\t}\n\n\t/**\n  * `Util\\Manager`\n  *\n  */\n\texports.default = Ember.Object.extend({\n\t\tstore: null,\n\t\toperations: null,\n\n\t\t__collection: null,\n\t\t__storedOperations: null,\n\n\t\t__lastOperation: null,\n\t\t__nestedOperation: null,\n\n\t\tquery: function query(modelType) {\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\tvar alias = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\t\tthis.addOperation('query', modelType, { query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tqueryRecord: function queryRecord(modelType) {\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\tvar alias = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\t\tthis.addOperation('queryRecord', modelType, { query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tfindAll: function findAll(modelType) {\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t\tvar alias = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\t\t\tthis.addOperation('findAll', modelType, { query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tfindWhereIn: function findWhereIn(modelType, key, id) {\n\t\t\tvar query = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\t\t\tvar alias = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n\t\t\tthis.addOperation('findWhereIn', modelType, { key: key, id: id, query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tfindRecord: function findRecord(modelType, id, alias) {\n\t\t\tthis.addOperation('findRecord', modelType, { id: id }, alias);\n\t\t\treturn this;\n\t\t},\n\t\touterJoin: function outerJoin(modelType, join, joinOn, query, alias) {\n\t\t\tthis.addOperation('outerJoin', modelType, { join: join, joinOn: joinOn, query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\touterJoinAll: function outerJoinAll(modelType, join, joinOn, query, alias) {\n\t\t\tthis.addOperation('outerJoinAll', modelType, { join: join, joinOn: joinOn, query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tjoin: function join(modelType, _join, joinOn, query, alias) {\n\t\t\tthis.addOperation('join', modelType, { join: _join, joinOn: joinOn, query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tjoinAll: function joinAll(modelType, join, joinOn, query, alias) {\n\t\t\tthis.addOperation('joinAll', modelType, { join: join, joinOn: joinOn, query: query }, alias);\n\t\t\treturn this;\n\t\t},\n\t\tcallJoinFromModel: function callJoinFromModel(lastOperation, key) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.test('You must have a record type to call a `get` join model for that record', !Ember.isNone(lastOperation));\n\n\t\t\t// get the join data from the last operations model\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar modelName = lastOperation.get('modelType');\n\t\t\tvar model = owner.factoryFor('model:' + Ember.String.dasherize(modelName));\n\t\t\tvar meta = model.metaForProperty(key);\n\t\t\tvar opts = meta.join;\n\n\t\t\t// throw error if not a valid join object\n\t\t\t_utils.Assert.test('get did not find a valid join param at key [' + key + ']', !Ember.isNone(opts) && (typeof opts === 'undefined' ? 'undefined' : _typeof(opts)) === 'object' && opts._isJoin === true);\n\n\t\t\tthis[opts.method].call(this, opts.modelType, modelName, opts.joinOn, opts.query, key);\n\t\t},\n\t\tget: function get(key) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\n\t\t\t// get the last operation to join onto\n\t\t\tvar lastOperation = this.__lastOperation;\n\n\t\t\t// call method to add join\n\t\t\tthis.callJoinFromModel(lastOperation, key);\n\n\t\t\tthis.__lastOperation = lastOperation;\n\t\t\treturn this;\n\t\t},\n\t\tbeginGet: function beginGet(key) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\n\t\t\t// get the last operation to join onto\n\t\t\tvar lastOperation = this.__lastOperation;\n\n\t\t\t// call method to add join\n\t\t\tthis.callJoinFromModel(lastOperation, key);\n\n\t\t\t// if no nested create new nested array map\n\t\t\tif (Ember.isNone(this.__nestedOperation)) {\n\t\t\t\tthis.__nestedOperation = [];\n\t\t\t}\n\n\t\t\t// push the last operation to the nested map\n\t\t\tthis.__nestedOperation.push(lastOperation);\n\n\t\t\treturn this;\n\t\t},\n\t\tendGet: function endGet() {\n\t\t\t// pop the lastoperation off the nested map\n\t\t\tthis.__lastOperation = this.__nestedOperation.pop();\n\n\t\t\t// if the array is empty set it back to null\n\t\t\tif (Ember.isEmpty(this.__nestedOperation)) {\n\t\t\t\tthis.__nestedOperation = null;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\t\tcollection: function collection(type) {\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar Collection = owner.factoryFor('collection:' + Ember.String.dasherize(type));\n\t\t\tvar collection = Collection.create({\n\t\t\t\tstore: this.store,\n\t\t\t\tmanager: this,\n\t\t\t\tgetter: this,\n\t\t\t\tcontent: Ember.A()\n\t\t\t});\n\n\t\t\tthis.__collection = collection;\n\n\t\t\treturn this;\n\t\t},\n\t\tpolymorph: function polymorph(type) {\n\t\t\tvar owner = Ember.getOwner(this);\n\t\t\tvar Polymorph = owner.factoryFor('polymorph:' + Ember.String.dasherize(type));\n\t\t\tvar polymorph = Polymorph.create({\n\t\t\t\tstore: this.store,\n\t\t\t\tmanager: this,\n\t\t\t\tgetter: this,\n\t\t\t\tid: generateId(),\n\t\t\t\t_name: type\n\t\t\t});\n\n\t\t\tthis.__polymorph = polymorph;\n\n\t\t\treturn this;\n\t\t},\n\t\tclearPolymorph: function clearPolymorph() {\n\t\t\tthis.__polymorph = null;\n\t\t\treturn this;\n\t\t},\n\t\taddOperation: function addOperation(operationType, modelType, params, alias) {\n\t\t\tvar id = generateId();\n\t\t\tif (Ember.isEmpty(alias)) {\n\t\t\t\talias = modelType;\n\t\t\t}\n\n\t\t\tif (params.join) {\n\t\t\t\tvar join = this.__storedOperations.findBy('alias', params.join);\n\t\t\t\tparams.joinModel = Ember.get(join, 'modelType');\n\t\t\t}\n\n\t\t\tvar operation = Ember.Object.create({ id: id, alias: alias, params: params, operationType: operationType, modelType: modelType, polymorph: this.__polymorph });\n\t\t\tthis.operations.pushObject(operation);\n\t\t\tthis.__storedOperations.pushObject(Ember.Object.create({ id: id, alias: alias, params: params, operationType: operationType, modelType: modelType, polymorph: this.__polymorph }));\n\t\t\tthis.__lastOperation = operation;\n\t\t},\n\t\treloadOperations: function reloadOperations() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.__storedOperations.forEach(function (item) {\n\t\t\t\t_this.operations.pushObject(Ember.Object.create({\n\t\t\t\t\tid: item.get('id'),\n\t\t\t\t\toperationType: item.get('operationType'),\n\t\t\t\t\tmodelType: item.get('modelType'),\n\t\t\t\t\talias: item.get('alias'),\n\t\t\t\t\tparams: item.get('params'),\n\t\t\t\t\tpolymorph: item.get('polymorph')\n\t\t\t\t}));\n\t\t\t});\n\t\t},\n\t\tupdate: function update() {\n\t\t\tthis.reloadOperations();\n\t\t\treturn this.fetch();\n\t\t},\n\t\tapplyPolymorphs: function applyPolymorphs(data) {\n\t\t\tvar operations = Ember.get(this, '__storedOperations');\n\t\t\tvar dataMap = {};\n\t\t\toperations.forEach(function (item) {\n\t\t\t\tvar type = item.get('modelType');\n\t\t\t\tvar parentType = item.get('query.join');\n\t\t\t\tvar path = generateModelPath(parentType, type);\n\n\t\t\t\tvar polymorph = item.get('polymorph');\n\t\t\t\tif (!Ember.isNone(polymorph)) {\n\t\t\t\t\tvar model = getModelProperty(data, path);\n\t\t\t\t\tsetModelProperty(data, path, null);\n\n\t\t\t\t\tvar polyName = generateModelPath(parentType, polymorph.get('_name'));\n\t\t\t\t\tif (getModelProperty(dataMap, polyName) === undefined) {\n\t\t\t\t\t\tsetModelProperty(dataMap, polyName, polymorph);\n\t\t\t\t\t}\n\t\t\t\t\tsetModelProperty(dataMap, generateModelPath(polyName, type), model);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (var i in data) {\n\t\t\t\tif (data.hasOwnProperty(i)) {\n\t\t\t\t\tif (data[i] === null) {\n\t\t\t\t\t\tdelete data[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn buildDataObject(data, dataMap);\n\t\t},\n\t\tfetch: function fetch() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar args = arguments;\n\t\t\tvar requester = _requestHandler.default.create({ store: this.store, finishedList: Ember.A() });\n\t\t\tvar operations = Ember.get(this, 'operations');\n\t\t\tif (operations.length === 0) {\n\t\t\t\treturn this.__collection.model.apply(this.__collection, args);\n\t\t\t} else {\n\t\t\t\treturn this.__fetch(requester, operations).then(function (data) {\n\t\t\t\t\tvar polyData = _this2.applyPolymorphs(data);\n\t\t\t\t\tif (!Ember.isNone(_this2.__collection)) {\n\t\t\t\t\t\treturn _this2.__collection.populateModels(polyData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn polyData;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t__fetch: function __fetch(req, operations, parents, tries) {\n\t\t\tvar _this3 = this;\n\n\t\t\tparents = parents || {};\n\t\t\ttries = tries || 0;\n\n\t\t\tvar length = operations.get('length');\n\t\t\tif (length === 0 || tries >= 100) {\n\t\t\t\treturn Ember.RSVP.resolve(parents);\n\t\t\t}\n\n\t\t\treturn req.buildRequest(operations, parents).then(function (data) {\n\t\t\t\tif (!Ember.isNone(data)) {\n\t\t\t\t\tmergeObject(parents, data);\n\t\t\t\t}\n\t\t\t\treturn _this3.__fetch(req, operations, parents, ++tries);\n\t\t\t});\n\t\t}\n\t});\n});","define('busy-app/utils/round-time', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.round = round;\n\texports.roundDown = roundDown;\n\texports.roundUp = roundUp;\n\texports.roundTime = roundTime;\n\texports.roundOrgTime = roundOrgTime;\n\tfunction round(number, interval) {\n\t\tvar dist = number % interval;\n\t\tvar low = interval - dist;\n\t\tif (low > dist) {\n\t\t\tnumber -= dist;\n\t\t} else {\n\t\t\tnumber += low;\n\t\t}\n\t\treturn number;\n\t} /**\n    * @module Util\n    *\n    */\n\tfunction roundDown(number, interval) {\n\t\tvar diff = number % interval;\n\t\treturn number - diff;\n\t}\n\n\tfunction roundUp(number, interval) {\n\t\tvar diff = interval - number % interval;\n\t\treturn number + diff;\n\t}\n\n\tfunction roundTime(time, interval) {\n\t\tvar type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'nearest';\n\n\t\tvar date = _utils.Time.date(time);\n\t\t(true && !(date.isValid()) && Ember.assert('roundTime requires a valid timestamp in seconds', date.isValid()));\n\n\n\t\t// make sure the interval is an integer value not a float\n\t\tinterval = parseInt(interval, 10);\n\n\t\t// get the timestamp minutes\n\t\tvar minutes = date.minute();\n\n\t\t// only round time if the time is not already\n\t\t// on a interval\n\t\tif (minutes % interval !== 0) {\n\t\t\tif (type === 'nearest') {\n\t\t\t\tminutes = round(minutes, interval);\n\t\t\t} else if (type === 'down') {\n\t\t\t\tminutes = roundDown(minutes, interval);\n\t\t\t} else if (type === 'up') {\n\t\t\t\tminutes = roundUp(minutes, interval);\n\t\t\t}\n\t\t}\n\n\t\t// set the new timestamp minutes and zero the\n\t\t// seconds so the clock still looks rounded\n\t\t// even when clocking in on the interval\n\t\tdate.minute(minutes).seconds(0);\n\n\t\t// return seconds timestamp\n\t\treturn date.unix();\n\t}\n\n\tfunction roundOrgTime(organization, time, _ref) {\n\t\tvar _ref$isStart = _ref.isStart,\n\t\t    isStart = _ref$isStart === undefined ? false : _ref$isStart,\n\t\t    _ref$isEnd = _ref.isEnd,\n\t\t    isEnd = _ref$isEnd === undefined ? false : _ref$isEnd,\n\t\t    _ref$isBreak = _ref.isBreak,\n\t\t    isBreak = _ref$isBreak === undefined ? false : _ref$isBreak,\n\t\t    _ref$isSwitch = _ref.isSwitch,\n\t\t    isSwitch = _ref$isSwitch === undefined ? false : _ref$isSwitch;\n\n\t\tif (organization && Ember.get(organization, 'timeRounding')) {\n\t\t\tvar interval = parseInt(Ember.getWithDefault(organization, 'timeRoundingInterval', 1) / 60, 10);\n\t\t\tvar roundType = Ember.get(organization, 'timeRoundingType');\n\n\t\t\t// set default to roundType 10 => nearest\n\t\t\tvar type = 'nearest';\n\t\t\tif (roundType === 20) {\n\t\t\t\t// type 20 => round down\n\t\t\t\ttype = 'down';\n\t\t\t} else if (roundType === 30) {\n\t\t\t\t// type 30 => round up\n\t\t\t\ttype = 'up';\n\t\t\t} else if (roundType === 40) {\n\t\t\t\t// type 40 => employee favorable\n\t\t\t\tif (isBreak || isSwitch) {\n\t\t\t\t\t// breaks round to nearest on employee favorable\n\t\t\t\t\ttype = 'nearest';\n\t\t\t\t} else if (isStart) {\n\t\t\t\t\t// start times are rounded down\n\t\t\t\t\ttype = 'down';\n\t\t\t\t} else if (isEnd) {\n\t\t\t\t\t// end times are rounded up\n\t\t\t\t\ttype = 'up';\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Employee favorable types require isStart, isEnd, isBreak, or isSwitch to be passed in\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttime = roundTime(time, interval, type);\n\t\t}\n\t\treturn time;\n\t}\n});","define('busy-app/utils/settings', ['exports', 'busy-app/config/environment', '@busy-web/utils'], function (exports, _environment, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _createClass = function () {\n\t\tfunction defineProperties(target, props) {\n\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\tvar descriptor = props[i];\n\t\t\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\t\t\tdescriptor.configurable = true;\n\t\t\t\tif (\"value\" in descriptor) descriptor.writable = true;\n\t\t\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t\t\t}\n\t\t}\n\n\t\treturn function (Constructor, protoProps, staticProps) {\n\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t\t\tif (staticProps) defineProperties(Constructor, staticProps);\n\t\t\treturn Constructor;\n\t\t};\n\t}();\n\n\tvar APP = _environment.default.APP,\n\t    featureFlags = _environment.default.featureFlags;\n\n\tvar Settings = function () {\n\t\tfunction Settings() {\n\t\t\t_classCallCheck(this, Settings);\n\t\t}\n\n\t\t_createClass(Settings, null, [{\n\t\t\tkey: 'get',\n\t\t\tvalue: function get(key) {\n\t\t\t\t_utils.Assert.isString(key);\n\t\t\t\tkey = key.toUpperCase();\n\t\t\t\treturn Ember.get(APP, key);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getFeatureList',\n\t\t\tvalue: function getFeatureList() {\n\t\t\t\treturn featureFlags;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getFeature',\n\t\t\tvalue: function getFeature(key) {\n\t\t\t\t_utils.Assert.isString(key);\n\n\t\t\t\treturn Ember.get(featureFlags, key);\n\t\t\t}\n\t\t}]);\n\n\t\treturn Settings;\n\t}();\n\n\texports.default = Settings;\n});","define('busy-app/utils/sortable-object', ['exports', '@busy-web/components/utils/sortable-object'], function (exports, _sortableObject) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _sortableObject.default;\n    }\n  });\n});","define('busy-app/utils/state', ['exports', 'ember-data', 'busy-app/utils/logger'], function (exports, _emberData, _logger) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.deserializeModel = exports.deserializeModelArray = exports.createStateRecord = exports.createStateRecordArray = exports.getState = exports.updateState = exports.createAppState = undefined;\n\n\tfunction _toConsumableArray(arr) {\n\t\tif (Array.isArray(arr)) {\n\t\t\tfor (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n\t\t\treturn arr2;\n\t\t} else {\n\t\t\treturn Array.from(arr);\n\t\t}\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _createClass = function () {\n\t\tfunction defineProperties(target, props) {\n\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\tvar descriptor = props[i];\n\t\t\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\t\t\tdescriptor.configurable = true;\n\t\t\t\tif (\"value\" in descriptor) descriptor.writable = true;\n\t\t\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t\t\t}\n\t\t}\n\n\t\treturn function (Constructor, protoProps, staticProps) {\n\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t\t\tif (staticProps) defineProperties(Constructor, staticProps);\n\t\t\treturn Constructor;\n\t\t};\n\t}();\n\n\tfunction _possibleConstructorReturn(self, call) {\n\t\tif (!self) {\n\t\t\tthrow new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\t\t}\n\n\t\treturn call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n\t}\n\n\tfunction _inherits(subClass, superClass) {\n\t\tif (typeof superClass !== \"function\" && superClass !== null) {\n\t\t\tthrow new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n\t\t}\n\n\t\tsubClass.prototype = Object.create(superClass && superClass.prototype, {\n\t\t\tconstructor: {\n\t\t\t\tvalue: subClass,\n\t\t\t\tenumerable: false,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t}\n\t\t});\n\t\tif (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tvar APP_STATE_PATH = \"__asm__\";\n\tvar APP_GLOBAL = window || {};\n\n\tvar __setState = function __setState(state) {\n\t\treturn APP_GLOBAL[APP_STATE_PATH] = state;\n\t};\n\n\tvar __getState = function __getState() {\n\t\treturn APP_GLOBAL[APP_STATE_PATH];\n\t};\n\n\tvar createAppState = exports.createAppState = function createAppState() {\n\t\tvar initState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t__setState(initState);\n\n\t\treturn { setState: __setState, getState: __getState };\n\t};\n\n\t/**\n  * updates the state with new state objects\n  *\n  */\n\tvar updateState = exports.updateState = function updateState(_state) {\n\t\t(true && !(_state instanceof StateRecord || _state instanceof StateRecordArray) && Ember.assert(\"updateState requires a StateRecord or a StateRecordArray\", _state instanceof StateRecord || _state instanceof StateRecordArray));\n\n\n\t\tvar serializedRecord = void 0;\n\t\tif (_state instanceof StateRecord) {\n\t\t\tserializedRecord = serializeStateRecord(_state);\n\t\t} else if (_state instanceof StateRecordArray) {\n\t\t\tserializedRecord = serializeStateRecordArray(_state);\n\t\t}\n\n\t\tvar app_state = Object.assign({}, __getState());\n\t\tObject.keys(serializedRecord).forEach(function (key) {\n\t\t\tapp_state[key] = Object.assign({}, app_state[key], serializedRecord[key]);\n\t\t});\n\n\t\t// copy the state and merge the new state\n\t\tvar state = Object.assign(__getState(), app_state);\n\n\t\t_logger.default.info(\"<utils:state>\", { state: Object.assign({}, state), serializedRecord: Object.assign({}, serializedRecord) });\n\n\t\t// set new state\n\t\t__setState(state);\n\n\t\t// return new state object\n\t\treturn getState(_state.__type, _state.id);\n\t};\n\n\tvar getState = exports.getState = function getState(type, id) {\n\t\tvar state = __getState();\n\n\t\t// get raw state from state object\n\t\tvar rawState = Object.assign({}, state[type]);\n\n\t\t// result for state return\n\t\tvar returnState = void 0;\n\n\t\t// if id is not provided then return a\n\t\t// stateRecordArray of the objects\n\t\tif (Ember.isEmpty(id)) {\n\t\t\t// get array of raw state objects\n\t\t\tvar stateArray = Object.values(rawState).map(function (sa) {\n\t\t\t\treturn new StateRecord(type, sa);\n\t\t\t});\n\n\t\t\t// create new record array state\n\t\t\treturnState = new StateRecordArray(type, stateArray);\n\t\t} else {\n\t\t\t// return only the StateRecord for the object matching the id\n\t\t\treturnState = new StateRecord(type, rawState[id]);\n\t\t}\n\t\treturn returnState;\n\t};\n\n\tvar createStateRecordArray = exports.createStateRecordArray = function createStateRecordArray(modelArray, type) {\n\t\tif (Ember.isEmpty(type)) {\n\t\t\t// modelArray is an ember record array object.\n\t\t\ttype = Ember.get(modelArray || {}, 'modelName') || Ember.get(modelArray || {}, 'type');\n\t\t}\n\n\t\t(true && !(!Ember.isEmpty(type)) && Ember.assert(\"type was not found on the modelArray\", !Ember.isEmpty(type)));\n\n\n\t\treturn new StateRecordArray(type, modelArray);\n\t};\n\n\tvar createStateRecord = exports.createStateRecord = function createStateRecord(model, type) {\n\t\tif (Ember.isEmpty(type)) {\n\t\t\ttype = model._internalModel.modelName;\n\t\t}\n\n\t\t(true && !(!Ember.isEmpty(type)) && Ember.assert(\"type was not found on the model\", !Ember.isEmpty(type)));\n\n\n\t\treturn new StateRecord(type, model);\n\t};\n\n\tvar deserializeModelArray = exports.deserializeModelArray = function deserializeModelArray(modelArray) {\n\t\t(true && !(Array.isArray(modelArray) || Array.isArray(Ember.get(modelArray, 'content'))) && Ember.assert('deserializeModelArray requires an Array, you passed [ ' + (typeof modelArray === 'undefined' ? 'undefined' : _typeof(modelArray)) + ' ]', Array.isArray(modelArray) || Array.isArray(Ember.get(modelArray, 'content'))));\n\n\t\t// get state array\n\n\t\treturn modelArray.map(function (model) {\n\t\t\treturn deserializeModel(model);\n\t\t});\n\t};\n\n\tvar deserializeModel = exports.deserializeModel = function deserializeModel(model) {\n\t\t(true && !(isModel(model)) && Ember.assert('deserializeModel requires a DS.Model, you passed [ ' + (typeof model === 'undefined' ? 'undefined' : _typeof(model)) + ' ]', isModel(model)));\n\n\t\t// create state from model\n\n\t\treturn model.toJSON({ includeId: true });\n\t};\n\n\tvar StateRecord = function (_EmberObject) {\n\t\t_inherits(StateRecord, _EmberObject);\n\n\t\tfunction StateRecord(type) {\n\t\t\tvar _ref;\n\n\t\t\t_classCallCheck(this, StateRecord);\n\n\t\t\tfor (var _len = arguments.length, props = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\t\tprops[_key - 1] = arguments[_key];\n\t\t\t}\n\n\t\t\tvar _this = _possibleConstructorReturn(this, (_ref = StateRecord.__proto__ || Object.getPrototypeOf(StateRecord)).call.apply(_ref, [this].concat(props)));\n\n\t\t\t// set record type\n\t\t\t_this.__type = type;\n\t\t\treturn _this;\n\t\t}\n\n\t\t_createClass(StateRecord, [{\n\t\t\tkey: 'eachProperty',\n\t\t\tvalue: function eachProperty(cb) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\t\t\t(true && !(typeof cb === 'function') && Ember.assert(\"eachProperty requires a callback method\", typeof cb === 'function'));\n\n\n\t\t\t\tObject.keys(this).forEach(function (key) {\n\t\t\t\t\tif (key !== '__type') {\n\t\t\t\t\t\tcb.call(target, _this2[key], key);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getProperties',\n\t\t\tvalue: function getProperties() {\n\t\t\t\tvar props = {};\n\t\t\t\tthis.eachProperty(function (value, key) {\n\t\t\t\t\treturn props[key] = value;\n\t\t\t\t});\n\t\t\t\treturn props;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'serialize',\n\t\t\tvalue: function serialize() {\n\t\t\t\tvar props = this.getProperties();\n\t\t\t\treturn _defineProperty({}, props.id, props);\n\t\t\t}\n\t\t}], [{\n\t\t\tkey: Symbol.species,\n\t\t\tget: function get() {\n\t\t\t\treturn StateRecord;\n\t\t\t}\n\t\t}]);\n\n\t\treturn StateRecord;\n\t}(Ember.Object);\n\n\tvar ensureStateRecord = function ensureStateRecord(type, record) {\n\t\tif (!(record instanceof StateRecord)) {\n\t\t\trecord = new StateRecord(type, record);\n\t\t}\n\t\treturn record;\n\t};\n\n\tvar StateRecordArray = function (_EmberObject$extend) {\n\t\t_inherits(StateRecordArray, _EmberObject$extend);\n\n\t\tfunction StateRecordArray(type, list) {\n\t\t\t_classCallCheck(this, StateRecordArray);\n\n\t\t\tvar _this3 = _possibleConstructorReturn(this, (StateRecordArray.__proto__ || Object.getPrototypeOf(StateRecordArray)).call(this));\n\n\t\t\t_this3.__type = type;\n\t\t\t_this3.content = list.map(function (ms) {\n\t\t\t\treturn ensureStateRecord(type, ms);\n\t\t\t});\n\t\t\treturn _this3;\n\t\t}\n\n\t\t_createClass(StateRecordArray, [{\n\t\t\tkey: 'replace',\n\t\t\tvalue: function replace() {\n\t\t\t\tvar idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar amt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\t\t\tvar objects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n\t\t\t\t// concat new content\n\t\t\t\tthis.content = [].concat(this.slice(0, idx), objects.map(function (obj) {\n\t\t\t\t\treturn ensureStateRecord(_this4.__type, obj);\n\t\t\t\t}), this.slice(idx, amt));\n\n\t\t\t\t// define getter for this[0] to this[...n]\n\t\t\t\tthis.content.forEach(function (v, i) {\n\t\t\t\t\treturn _this4.__defineGetter__(i, function () {\n\t\t\t\t\t\treturn _this4.content[i];\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'serialize',\n\t\t\tvalue: function serialize() {\n\t\t\t\tvar records = this.map(function (state) {\n\t\t\t\t\treturn state.serialize();\n\t\t\t\t});\n\t\t\t\tif (!records.length) {\n\t\t\t\t\trecords = [{}];\n\t\t\t\t}\n\t\t\t\treturn Object.assign.apply(Object, _toConsumableArray(records));\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'clone',\n\t\t\tvalue: function clone() {\n\t\t\t\t//const content = ensureStateRecord(this._type, this.content.slice(0));\n\t\t\t\treturn new StateRecordArray(this.__type, this.slice(0));\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'cloneEmpty',\n\t\t\tvalue: function cloneEmpty() {\n\t\t\t\treturn new StateRecordArray(this.__type, []);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'pop',\n\t\t\tvalue: function pop() {\n\t\t\t\treturn this.popObject();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'push',\n\t\t\tvalue: function push(record) {\n\t\t\t\treturn this.pushObject(record);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'shift',\n\t\t\tvalue: function shift() {\n\t\t\t\treturn this.shiftObject();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'unshift',\n\t\t\tvalue: function unshift(record) {\n\t\t\t\treturn this.unshiftObject(record);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'toString',\n\t\t\tvalue: function toString() {\n\t\t\t\treturn this.toString();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'valueOf',\n\t\t\tvalue: function valueOf() {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'concat',\n\t\t\tvalue: function concat() {\n\t\t\t\tvar _content;\n\n\t\t\t\treturn (_content = this.content).concat.apply(_content, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'copyWithin',\n\t\t\tvalue: function copyWithin() {\n\t\t\t\tvar _content2;\n\n\t\t\t\treturn (_content2 = this.content).copyWithin.apply(_content2, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'entries',\n\t\t\tvalue: function entries() {\n\t\t\t\tvar _content3;\n\n\t\t\t\treturn (_content3 = this.content).entries.apply(_content3, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'every',\n\t\t\tvalue: function every() {\n\t\t\t\tvar _content4;\n\n\t\t\t\treturn (_content4 = this.content).every.apply(_content4, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'fill',\n\t\t\tvalue: function fill() {\n\t\t\t\tvar _content5;\n\n\t\t\t\treturn (_content5 = this.content).fill.apply(_content5, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'filter',\n\t\t\tvalue: function filter() {\n\t\t\t\tvar _content6;\n\n\t\t\t\treturn (_content6 = this.content).filter.apply(_content6, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'find',\n\t\t\tvalue: function find() {\n\t\t\t\tvar _content7;\n\n\t\t\t\treturn (_content7 = this.content).find.apply(_content7, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'findIndex',\n\t\t\tvalue: function findIndex() {\n\t\t\t\tvar _content8;\n\n\t\t\t\treturn (_content8 = this.content).findIndex.apply(_content8, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'flat',\n\t\t\tvalue: function flat() {\n\t\t\t\tvar _content9;\n\n\t\t\t\treturn (_content9 = this.content).flat.apply(_content9, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'flatMap',\n\t\t\tvalue: function flatMap() {\n\t\t\t\tvar _content10;\n\n\t\t\t\treturn (_content10 = this.content).flatMap.apply(_content10, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'forEach',\n\t\t\tvalue: function forEach() {\n\t\t\t\tvar _content11;\n\n\t\t\t\treturn (_content11 = this.content).forEach.apply(_content11, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'includes',\n\t\t\tvalue: function includes() {\n\t\t\t\tvar _content12;\n\n\t\t\t\treturn (_content12 = this.content).includes.apply(_content12, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'indexOf',\n\t\t\tvalue: function indexOf() {\n\t\t\t\tvar _content13;\n\n\t\t\t\treturn (_content13 = this.content).indexOf.apply(_content13, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'join',\n\t\t\tvalue: function join() {\n\t\t\t\tvar _content14;\n\n\t\t\t\treturn (_content14 = this.content).join.apply(_content14, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'keys',\n\t\t\tvalue: function keys() {\n\t\t\t\tvar _content15;\n\n\t\t\t\treturn (_content15 = this.content).keys.apply(_content15, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'lastIndexOf',\n\t\t\tvalue: function lastIndexOf() {\n\t\t\t\tvar _content16;\n\n\t\t\t\treturn (_content16 = this.content).lastIndexOf.apply(_content16, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'map',\n\t\t\tvalue: function map() {\n\t\t\t\tvar _content17;\n\n\t\t\t\treturn (_content17 = this.content).map.apply(_content17, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'reduce',\n\t\t\tvalue: function reduce() {\n\t\t\t\tvar _content18;\n\n\t\t\t\treturn (_content18 = this.content).reduce.apply(_content18, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'reduceRight',\n\t\t\tvalue: function reduceRight() {\n\t\t\t\tvar _content19;\n\n\t\t\t\treturn (_content19 = this.content).reduceRight.apply(_content19, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'reverse',\n\t\t\tvalue: function reverse() {\n\t\t\t\tvar _content20;\n\n\t\t\t\treturn (_content20 = this.content).reverse.apply(_content20, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'slice',\n\t\t\tvalue: function slice() {\n\t\t\t\tvar _content21;\n\n\t\t\t\treturn (_content21 = this.content).slice.apply(_content21, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'some',\n\t\t\tvalue: function some() {\n\t\t\t\tvar _content22;\n\n\t\t\t\treturn (_content22 = this.content).some.apply(_content22, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'sort',\n\t\t\tvalue: function sort() {\n\t\t\t\tvar _content23;\n\n\t\t\t\treturn (_content23 = this.content).sort.apply(_content23, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'splice',\n\t\t\tvalue: function splice() {\n\t\t\t\tvar _content24;\n\n\t\t\t\treturn (_content24 = this.content).splice.apply(_content24, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'toLocaleString',\n\t\t\tvalue: function toLocaleString() {\n\t\t\t\tvar _content25;\n\n\t\t\t\treturn (_content25 = this.content).toLocaleString.apply(_content25, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'toSource',\n\t\t\tvalue: function toSource() {\n\t\t\t\tvar _content26;\n\n\t\t\t\treturn (_content26 = this.content).toSource.apply(_content26, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'values',\n\t\t\tvalue: function values() {\n\t\t\t\tvar _content27;\n\n\t\t\t\treturn (_content27 = this.content).values.apply(_content27, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'length',\n\t\t\tget: function get() {\n\t\t\t\treturn this.content.length;\n\t\t\t}\n\t\t}], [{\n\t\t\tkey: Symbol.species,\n\t\t\tget: function get() {\n\t\t\t\treturn StateRecordArray;\n\t\t\t}\n\t\t}]);\n\n\t\treturn StateRecordArray;\n\t}(Ember.Object.extend(Ember.MutableArray));\n\n\t/**\n  * return object of model-type objects\n  *\n  * @method serializeStateRecordArray\n  * @param stateRecordArray {StateRecordArray}\n  * @return {object}\n  */\n\tvar serializeStateRecordArray = function serializeStateRecordArray(stateRecordArray) {\n\t\treturn _defineProperty({}, stateRecordArray.__type, stateRecordArray.serialize());\n\t};\n\n\tvar serializeStateRecord = function serializeStateRecord(state) {\n\t\treturn _defineProperty({}, state.__type, state.serialize());\n\t};\n\n\tvar isObject = function isObject(value) {\n\t\treturn !Ember.isNone(value) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object';\n\t};\n\n\tvar isModel = function isModel(value) {\n\t\treturn isObject(value) && value instanceof _emberData.default.Model;\n\t};\n});","define('busy-app/utils/string', ['exports'], function (exports) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = string;\n  exports.centsToDollarFormat = centsToDollarFormat;\n  function string() {\n    return true;\n  }\n\n  /**\n   * convert cents to dollars, fixed to 2 decimal places, with a dollar sign in front\n   *\n   * @public\n   * @method centsToDollarFormat\n   * @param cents {Integer}\n   * @returns {string}\n   */\n  function centsToDollarFormat(cents) {\n    var safeCents = parseInt(cents, 10);\n    var symbol = safeCents < 0 ? '-$' : '$';\n    var dollars = Math.abs(safeCents / 100).toFixed(2);\n\n    return '' + symbol + dollars;\n  }\n});","define('busy-app/utils/system-info', ['exports', '@busy-web/graylog/utils/system-info'], function (exports, _systemInfo) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _systemInfo.default;\n    }\n  });\n});","define('busy-app/utils/time-entry-break', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar TimeEntryBreak = Ember.Object.extend();\n\n\t/**\n  * `Utils/TimeEntryBreak`\n  *\n  * @class TimeEntryBreak\n  * @namespace Utils\n  * @extends EmberObject\n  */\n\t/**\n  * @module utils\n  *\n  */\n\tTimeEntryBreak.reopenClass({\n\t\ttotalTime: function totalTime(breaks, startBounds) {\n\t\t\tvar _this = this;\n\n\t\t\tvar endBounds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.Time.nistTimestamp();\n\t\t\tvar calcOpenBreak = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 4);\n\t\t\t_utils.Assert.isArray(breaks);\n\t\t\t_utils.Assert.isNumber(startBounds);\n\t\t\t_utils.Assert.isNumber(endBounds);\n\t\t\t_utils.Assert.isBoolean(calcOpenBreak);\n\n\t\t\tbreaks.forEach(function (entry) {\n\t\t\t\tif (!Ember.get(entry, 'isDeleted')) {\n\t\t\t\t\t_this.checkOverlappingTime(entry, breaks);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar breakTime = 0;\n\t\t\tbreaks.forEach(function (entry) {\n\t\t\t\tif (!Ember.get(entry, 'isDeleted')) {\n\t\t\t\t\tvar _entryTotalTime = _this.entryTotalTime(entry, startBounds, endBounds, calcOpenBreak),\n\t\t\t\t\t    total = _entryTotalTime.total;\n\n\t\t\t\t\tbreakTime += total;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn breakTime;\n\t\t},\n\t\tentryTotalTime: function entryTotalTime(entry, startBounds) {\n\t\t\tvar endBounds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.Time.nistTimestamp();\n\t\t\tvar includeOpenBreak = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 4);\n\t\t\t_utils.Assert.isObject(entry);\n\t\t\t_utils.Assert.isNumber(startBounds);\n\t\t\t_utils.Assert.isNumber(endBounds);\n\t\t\t_utils.Assert.isBoolean(includeOpenBreak);\n\n\t\t\t// get start and end time of the break\n\t\t\tvar startTime = Ember.get(entry, 'adjustedStartTime') || Ember.get(entry, 'startTime');\n\t\t\tvar endTime = Ember.get(entry, 'adjustedEndTime') || Ember.get(entry, 'endTime');\n\n\t\t\tvar isOpenBreak = false;\n\t\t\tif (Ember.isNone(endTime)) {\n\t\t\t\tisOpenBreak = true;\n\t\t\t\tif (includeOpenBreak) {\n\t\t\t\t\tendTime = endBounds;\n\t\t\t\t} else {\n\t\t\t\t\tendTime = startTime;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstartTime = startTime < startBounds ? startBounds : startTime;\n\t\t\tendTime = endTime > endBounds ? endBounds : endTime;\n\t\t\tendTime = endTime < startTime ? startTime : endTime;\n\n\t\t\tEmber.set(entry, 'adjustedStartTime', startTime);\n\t\t\tEmber.set(entry, 'adjustedEndTime', endTime);\n\t\t\tEmber.set(entry, 'isOpenBreak', true);\n\n\t\t\treturn {\n\t\t\t\tstartTime: startTime,\n\t\t\t\tendTime: endTime,\n\t\t\t\ttotal: endTime - startTime,\n\t\t\t\tisOpenBreak: isOpenBreak\n\t\t\t};\n\t\t},\n\t\tcheckOverlappingTime: function checkOverlappingTime(entry, breaks) {\n\t\t\tvar _this2 = this;\n\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2, true);\n\t\t\t_utils.Assert.isObject(entry);\n\t\t\t_utils.Assert.isArray(breaks);\n\n\t\t\tvar isOverlapping = false;\n\t\t\tvar id = Ember.get(entry, 'id');\n\n\t\t\t// get start and end adjusted time if it has it otherwise get the real start and endtime\n\t\t\tvar startTime = Ember.get(entry, 'adjustedStartTime') || Ember.get(entry, 'startTime');\n\t\t\tvar endTime = Ember.get(entry, 'adjustedEndTime') || Ember.get(entry, 'endTime');\n\t\t\tif (!Ember.isNone(endTime) && startTime < endTime) {\n\t\t\t\tbreaks.forEach(function (item) {\n\t\t\t\t\tif (id !== Ember.get(item, 'id')) {\n\t\t\t\t\t\tvar checkStart = Ember.get(item, 'adjustedStartTime') || Ember.get(item, 'startTime');\n\t\t\t\t\t\tvar checkEnd = Ember.get(item, 'adjustedEndTime') || Ember.get(item, 'endTime');\n\n\t\t\t\t\t\tvar _hasConflict = _this2.hasConflict(startTime, endTime, checkStart, checkEnd),\n\t\t\t\t\t\t    startsInside = _hasConflict.startsInside,\n\t\t\t\t\t\t    endsInside = _hasConflict.endsInside;\n\n\t\t\t\t\t\tif (startsInside && endsInside) {\n\t\t\t\t\t\t\t// The break is contained inside another break\n\t\t\t\t\t\t\t// set the end the same as the start so the time does not\n\t\t\t\t\t\t\t// effect the total break time.\n\t\t\t\t\t\t\tendTime = startTime;\n\t\t\t\t\t\t\tisOverlapping = true;\n\t\t\t\t\t\t} else if (startsInside) {\n\t\t\t\t\t\t\t// The startTime is contained inside another break\n\t\t\t\t\t\t\t// set the startTime to the other breaks endTime\n\t\t\t\t\t\t\tstartTime = checkEnd;\n\t\t\t\t\t\t\tisOverlapping = true;\n\t\t\t\t\t\t} else if (endsInside) {\n\t\t\t\t\t\t\t// The endTime is contained inside another break\n\t\t\t\t\t\t\t// set the endTime to the other breaks startTime\n\t\t\t\t\t\t\tendTime = checkStart;\n\t\t\t\t\t\t\tisOverlapping = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tEmber.set(entry, 'adjustedStartTime', startTime);\n\t\t\tEmber.set(entry, 'adjustedEndTime', endTime);\n\t\t\tEmber.set(entry, 'overlappingBreak', isOverlapping);\n\n\t\t\treturn isOverlapping;\n\t\t},\n\t\thasConflict: function hasConflict(thisStart, thisEnd, thatStart, thatEnd) {\n\t\t\tvar startsInside = false;\n\t\t\tvar endsInside = false;\n\t\t\tif (thisStart === thisEnd || thatStart === thatEnd) {\n\t\t\t\t// one or both entries have no time which is not a conlfict\n\t\t\t\tstartsInside = false;\n\t\t\t\tendsInside = false;\n\t\t\t} else if (thisStart >= thatStart && thisStart < thatEnd) {\n\t\t\t\t// entry1 start is within entry2 start and end\n\t\t\t\tstartsInside = true;\n\t\t\t} else if (thisEnd > thatStart && thisEnd <= thatEnd) {\n\t\t\t\t// entry1 end is within entry2 start and end\n\t\t\t\tendsInside = true;\n\t\t\t}\n\t\t\treturn { startsInside: startsInside, endsInside: endsInside };\n\t\t},\n\t\tvalidateTime: function validateTime(entry, startBounds, endBounds) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3);\n\t\t\t_utils.Assert.isObject(entry);\n\t\t\t_utils.Assert.isNumber(startBounds);\n\t\t\tif (!Ember.isNone(endBounds)) {\n\t\t\t\t_utils.Assert.isNumber(endBounds);\n\t\t\t}\n\n\t\t\tvar startTime = Ember.get(entry, 'startTime');\n\t\t\tvar endTime = Ember.get(entry, 'endTime');\n\t\t\tvar startInvalid = false;\n\t\t\tvar endInvalid = false;\n\n\t\t\tif (startTime < startBounds) {\n\t\t\t\tstartInvalid = true;\n\t\t\t} else if (!Ember.isNone(endBounds) && startTime >= endBounds) {\n\t\t\t\tstartInvalid = true;\n\t\t\t}\n\n\t\t\tif (!Ember.isNone(endTime)) {\n\t\t\t\tif (!Ember.isNone(endBounds) && endTime > endBounds) {\n\t\t\t\t\tendInvalid = true;\n\t\t\t\t} else if (endTime <= startBounds) {\n\t\t\t\t\tendInvalid = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tEmber.set(entry, 'startTime', startTime);\n\t\t\tEmber.set(entry, 'endTime', endTime);\n\n\t\t\treturn { startInvalid: startInvalid, endInvalid: endInvalid };\n\t\t}\n\t});\n\n\texports.default = TimeEntryBreak;\n});","define('busy-app/utils/time-entry-validator', ['exports', '@busy-web/utils'], function (exports, _utils) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  function _asyncToGenerator(fn) {\n    return function () {\n      var gen = fn.apply(this, arguments);\n      return new Promise(function (resolve, reject) {\n        function step(key, arg) {\n          try {\n            var info = gen[key](arg);\n            var value = info.value;\n          } catch (error) {\n            reject(error);\n            return;\n          }\n\n          if (info.done) {\n            resolve(value);\n          } else {\n            return Promise.resolve(value).then(function (value) {\n              step(\"next\", value);\n            }, function (err) {\n              step(\"throw\", err);\n            });\n          }\n        }\n\n        return step(\"next\");\n      });\n    };\n  }\n\n  /***/\n\n  // valid time entry action types\n  var kTimeEntryActions = [10, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100];\n\n  // valid time entry break action types\n  var kTimeEntryBreakActions = [10, 20, 25, 30, 40, 50, 60, 80, 90, 100];\n\n  var TimeEntryValidator = Ember.Object.extend();\n\n  /**\n   * `Util/TimeEntryValidator`\n   *\n   */\n  TimeEntryValidator.reopenClass({\n    timeEntry: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(organization, _timeEntry, validateOverlap, signInAnswers, authMember, covidRestricted, isFreeAccount) {\n        var _this = this;\n\n        var violation,\n            action,\n            hasOverlapRule,\n            flagged,\n            startOfDay,\n            endOfDay,\n            answers,\n            isValid,\n            _args = arguments;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                // require less than or equal to three args\n                _utils.Assert.funcNumArgs(_args, 7);\n\n                // args 1 and 2 must be models\n                _utils.Assert.isObject(organization);\n                _utils.Assert.isObject(_timeEntry);\n\n                // default validateOverlap to true if not passed in.\n                validateOverlap = !Ember.isNone(validateOverlap) ? validateOverlap : true;\n\n                // check for time violations for any time entry\n                violation = this.getTimeViolation(_timeEntry.get('startTime'), _timeEntry.get('endTime'), _timeEntry.get('member.lockDate'), organization.get('timeRounding'));\n\n                if (!violation) {\n                  _context.next = 9;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, violation));\n\n              case 9:\n                // check for violations on existing time entries\n                action = _timeEntry.get('actionType');\n                hasOverlapRule = false;\n\n                if (!(kTimeEntryActions.indexOf(action) !== -1)) {\n                  _context.next = 39;\n                  break;\n                }\n\n                hasOverlapRule = true;\n\n                // force project to be set if the organization requires a project\n\n                if (!(organization.get('trackProject') && organization.get('requireProject') && Ember.isNone(_timeEntry.get('projectId')))) {\n                  _context.next = 15;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, (0, _utils.loc)('Project is required.')));\n\n              case 15:\n                if (!(organization.get('trackCostCode') && organization.get('requireCostCode') && Ember.isNone(_timeEntry.get('costCodeId')))) {\n                  _context.next = 17;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, (0, _utils.loc)('Cost code is required.')));\n\n              case 17:\n                if (!(organization.get('busySignInQuestion') && action === 10 && !isFreeAccount)) {\n                  _context.next = 31;\n                  break;\n                }\n\n                if (Ember.isEmpty(authMember)) {\n                  _context.next = 31;\n                  break;\n                }\n\n                if (!(_timeEntry.get('memberId') === authMember.get('id'))) {\n                  _context.next = 31;\n                  break;\n                }\n\n                if (Ember.isEmpty(signInAnswers)) {\n                  _context.next = 26;\n                  break;\n                }\n\n                flagged = signInAnswers.filter(function (a) {\n                  return a.get('flagged') === true;\n                });\n\n                if (!(flagged.length > 0)) {\n                  _context.next = 24;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, (0, _utils.loc)('Clock in has been restricted due to COVID-19 risk.')));\n\n              case 24:\n                _context.next = 31;\n                break;\n\n              case 26:\n                if (!Ember.isEmpty(signInAnswers)) {\n                  _context.next = 31;\n                  break;\n                }\n\n                startOfDay = _utils.Time.date().startOf('day').unix();\n                endOfDay = _utils.Time.date().endOf('day').unix();\n                answers = DS.PromiseArray.create({\n                  promise: _timeEntry.store.query('member-sign-in-submission', { member_id: _timeEntry.get('member.id'), _lte: { created_on: endOfDay }, _gte: { created_on: startOfDay } })\n                });\n                return _context.abrupt('return', answers.then(function (a) {\n                  var flagged = a.filter(function (ans) {\n                    return ans.get('flagged') === true;\n                  });\n\n                  if (flagged.length > 0) {\n                    return _this._response(false, (0, _utils.loc)('Clock in has been restricted due to COVID-19 risk.'));\n                  } else {\n                    return _this._response(false, (0, _utils.loc)('COVID-19 Check is required.'));\n                  }\n                }));\n\n              case 31:\n                if (!covidRestricted) {\n                  _context.next = 33;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, (0, _utils.loc)('Clock in has been restricted due to COVID-19 risk.')));\n\n              case 33:\n                if (!Ember.get(organization, 'isLinkedCostCodesEnabled')) {\n                  _context.next = 39;\n                  break;\n                }\n\n                _context.next = 36;\n                return this._isProjectCostCodeValid(_timeEntry, organization);\n\n              case 36:\n                isValid = _context.sent;\n\n                if (isValid) {\n                  _context.next = 39;\n                  break;\n                }\n\n                return _context.abrupt('return', this._response(false, (0, _utils.loc)('Cost Code not allowed for selected project.')));\n\n              case 39:\n                if (!(validateOverlap && hasOverlapRule)) {\n                  _context.next = 43;\n                  break;\n                }\n\n                return _context.abrupt('return', this.getOverlapViolation(_timeEntry));\n\n              case 43:\n                return _context.abrupt('return', this._response(true, ''));\n\n              case 44:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function timeEntry(_x, _x2, _x3, _x4, _x5, _x6, _x7) {\n        return _ref.apply(this, arguments);\n      }\n\n      return timeEntry;\n    }(),\n\n\n    /**\n     * Validates a time entry break for valid start/stop times.\n     *\n     * @public\n     * @method timeEntryBreak\n     * @param {DS.Model} timeEntryBreak TimeEntryBreak Model\n     * @param {DS.Model} timeEntry TimeEntry Model\n     * @param {boolean} True to validate overlap rules. Defaults to true.\n     * @return {Object} response object {isValid: boolean, message: string, canOverride: boolean}.\n     */\n    timeEntryBreak: function timeEntryBreak(_timeEntryBreak, timeEntry, validateOverlap) {\n      _utils.Assert.funcNumArgs(arguments, 3);\n      _utils.Assert.isObject(_timeEntryBreak);\n      _utils.Assert.isObject(timeEntry);\n\n      validateOverlap = !Ember.isNone(validateOverlap) ? validateOverlap : true;\n      var action = _timeEntryBreak.get('actionType');\n\n      if (kTimeEntryBreakActions.indexOf(action) !== -1) {\n        return this.isValidBreakTime(_timeEntryBreak, timeEntry, validateOverlap);\n      } else {\n        return this._response(true, '');\n      }\n    },\n\n    timeOff: function timeOff(timeOffEntry, validateOverlap, isMulti) {\n      validateOverlap = !Ember.isNone(validateOverlap) ? validateOverlap : true;\n\n      if (validateOverlap) {\n        return this.timeOffViolation(timeOffEntry, timeOffEntry.get('memberId'), timeOffEntry.get('dateStamp'), isMulti);\n      } else {\n        return this._response(true, '');\n      }\n    },\n\n\n    isValidBreakTime: function isValidBreakTime(breakEntry, timeEntry, validateOverlap) {\n      var _this2 = this;\n\n      if (breakEntry.get('endTime') < breakEntry.get('startTime')) {\n        return this._response(false, (0, _utils.loc)(\"Break Start must be before Break End.\"));\n      } else if (!Ember.isNone(timeEntry.get('endTime')) && breakEntry.get('endTime') > timeEntry.get('endTime')) {\n        return this._response(false, (0, _utils.loc)(\"Break end time must be before the time entry end time.\"));\n      } else if (breakEntry.get('startTime') < timeEntry.get('startTime')) {\n        return this._response(false, (0, _utils.loc)(\"Break start time must be after the time entry start time.\"));\n      } else if (validateOverlap) {\n        var isOverlap = false;\n        timeEntry.get('timeEntryBreaks').forEach(function (item) {\n          if (breakEntry.id !== item.id && !item.get('isDeleted')) {\n            if (_this2.hasConflict(breakEntry, item)) {\n              isOverlap = true;\n            }\n          }\n        });\n\n        if (isOverlap) {\n          return this._response(false, (0, _utils.loc)(\"Break start or end overlaps another break\"), true);\n        }\n      }\n\n      return this._response(true, '');\n    },\n\n    getTimeViolation: function getTimeViolation(startTime, endTime, lockDate, timeRounding) {\n      var nistTime = _utils.Time.nistTimestamp();\n      var currentTime = _utils.Time.date(nistTime).add(5, 'minutes');\n      var endofDay = _utils.Time.date(nistTime).endOf('day').unix();\n\n      timeRounding = !Ember.isNone(timeRounding) ? timeRounding : false;\n\n      if (!Ember.isNone(endTime) && endTime < startTime) {\n        // start time later than stop time\n        return (0, _utils.loc)(\"Start time must be before stop time.\");\n      } else if (startTime < lockDate) {\n        // start time earlier 90 days ago\n        return (0, _utils.loc)(\"Start time must be after %@.\", [_utils.Time.date(lockDate).format('LL')]);\n      } else if (!Ember.isNone(endTime) && endTime < lockDate) {\n        // stop time earlier 90 days ago\n        return (0, _utils.loc)(\"End time must be after %@.\", [_utils.Time.date(lockDate).format('LL')]);\n      } else if (startTime >= currentTime.unix() && !timeRounding) {\n        // start time later than now\n        return (0, _utils.loc)(\"Start time must be before now.\");\n      } else if (!Ember.isNone(endTime) && endTime > endofDay) {\n        // stop time later than end of today\n        return (0, _utils.loc)(\"Stop time must be before the end of today.\");\n      }\n\n      return false;\n    },\n    getOverlapViolation: function getOverlapViolation(timeEntry) {\n      var _this3 = this;\n\n      return this.existingEntryViolation(timeEntry).then(function (result) {\n        if (result.isValid) {\n          return _this3.openEntryViolation(timeEntry);\n        } else {\n          return result;\n        }\n      });\n    },\n    openEntryViolation: function openEntryViolation(timeEntry) {\n      var _this4 = this;\n\n      return this._getOpenTimeEntry(timeEntry.store, timeEntry.get('memberId')).then(function (entry) {\n        var isValid = true;\n        var message = '';\n        var canOverride = false;\n\n        if (!Ember.isNone(entry) && timeEntry.id !== entry.id) {\n          if (!Ember.isNone(timeEntry.get('endTime')) && timeEntry.get('endTime') > entry.get('startTime')) {\n            // stop time later than open entry start\n            message = \"Stop time will overlap the current open time entry.\";\n            isValid = false;\n            canOverride = true;\n          } else if (timeEntry.get('startTime') > entry.get('startTime')) {\n            // start time later than open entry start\n            message = \"Start time will overlap the current open time entry.\";\n            isValid = false;\n            canOverride = true;\n          }\n        }\n\n        return _this4._response(isValid, message, canOverride);\n      });\n    },\n    existingEntryViolation: function existingEntryViolation(timeEntry) {\n      var _this5 = this;\n\n      if (Ember.isNone(timeEntry.get('endTime'))) {\n        return Ember.RSVP.resolve(this._response(true, '', false));\n      }\n\n      return this._getTimeEntry(timeEntry.store, timeEntry.get('startTime'), timeEntry.get('endTime'), timeEntry.get('memberId')).then(function (entries) {\n        var isValid = true;\n        var message = '';\n        var canOverride = false;\n\n        if (entries.get('length') > 0) {\n          var isOverlap = false;\n          entries.forEach(function (item) {\n            if (timeEntry.id !== item.id) {\n              if (_this5.hasConflict(timeEntry, item)) {\n                isOverlap = true;\n              }\n            }\n          });\n\n          if (isOverlap) {\n            message = (0, _utils.loc)(\"Start or stop time will overlap an existing time entry.\");\n            isValid = false;\n            canOverride = true;\n          }\n        }\n\n        return _this5._response(isValid, message, canOverride);\n      });\n    },\n    isModelType: function isModelType(type, model) {\n      var modelType = model._internalModel.modelName;\n      if (modelType === 'time-entry-member-conflicts' || modelType === 'time-entry-organization-conflicts') {\n        modelType = 'time-entry';\n      }\n      return modelType === type;\n    },\n    hasConflict: function hasConflict(thisModel, thatModel) {\n      var thisStart = void 0,\n          thisEnd = void 0,\n          thatStart = void 0,\n          thatEnd = void 0;\n      if (typeof thisModel === 'number') {\n        window.console.warn(\"DECPRECATION: hasConflict(start, end, start2, end2) is deprecated please use hasConflict(model, model2)\");\n        thisStart = arguments[0];\n        thisEnd = arguments[1] || _utils.Time.nistTimestamp();\n        thatStart = arguments[2];\n        thatEnd = arguments[3] || _utils.Time.nistTimestamp();\n      } else {\n        thisStart = thisModel.get('startTime');\n        thisEnd = thisModel.get('endTime') || _utils.Time.nistTimestamp();\n        thatStart = thatModel.get('startTime');\n        thatEnd = thatModel.get('endTime') || _utils.Time.nistTimestamp();\n      }\n\n      // normalize timezone info with timestamps\n      if (this.isModelType('time-entry', thisModel) && this.isModelType('time-entry', thatModel)) {\n        var currentOffset = _utils.Time.timezone();\n        thisStart = thisStart - thisModel.get('offset') + currentOffset;\n        thisEnd = thisEnd - thisModel.get('offset') + currentOffset;\n        thatStart = thatStart - thatModel.get('offset') + currentOffset;\n        thatEnd = thatEnd - thatModel.get('offset') + currentOffset;\n\n        // TODO:\n        // add validation for time entry breaks if breaks need to check timezone info\n        //} else if (this.isModelType('time-entry-break', thisModel) && this.isModelType('time-entry-break', thatModel)) {\n      }\n\n      var hasConflict = false;\n      if (thisStart >= thatStart && thisStart < thatEnd) {\n        // entry1 start is within entry2 start and end\n        hasConflict = true;\n      } else if (thisEnd > thatStart && thisEnd <= thatEnd) {\n        // entry1 end is within entry2 start and end\n        hasConflict = true;\n      } else if (thatStart >= thisStart && thatStart < thisEnd) {\n        // entry2 start is within entry1 start and end\n        hasConflict = true;\n      } else if (thatEnd > thisStart && thatEnd <= thisEnd) {\n        // entry2 end is within entry1 start and end\n        hasConflict = true;\n      }\n      return hasConflict;\n    },\n    validateBreakTime: function validateBreakTime(startTime, endTime, breaks) {\n      var isValid = true;\n      var message = '';\n\n      if (Ember.isArray(breaks)) {\n        var totalBreak = 0;\n        var isBreakBeforeStart = false;\n        var isBreakAfterEnd = false;\n\n        breaks.forEach(function (item) {\n          totalBreak += item.get('totalTime');\n          if (startTime > item.get('startTime')) {\n            isBreakBeforeStart = true;\n          } else if (endTime < item.get('endTime')) {\n            isBreakAfterEnd = true;\n          }\n        });\n\n        if (isBreakBeforeStart) {\n          message = (0, _utils.loc)(\"Start Time must not be after a Break Start Time.\");\n          isValid = false;\n        } else if (isBreakAfterEnd) {\n          message = (0, _utils.loc)(\"End Time must not be before a Break End Time.\");\n          isValid = false;\n        } else if (endTime - startTime < totalBreak) {\n          message = (0, _utils.loc)(\"The break time must not be longer than the Clock In to Clock Out time duration\");\n          isValid = false;\n        }\n      }\n      return this._response(isValid, message);\n    },\n    isNotOverlappingBreak: function isNotOverlappingBreak(startTime, endTime, breaks) {\n      var isValid = true;\n      var message = '';\n      var canOverride = false;\n\n      if (!Ember.isNone(breaks)) {\n        if (breaks.get('length') > 0) {\n          var isEndOverlap = false;\n          var isStartOverlap = false;\n\n          breaks.forEach(function (item) {\n            if (item.get('startTime') <= endTime && item.get('endTime') >= endTime) {\n              isEndOverlap = true;\n            } else if (item.get('startTime') <= startTime && item.get('endTime') >= startTime) {\n              isStartOverlap = true;\n            }\n          });\n\n          if (isStartOverlap) {\n            message = (0, _utils.loc)(\"Break Start overlaps previous Break End Time.\");\n            isValid = false;\n            canOverride = true;\n          } else if (isEndOverlap) {\n            message = (0, _utils.loc)(\"Break End overlaps future Break Start Time.\");\n            isValid = false;\n            canOverride = true;\n          }\n        }\n      }\n      return this._response(isValid, message, canOverride);\n    },\n\n\n    timeOffViolation: function timeOffViolation(timeOff, memberId, dateStamp, isMulti) {\n      var _this6 = this;\n\n      var memberName = '';\n      timeOff.store.find('member', memberId).then(function (member) {\n        memberName = member.get('fullName');\n      });\n\n      return this._getTimeOffEntries(timeOff.store, dateStamp, memberId).then(function (entries) {\n        var isValid = true;\n        var message = '';\n        var canOverride = false;\n\n        if (entries.get('length') > 0) {\n          var isOverlap = false;\n          entries.forEach(function (item) {\n            if (timeOff.id !== item.id) {\n              var dateStampConverted = _utils.Time.date(dateStamp).startOf('day').unix();\n              var itemDateStampConverted = _utils.Time.date(item.get('dateStamp')).startOf('day').unix();\n              if (dateStampConverted === itemDateStampConverted) {\n                isOverlap = true;\n              }\n            }\n          });\n\n          if (isOverlap) {\n            if (isMulti) {\n              message = (0, _utils.loc)('A time off entry exists for one or more employees on this day.');\n            } else {\n              message = (0, _utils.loc)(\"A time off entry exists for %@ on this day.\", [memberName]);\n            }\n\n            isValid = false;\n            canOverride = true;\n          }\n        }\n\n        return _this6._response(isValid, message, canOverride);\n      });\n    },\n\n    _response: function _response(isValid, message, canOverride) {\n      return Ember.RSVP.hash({\n        isValid: isValid ? true : false,\n        message: message,\n        canOverride: canOverride ? true : false\n      });\n    },\n    _getTimeEntry: function _getTimeEntry(store, start, end, member) {\n      var query = {};\n      // get time entries where startTime or endTime are in between start and end\n      // else get time entries where start is between startTime and endTime\n      if (!Ember.isNone(start) && !Ember.isNone(end)) {\n        query._gte = { end_time: start };\n        query._lte = { start_time: end };\n      } else if (!Ember.isNone(start)) {\n        query._lte = { start_time: start };\n        query._gte = { end_time: start };\n      }\n\n      // get entries for only this member\n      if (!Ember.isNone(member)) {\n        query.member_id = member;\n      }\n      return store.query('time-entry', query);\n    },\n    _getOpenTimeEntry: function _getOpenTimeEntry(store, member) {\n      return store.filter('time-entry').findOpenEntry(member);\n    },\n    _getTimeOffEntries: function _getTimeOffEntries(store, dateStamp, member) {\n      var query = {};\n      var dateStart = _utils.Time.date(dateStamp).startOf('day').unix();\n      var dateEnd = _utils.Time.date(dateStamp).endOf('day').unix();\n\n      if (!Ember.isNone(dateStart) && !Ember.isNone(dateEnd)) {\n        // get time entries where startTime or endTime are in between start and end\n        query._gte = { dateStamp: dateStart };\n        query._lte = { dateStamp: dateEnd };\n      }\n\n      if (!Ember.isNone(member)) {\n        // get entries for only this member\n        query.member_id = member;\n      }\n\n      return store.query('time-off', query);\n    },\n    _isProjectCostCodeValid: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(timeEntry, organization) {\n        var _EmberGetProperties, store, costCodeId, projectId, actionType, actionTypesToValidate, params;\n\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _EmberGetProperties = Ember.getProperties(timeEntry, ['store', 'costCodeId', 'projectId', 'actionType']), store = _EmberGetProperties.store, costCodeId = _EmberGetProperties.costCodeId, projectId = _EmberGetProperties.projectId, actionType = _EmberGetProperties.actionType;\n                actionTypesToValidate = [10, // Clock in\n                11, // Clock in location\n                30, // Clock in at\n                31, // Clock in at location\n                50, // Manual entry\n                60, // Edit\n                70];\n\n                // if the action type doesn't require validation, exit as valid\n\n                if (actionTypesToValidate.includes(actionType)) {\n                  _context2.next = 4;\n                  break;\n                }\n\n                return _context2.abrupt('return', true);\n\n              case 4:\n                if (!(!Ember.get(organization, 'requireCostCode') && (Ember.isNone(costCodeId) || costCodeId === '_-NULL-_'))) {\n                  _context2.next = 6;\n                  break;\n                }\n\n                return _context2.abrupt('return', true);\n\n              case 6:\n                params = {\n                  project_id: projectId,\n                  cost_code_id: costCodeId,\n                  page: 1,\n                  page_size: 1,\n                  deleted_on: null\n                };\n                return _context2.abrupt('return', store.query('project-cost-code-link', params)\n                // .then(() => false) // easy trigger for testing fail state\n                .then(function (results) {\n                  return Ember.get(results, 'meta.totalRows') === 1;\n                }));\n\n              case 8:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function _isProjectCostCodeValid(_x8, _x9) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return _isProjectCostCodeValid;\n    }()\n  });\n\n  exports.default = TimeEntryValidator;\n});","define('busy-app/utils/time-entry', ['exports', '@busy-web/utils'], function (exports, _utils) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\n\n\t/***/\n\tvar kFlags = {\n\t\tOTE: 10, // Open Time Entry\n\t\tOB: 20, // Open Break\n\t\tCTEOB: 30 // Closed Time Entry / Open Break\n\t}; /**\n     * @module Utils\n     *\n     */\n\n\n\tvar TimeEntry = Ember.Object.extend();\n\n\t/**\n  * `Util/TimeEntry`\n  *\n  */\n\tTimeEntry.reopenClass({\n\t\ttimeByRange: function timeByRange(entry, start, end, calcOpenBreak) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 4);\n\n\t\t\t// convert to numbers incase start and end a re strings\n\t\t\tstart = parseInt(start, 10);\n\t\t\tend = parseInt(end, 10);\n\n\t\t\t_utils.Assert.isNumber(start);\n\t\t\t_utils.Assert.isNumber(end);\n\t\t\t_utils.Assert.test(\"Start or End was passed to timeByRange as NaN\", !isNaN(start) && !isNaN(end));\n\n\t\t\tvar flag = 0;\n\t\t\tvar startTime = Ember.get(entry, 'startTime');\n\t\t\tvar endTime = Ember.get(entry, 'endTime');\n\t\t\tvar dateStamp = Ember.get(entry, 'dateStamp');\n\t\t\tvar timeOffSeconds = Ember.get(entry, 'seconds');\n\n\t\t\tif (Ember.isNone(endTime)) {\n\t\t\t\tflag = kFlags.OTE;\n\t\t\t\tendTime = _utils.Time.nistTimestamp();\n\t\t\t}\n\n\t\t\tif (start > startTime) {\n\t\t\t\tstartTime = start;\n\t\t\t}\n\n\t\t\tif (end < endTime) {\n\t\t\t\tendTime = end;\n\t\t\t}\n\n\t\t\tvar breakInfo = this.totalBreakTime(entry, startTime, endTime, calcOpenBreak);\n\n\t\t\treturn {\n\t\t\t\tstartTime: startTime,\n\t\t\t\tendTime: endTime,\n\t\t\t\tdateStamp: dateStamp,\n\t\t\t\ttimeOffSeconds: timeOffSeconds,\n\t\t\t\tflag: flag,\n\t\t\t\tbreakTime: breakInfo.total,\n\t\t\t\tbreakFlag: breakInfo.flags\n\t\t\t};\n\t\t},\n\t\ttotalBreakTime: function totalBreakTime(entry, startTime, endTime, calcOpenBreak) {\n\t\t\tvar _this = this;\n\n\t\t\tcalcOpenBreak = !Ember.isNone(calcOpenBreak) ? calcOpenBreak : false;\n\t\t\tstartTime = !Ember.isNone(startTime) ? startTime : Ember.get(entry, 'startTime');\n\t\t\tendTime = !Ember.isNone(endTime) ? endTime : Ember.get(entry, 'endTime');\n\n\t\t\tif (Ember.isNone(endTime)) {\n\t\t\t\tendTime = _utils.Time.nistTimestamp();\n\t\t\t}\n\n\t\t\tvar breakTime = 0;\n\t\t\tvar flags = [];\n\t\t\tvar breaks = Ember.get(entry, 'timeEntryBreaks');\n\t\t\tvar breakTimes = [];\n\n\t\t\tif (!Ember.isNone(breaks)) {\n\t\t\t\tbreaks.forEach(function (breakEntry) {\n\t\t\t\t\tif (!breakEntry.get('isDeleted')) {\n\t\t\t\t\t\tvar breakObj = _this.breakTimeByRange(breakEntry, startTime, endTime, calcOpenBreak);\n\n\t\t\t\t\t\tif (breakObj.flag === kFlags.OB && !Ember.isNone(Ember.get(entry, 'endTime'))) {\n\t\t\t\t\t\t\tbreakObj.flag = kFlags.CTEOB;\n\t\t\t\t\t\t\tbreakObj.endTime = breakObj.startTime;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreakTimes.forEach(function (item) {\n\t\t\t\t\t\t\tvar startsIn = breakObj.startTime !== breakObj.endTime && item.startTime <= breakObj.startTime && item.endTime > breakObj.startTime;\n\t\t\t\t\t\t\tvar endsIn = breakObj.startTime !== breakObj.endTime && item.startTime < breakObj.endTime && item.endTime >= breakObj.endTime;\n\n\t\t\t\t\t\t\tif (startsIn && endsIn) {\n\t\t\t\t\t\t\t\t// The break is contained inside another break\n\t\t\t\t\t\t\t\t// set the end the same as the start so the time does not\n\t\t\t\t\t\t\t\t// effect the total break time.\n\t\t\t\t\t\t\t\tbreakObj.endTime = breakObj.startTime;\n\t\t\t\t\t\t\t} else if (startsIn) {\n\t\t\t\t\t\t\t\t// The startTime is contained inside another break\n\t\t\t\t\t\t\t\t// set the startTime to the other breaks endTime\n\t\t\t\t\t\t\t\tbreakObj.startTime = item.endTime;\n\t\t\t\t\t\t\t} else if (endsIn) {\n\t\t\t\t\t\t\t\t// The endTime is contained inside another break\n\t\t\t\t\t\t\t\t// set the endTime to the other breaks startTime\n\t\t\t\t\t\t\t\tbreakObj.endTime = item.startTime;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (breakObj.startTime < entry.get('startTime')) {\n\t\t\t\t\t\t\tbreakObj.startTime = entry.get('startTime');\n\t\t\t\t\t\t} else if (!Ember.isNone(entry.get('endTime')) && breakObj.startTime > entry.get('endTime')) {\n\t\t\t\t\t\t\tbreakObj.startTime = entry.get('endTime');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (breakObj.endTime < entry.get('startTime')) {\n\t\t\t\t\t\t\tbreakObj.endTime = entry.get('startTime');\n\t\t\t\t\t\t} else if (!Ember.isNone(entry.get('endTime')) && breakObj.endTime > entry.get('endTime')) {\n\t\t\t\t\t\t\tbreakObj.endTime = entry.get('endTime');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreakTimes.pushObject(breakObj);\n\t\t\t\t\t\tflags.push(breakObj.flag);\n\n\t\t\t\t\t\tbreakTime += breakObj.endTime - breakObj.startTime;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn { total: breakTime, flags: flags };\n\t\t},\n\t\tbreakTimeByRange: function breakTimeByRange(breakEntry, startTime, endTime, calcOpenBreak) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 4);\n\t\t\t_utils.Assert.isNumber(startTime);\n\t\t\t_utils.Assert.isNumber(endTime);\n\t\t\t_utils.Assert.test(\"startTime and endTime are required params for validBreakTimes(breakEntry, startTime, endTime)\", !Ember.isNone(startTime) && !Ember.isNone(endTime));\n\n\t\t\tvar flag = 0;\n\t\t\tvar breakStart = Ember.get(breakEntry, 'startTime');\n\t\t\tvar breakEnd = Ember.get(breakEntry, 'endTime');\n\n\t\t\tif (Ember.isNone(breakEnd)) {\n\t\t\t\tflag = kFlags.OB;\n\t\t\t\tif (calcOpenBreak) {\n\t\t\t\t\tbreakEnd = _utils.Time.nistTimestamp();\n\t\t\t\t} else {\n\t\t\t\t\tbreakEnd = breakStart; //Time.nistTimestamp();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (breakStart < startTime) {\n\t\t\t\tbreakStart = startTime;\n\t\t\t}\n\n\t\t\tif (breakEnd > endTime) {\n\t\t\t\tbreakEnd = endTime;\n\t\t\t}\n\n\t\t\tif (breakEnd < breakStart) {\n\t\t\t\tbreakEnd = breakStart;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: breakEntry.get('id'),\n\t\t\t\tstartTime: breakStart,\n\t\t\t\tendTime: breakEnd,\n\t\t\t\tflag: flag\n\t\t\t};\n\t\t},\n\t\tisTimeEntry: function isTimeEntry(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\n\t\t\treturn !Ember.isNone(timeEntry) && !Ember.isNone(timeEntry.get) && !Ember.isNone(timeEntry.get('startTime'));\n\t\t},\n\t\tisTimeOffEntry: function isTimeOffEntry(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\n\t\t\treturn !Ember.isNone(timeEntry) && !Ember.isNone(timeEntry.get) && !Ember.isNone(timeEntry.get('dateStamp')) && !Ember.isNone(timeEntry.get('model.createdOnDaylightSavingTime'));\n\t\t},\n\t\tisDayDiff: function isDayDiff(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to isDayDiff\", this.isTimeEntry(timeEntry));\n\n\t\t\tvar start = timeEntry.get('startTime');\n\t\t\tvar end = timeEntry.get('endTime');\n\n\t\t\tif (start !== end) {\n\t\t\t\tend = end - 1;\n\t\t\t}\n\n\t\t\treturn _utils.Time.date(start).date() !== _utils.Time.date(end).date();\n\t\t},\n\t\tisDSTDiff: function isDSTDiff(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to isDSTDiff\", this.isTimeEntry(timeEntry));\n\n\t\t\tvar isDSTDiff = !Ember.isNone(timeEntry.get('endTime')) && !Ember.isNone(timeEntry.get('metaDaylightSavingTime')) && timeEntry.get('daylightSavingTime') !== timeEntry.get('metaDaylightSavingTime');\n\n\t\t\t// if the timeZone is the same and the start and end\n\t\t\t// are on the same day then the dst must be the same.\n\t\t\t// This can happen on time-entries where the end time\n\t\t\t// is being split for a day and the end time is not the\n\t\t\t// actual time entry end time.\n\t\t\tif (!this.isTimeZoneDiff(timeEntry) && !this.isDayDiff(timeEntry)) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn isDSTDiff;\n\t\t\t}\n\t\t},\n\t\tisTimeZoneDiff: function isTimeZoneDiff(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to isTimeZoneDiff\", this.isTimeEntry(timeEntry));\n\n\t\t\treturn !Ember.isNone(timeEntry.get('endTime')) && !Ember.isNone(timeEntry.get('metaOffset')) && timeEntry.get('offset') !== timeEntry.get('metaOffset');\n\t\t},\n\t\tisViewingZoneDiff: function isViewingZoneDiff(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to isViewingZoneDiff\", this.isTimeEntry(timeEntry));\n\n\t\t\tvar offset = timeEntry.get('offset');\n\t\t\tvar currentOffset = _utils.Time.timezone();\n\n\t\t\treturn offset !== currentOffset;\n\t\t},\n\t\tshowTimeZoneInfo: function showTimeZoneInfo(timeEntry) {\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\t\t\t_utils.Assert.isObject(timeEntry);\n\n\t\t\tvar endOfDay = _utils.Time.date(timeEntry.get('startTime')).endOf('day').unix() + 1;\n\t\t\tvar isEndMatch = endOfDay === timeEntry.get('endTime');\n\n\t\t\tif (!Ember.isNone(timeEntry.get('model.endTime'))) {\n\t\t\t\tisEndMatch = isEndMatch && timeEntry.get('model.endTime') !== endOfDay;\n\t\t\t}\n\n\t\t\tvar isDSTDiff = this.isDSTDiff(timeEntry);\n\t\t\tvar isTimeZoneDiff = this.isTimeZoneDiff(timeEntry);\n\t\t\tvar isViewingZoneDiff = this.isViewingZoneDiff(timeEntry);\n\n\t\t\tvar show = false;\n\t\t\tif (!isEndMatch && isViewingZoneDiff) {\n\t\t\t\tshow = true;\n\t\t\t} else if (!isEndMatch && isDSTDiff) {\n\t\t\t\tshow = true;\n\t\t\t} else if (!isEndMatch && isTimeZoneDiff) {\n\t\t\t\tshow = true;\n\t\t\t}\n\n\t\t\treturn show;\n\t\t},\n\t\tstartTimeString: function startTimeString(timeEntry) {\n\t\t\tvar format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'h:mm A';\n\t\t\tvar removeHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\t// force 3 arguments 1 required and default 2\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3);\n\n\t\t\t// assert this is a timeEntry\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to startTimeString\", this.isTimeEntry(timeEntry));\n\n\t\t\t// format must ba a string\n\t\t\t_utils.Assert.isString(format);\n\n\t\t\t// removeHTML must be a boolean\n\t\t\t_utils.Assert.isBoolean(removeHTML);\n\n\t\t\t// setup timezone information\n\t\t\tvar startZone = '';\n\t\t\tif (this.showTimeZoneInfo(timeEntry)) {\n\t\t\t\tstartZone = _utils.Time.timezoneString(timeEntry.get('offset'), timeEntry.get('daylightSavingTime'));\n\t\t\t\tif (!removeHTML) {\n\t\t\t\t\tstartZone = ' <sup>' + startZone + '</sup>';\n\t\t\t\t} else {\n\t\t\t\t\tstartZone = ' ' + startZone;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _utils.Time.timeFormat(timeEntry.get('startTime'), format) + startZone;\n\t\t},\n\t\tendTimeString: function endTimeString(timeEntry) {\n\t\t\tvar format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'h:mm A';\n\t\t\tvar removeHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\t// force 3 arguments 1 required and default 2\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3);\n\n\t\t\t// assert this is a timeEntry\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to endTimeString\", this.isTimeEntry(timeEntry));\n\n\t\t\t// format must ba a string\n\t\t\t_utils.Assert.isString(format);\n\n\t\t\t// removeHTML must be a boolean\n\t\t\t_utils.Assert.isBoolean(removeHTML);\n\n\t\t\t// get the endtime\n\t\t\tvar end = timeEntry.get('endTime');\n\n\t\t\t// check for endtime that ends on the next day and that is is a split time entry\n\t\t\t// example time entry\n\t\t\t//\t -> start 10:00 AM ends 10:00 AM\n\t\t\t// the split time entry would be:\n\t\t\t//   -> start 10:00 AM ends 12:00 AM\n\t\t\t//   -> start 12:00 AM ends 10:00 AM\n\t\t\t// in this case we would subtract 1 second from the first entry to show:\n\t\t\t//   -> start 10:00 AM ends 11:59 PM\n\t\t\t//   -> start 12:00 AM ends 10:00 AM\n\t\t\t//\n\t\t\tvar isSplitEntry = !Ember.isNone(timeEntry.get('model.endTime'));\n\t\t\tvar isSpanningDay = _utils.Time.date(timeEntry.get('startTime')).date() !== _utils.Time.date(timeEntry.get('endTime')).date();\n\t\t\tvar isNotActualEnd = timeEntry.get('model.endTime') !== timeEntry.get('endTime');\n\n\t\t\tif (isSplitEntry && isSpanningDay && isNotActualEnd) {\n\t\t\t\tend = end - 1;\n\t\t\t}\n\n\t\t\t// setup the timezone information\n\t\t\tvar endZone = '';\n\t\t\tif (this.showTimeZoneInfo(timeEntry)) {\n\t\t\t\tendZone = _utils.Time.timezoneString(timeEntry.get('metaOffset'), timeEntry.get('metaDaylightSavingTime'));\n\t\t\t\tif (!removeHTML) {\n\t\t\t\t\tendZone = ' <sup>' + endZone + '</sup>';\n\t\t\t\t} else {\n\t\t\t\t\tendZone = ' ' + endZone;\n\t\t\t\t}\n\n\t\t\t\t// adjust end time according to the metaOffset\n\t\t\t\tend = end - timeEntry.get('offset') + timeEntry.get('metaOffset');\n\t\t\t}\n\n\t\t\treturn _utils.Time.timeFormat(end, format) + endZone;\n\t\t},\n\t\ttimeOffType: function timeOffType(timeEntry) {\n\t\t\t// allow only 1 argument\n\t\t\t_utils.Assert.funcNumArgs(arguments, 1, true);\n\n\t\t\t// assert this is a timeEntry\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeOff model to timeOffType\", this.isTimeOffEntry(timeEntry));\n\n\t\t\t// get the type\n\t\t\tvar type = timeEntry.get('model.getType');\n\n\t\t\t// return the type string.\n\t\t\treturn '*' + type + '*';\n\t\t},\n\t\ttimeRangeString: function timeRangeString(timeEntry) {\n\t\t\tvar format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'h:mm A';\n\t\t\tvar removeHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\t\t// must pass 1 argument and optional format\n\t\t\t_utils.Assert.funcNumArgs(arguments, 3);\n\n\t\t\t// arg 1 must be a time entry model\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeEntry model to timeRangeString\", this.isTimeEntry(timeEntry));\n\n\t\t\t// arg2 must be a string\n\t\t\t_utils.Assert.isString(format);\n\n\t\t\treturn this.startTimeString(timeEntry, format, removeHTML) + ' - ' + this.endTimeString(timeEntry, format, removeHTML);\n\t\t},\n\t\ttimeOffRangeString: function timeOffRangeString(timeEntry) {\n\t\t\tvar format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'h:mm A';\n\n\t\t\t// must pass 1 argument and optional format\n\t\t\t_utils.Assert.funcNumArgs(arguments, 2);\n\n\t\t\t// arg 1 must be a time entry model\n\t\t\t_utils.Assert.isObject(timeEntry);\n\t\t\t_utils.Assert.test(\"You must pass a timeOff model to timeOffRangeString\", this.isTimeOffEntry(timeEntry));\n\n\t\t\t// arg2 must be a string\n\t\t\t_utils.Assert.isString(format);\n\n\t\t\treturn this.timeOffType(timeEntry);\n\t\t}\n\t});\n\n\texports.default = TimeEntry;\n});","define('busy-app/utils/time-zones', ['exports', '@busy-web/utils/utils/time-zones'], function (exports, _timeZones) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _timeZones.default;\n    }\n  });\n});","define(\"busy-app/utils/time\", [\"exports\"], function (exports) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.isRangeInRange = isRangeInRange;\n\tfunction isRangeInRange(a, b) {\n\t\tvar startsInRange = b.startTime >= a.startTime && b.startTime <= a.endTime;\n\t\tvar endsInRange = b.endTime >= a.startTime && b.endTime <= a.endTime;\n\t\tvar encompassesRange = b.startTime <= a.startTime && b.endTime >= a.endTime;\n\n\t\treturn startsInRange || endsInRange || encompassesRange;\n\t}\n});","define('busy-app/utils/touch', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = touch;\n\n\n\tfunction calculateChange(touchList, type) {\n\t\tvar ids = touchList.mapBy('identifier').uniq();\n\t\tvar res = [];\n\t\tids.forEach(function (id) {\n\t\t\tvar list = touchList.filterBy('identifier', id).sortBy('order');\n\t\t\tvar start = list.get('firstObject.' + type);\n\t\t\tvar end = list.get('lastObject.' + type);\n\n\t\t\tvar change = end - start;\n\t\t\tvar direction = void 0;\n\t\t\tif (type === 'x') {\n\t\t\t\tdirection = change < 0 ? 'left' : change > 0 ? 'right' : 'none';\n\t\t\t} else if (type === 'y') {\n\t\t\t\tdirection = change < 0 ? 'up' : change > 0 ? 'down' : 'none';\n\t\t\t}\n\n\t\t\tres.push({ id: id, change: change, direction: direction, start: start, end: end });\n\t\t});\n\t\treturn res;\n\t}\n\n\tfunction getDoubleTouch(x, y) {\n\t\tvar action = void 0;\n\t\tvar xDirections = x.mapBy('direction').uniq();\n\t\tvar yDirections = y.mapBy('direction').uniq();\n\t\twindow.console.log(xDirections, yDirections);\n\n\t\tif (yDirections.length > 1 || xDirections.length > 1) {\n\t\t\taction = 'zoom';\n\t\t\tvar xChangeStart = Math.abs(x[0].start - x[1].start);\n\t\t\tvar xChangeEnd = Math.abs(x[0].end - x[1].end);\n\t\t\tvar yChangeStart = Math.abs(y[0].start - y[1].start);\n\t\t\tvar yChangeEnd = Math.abs(y[0].end - y[1].end);\n\n\t\t\tvar xChange = Math.abs(xChangeStart - xChangeEnd);\n\t\t\tvar yChange = Math.abs(yChangeStart - yChangeEnd);\n\n\t\t\twindow.console.log(xChange, yChange, xChangeStart, xChangeEnd, yChangeStart, yChangeEnd);\n\t\t\tif (xDirections.length > 1 && (yDirections <= 1 || xChange >= yChange)) {\n\t\t\t\tif (xChangeStart < xChangeEnd) {\n\t\t\t\t\taction += '-in';\n\t\t\t\t} else {\n\t\t\t\t\taction += '-out';\n\t\t\t\t}\n\t\t\t} else if (yDirections.length > 1) {\n\t\t\t\tif (yChangeStart < yChangeEnd) {\n\t\t\t\t\taction += '-in';\n\t\t\t\t} else {\n\t\t\t\t\taction += '-out';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn action;\n\t\t} else {\n\t\t\treturn getSingleTouch(x, y);\n\t\t}\n\t}\n\n\tfunction getSingleTouch(x, y) {\n\t\tx = x[0];\n\t\ty = y[0];\n\t\tvar changeVarient = (Math.abs(x.change) + Math.abs(y.change)) / 2;\n\t\tvar action = 'slide';\n\n\t\tif (Math.abs(y.change) > changeVarient) {\n\t\t\taction += '-' + y.direction;\n\t\t}\n\n\t\tif (Math.abs(x.change) > changeVarient) {\n\t\t\taction += '-' + x.direction;\n\t\t}\n\n\t\treturn action;\n\t}\n\n\tfunction touch() {\n\n\t\tvar touchEvents = Ember.Object.extend(Ember.Evented, {}).create();\n\t\tvar TouchHandler = Ember.Object.extend({\n\t\t\tlist: null,\n\n\t\t\t__setTouch: function __setTouch(type, event, order) {\n\t\t\t\tvar _this = this;\n\n\t\t\t\tvar list = event.touches || [];\n\t\t\t\tObject.keys(list).forEach(function (key) {\n\t\t\t\t\tvar touch = list[key];\n\t\t\t\t\tvar x = void 0,\n\t\t\t\t\t    y = void 0,\n\t\t\t\t\t    identifier = void 0;\n\t\t\t\t\tif (touch) {\n\t\t\t\t\t\tx = touch.clientX;\n\t\t\t\t\t\ty = touch.clientY;\n\t\t\t\t\t\tidentifier = touch.identifier;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this.list.pushObject({ type: type, identifier: identifier, x: x, y: y, order: order, _event: event });\n\t\t\t\t});\n\t\t\t},\n\n\n\t\t\ttouchIds: Ember.computed(function () {\n\t\t\t\treturn this.list.mapBy('identifier').uniq();\n\t\t\t}),\n\n\t\t\ttouchStart: Ember.computed(function () {\n\t\t\t\treturn this.list.filterBy('type', 'start');\n\t\t\t}),\n\n\t\t\tisTouch: Ember.computed(function () {\n\t\t\t\treturn this.list.length === 1;\n\t\t\t}),\n\n\t\t\tisSlide: Ember.computed(function () {\n\t\t\t\treturn this.list.length > 1;\n\t\t\t}),\n\n\t\t\txDir: Ember.computed(function () {\n\t\t\t\tif (this.get('isSlide')) {\n\t\t\t\t\treturn calculateChange(this.list, 'x');\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}),\n\n\t\t\tyDir: Ember.computed(function () {\n\t\t\t\tif (this.get('isSlide')) {\n\t\t\t\t\treturn calculateChange(this.list, 'y');\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}),\n\n\t\t\tdescription: Ember.computed(function () {\n\t\t\t\tvar x = this.get('xDir');\n\t\t\t\tvar y = this.get('yDir');\n\t\t\t\tvar fingers = this.get('touchIds.length');\n\n\t\t\t\twindow.console.log('fingers', fingers);\n\n\t\t\t\tvar action = 'touch';\n\t\t\t\tif (fingers === 1 && this.get('isSlide')) {\n\t\t\t\t\taction = getSingleTouch(x, y);\n\t\t\t\t} else if (fingers === 2) {\n\t\t\t\t\taction = getDoubleTouch(x, y);\n\t\t\t\t}\n\n\t\t\t\treturn action;\n\t\t\t})\n\t\t});\n\n\t\tvar touchHandler = void 0;\n\t\tvar counter = 0;\n\t\tEmber.$(document.body).on('touchstart', function () {\n\t\t\tif (!touchHandler) {\n\t\t\t\ttouchHandler = TouchHandler.create({ list: Ember.A() });\n\t\t\t}\n\t\t});\n\n\t\tEmber.$(document.body).on('touchmove', function (event) {\n\t\t\tif (touchHandler) {\n\t\t\t\ttouchHandler.__setTouch('move', event, counter);\n\t\t\t\tcounter += 1;\n\t\t\t}\n\t\t});\n\n\t\tEmber.$(document.body).on('touchend', function () {\n\t\t\tif (touchHandler) {\n\t\t\t\ttouchEvents.trigger('touchmove', touchHandler);\n\t\t\t\ttouchHandler = null;\n\t\t\t\tcounter = 0;\n\t\t\t}\n\t\t});\n\n\t\treturn touchEvents;\n\t}\n\n\t//function toggleFullScreen(osType, event) {\n\t//\twindow.console.log(osType, event);\n\t//\tif (osType === 'Android') {\n\t//\t\tlet isFullScreen = document.isFullScreen || document.webkitIsFullScreen;\n\t//\t\tif (!isFullScreen) {\n\t//\t\t\tlet fullScreen = document.body.requestFullScreen || document.body.webkitRequestFullScreen;\n\t//\t\t\twindow.console.log('fullScreen', fullScreen);\n\t//\t\t\tif (fullScreen) {\n\t//\t\t\t\tfullScreen.call(document.body);\n\t//\t\t\t}\n\t//\t\t} else {\n\t//\t\t\tlet exitFullScreen = document.exitFullScreenMode || document.webkitExitFullScreen;\n\t//\t\t\tif (exitFullScreen) {\n\t//\t\t\t\texitFullScreen.call(document.body);\n\t//\t\t\t}\n\t//\t\t}\n\t//\t}\n\t//}\n});","define('busy-app/utils/type-cast', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = typeCast;\n\t/**\n  * @module Utils\n  *\n  */\n\n\t/**\n  * type cast a string to the proper value\n  *\n  * @public\n  * @method typeCast\n  * @params value {string}\n  * @return {mixed}\n  */\n\tfunction typeCast(value) {\n\t\tif (typeof value === 'string') {\n\t\t\tif (/^([Tt]rue|[Ff]alse)$/.test(value)) {\n\t\t\t\t// boolean\n\t\t\t\tvalue = value === true || value === 'True' ? true : false;\n\t\t\t} else if (/^[0-9]+\\.[0-9]*$/.test(value)) {\n\t\t\t\t// float\n\t\t\t\treturn parseFloat(value);\n\t\t\t} else if (/^[0-9]+$/.test(value)) {\n\t\t\t\t// int\n\t\t\t\treturn parseInt(value, 10);\n\t\t\t} else if (/^ ?{/.test(value)) {\n\t\t\t\t// remove whitespace\n\t\t\t\tvalue = value.replace(/ /g, '').replace(/([^:]*)(:{|:[^,^}]*[,}])/g, '\"$1\"$2').replace(/\"{/g, '{\"').replace(/\"\"/g, '\"').replace(/('\"|\"')/g, '\"');\n\t\t\t\treturn JSON.parse(value);\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n});","define(\"busy-app/utils/unassigned\", [\"exports\", \"@busy-web/utils\"], function (exports, _utils) {\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = unassigned;\n\n\n\tvar Unassigned = Ember.Object.extend({\n\t\tproject: null,\n\t\tseconds: null,\n\t\tcost: null,\n\n\t\tid: Ember.computed.alias(\"project.id\"),\n\t\ttitle: (0, _utils.loc)(\"Unassigned\"),\n\n\t\tregularSeconds: Ember.computed.alias(\"seconds.regularSeconds\").meta({\n\t\t\taggregateType: \"sum\"\n\t\t}),\n\t\tovertimeSeconds: Ember.computed.alias(\"seconds.overtimeSeconds\").meta({\n\t\t\taggregateType: \"sum\"\n\t\t}),\n\t\tdoubletimeSeconds: Ember.computed.alias(\"seconds.doubletimeSeconds\").meta({\n\t\t\taggregateType: \"sum\"\n\t\t}),\n\t\tchildrenRegularSeconds: 0,\n\t\tchildrenOvertimeSeconds: 0,\n\t\tchildrenDoubletimeSeconds: 0,\n\n\t\ttotalSeconds: Ember.computed(\"regularSeconds\", \"overtimeSeconds\", \"doubletimeSeconds\", function () {\n\t\t\treturn this.get(\"regularSeconds\") + this.get(\"overtimeSeconds\") + this.get(\"doubletimeSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\tchildrenTotalSeconds: Ember.computed(\"childrenRegularSeconds\", \"childrenOvertimeSeconds\", \"childrenDoubletimeSeconds\", function () {\n\t\t\treturn this.get(\"childrenRegularSeconds\") + this.get(\"childrenOvertimeSeconds\") + this.get(\"childrenDoubletimeSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalRegularSeconds: Ember.computed(\"regularSeconds\", \"childrenRegularSeconds\", function () {\n\t\t\treturn this.get(\"regularSeconds\") + this.get(\"childrenRegularSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalOvertimeSeconds: Ember.computed(\"overtimeSeconds\", \"childrenOvertimeSeconds\", function () {\n\t\t\treturn this.get(\"overtimeSeconds\") + this.get(\"childrenOvertimeSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalDoubletimeSeconds: Ember.computed(\"doubletimeSeconds\", \"childrenDoubletimeSeconds\", function () {\n\t\t\treturn this.get(\"doubletimeSeconds\") + this.get(\"childrenDoubletimeSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalTotalSeconds: Ember.computed(\"totalSeconds\", \"childrenTotalSeconds\", function () {\n\t\t\treturn this.get(\"totalSeconds\") + this.get(\"childrenTotalSeconds\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\tregularCost: Ember.computed.alias(\"cost.regularCost\").meta({ aggregateType: \"sum\" }),\n\t\tovertimeCost: Ember.computed.alias(\"cost.overtimeCost\").meta({ aggregateType: \"sum\" }),\n\t\tdoubletimeCost: Ember.computed.alias(\"cost.doubletimeCost\").meta({ aggregateType: \"sum\" }),\n\t\toverburden: Ember.computed.alias(\"cost.overburden\").meta({ aggregateType: \"sum\" }),\n\t\tchildrenRegularCost: 0,\n\t\tchildrenOvertimeCost: 0,\n\t\tchildrenDoubletimeCost: 0,\n\n\t\ttotalCost: Ember.computed(\"regularCost\", \"overtimeCost\", \"doubletimeCost\", function () {\n\t\t\treturn this.get(\"regularCost\") + this.get(\"overtimeCost\") + this.get(\"doubletimeCost\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\t//unassigned totalTotalOverburden does not include subprojects\n\t\ttotalTotalOverburdenCost: Ember.computed(\"totalCost\", \"overburden\", function () {\n\t\t\treturn this.get(\"totalCost\") + this.get(\"overburden\");\n\t\t}),\n\n\t\tchildrenTotalCost: Ember.computed(\"childrenRegularCost\", \"childrenOvertimeCost\", \"childrenDoubletimeCost\", function () {\n\t\t\treturn this.get(\"childrenRegularCost\") + this.get(\"childrenOvertimeCost\") + this.get(\"childrenDoubletimeCost\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalRegularCost: Ember.computed(\"regularCost\", \"childrenRegularCost\", function () {\n\t\t\treturn this.get(\"regularCost\") + this.get(\"childrenRegularCost\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalOvertimeCost: Ember.computed(\"overtimeCost\", \"childrenOvertimeCost\", function () {\n\t\t\treturn this.get(\"overtimeCost\") + this.get(\"childrenOvertimeCost\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalDoubletimeCost: Ember.computed(\"doubletimeCost\", \"childrenDoubletimeCost\", function () {\n\t\t\treturn this.get(\"doubletimeCost\") + this.get(\"childrenDoubletimeCost\");\n\t\t}).meta({ aggregateType: \"sum\" }),\n\n\t\ttotalTotalCost: Ember.computed(\"totalCost\", \"childrenTotalCost\", function () {\n\t\t\treturn this.get(\"totalCost\") + this.get(\"childrenTotalCost\");\n\t\t}).meta({ aggregateType: \"sum\" })\n\t});\n\n\tfunction unassigned(project, seconds, cost) {\n\t\treturn {\n\t\t\tproject: Unassigned.create({ project: project }),\n\t\t\tseconds: Unassigned.create({ seconds: seconds }),\n\t\t\tcost: Unassigned.create({ cost: cost })\n\t\t};\n\t}\n});","define('busy-app/utils/unique-id', ['exports'], function (exports) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = uniqueId;\n\n\n\t/**\n  * gets a value or returns 0\n  *\n  * @private\n  * @method getValue\n  * @param target {Instance} a class instance or object\n  * @param key {string} the property to get the value for\n  * @param {mixed} returns 0 if value is null or undefined\n  */\n\tfunction getValue(target, key) {\n\t\tvar value = Ember.get(target, key);\n\t\tif (Ember.isNone(value)) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n  * returns a uniqueId based on the property values retrieved from the props passed in.\n  *\n  * @public\n  * @method uniqueId\n  * @param keysArray {string[]}\n  * @returns {string} computed property string\n  */\n\t/**\n  * @module Utils\n  *\n  */\n\tfunction uniqueId(keysArray) {\n\t\t// get keysArray from arg list or use\n\t\t// keysArray as an array if passed in that way.\n\t\tif (!Array.isArray(keysArray)) {\n\t\t\tvar args = [].slice.call(arguments);\n\t\t\tif (args.length > 0) {\n\t\t\t\tkeysArray = args;\n\t\t\t}\n\t\t}\n\n\t\t// make sure keysArray is an array\n\t\t(true && !(Array.isArray(keysArray) && keysArray.length > 0) && Ember.assert(\"uniqueId requires an array of props to generate id with\", Array.isArray(keysArray) && keysArray.length > 0));\n\n\n\t\t// this is a computed property only because the value has to be created on the fly\n\t\t// this should not be converted into a computed property that has listeners.\n\t\treturn Ember.computed(function () {\n\t\t\tvar _this = this;\n\n\t\t\treturn keysArray.reduce(function (a, b) {\n\t\t\t\treturn a + '_' + getValue(_this, b, 0);\n\t\t\t}, 'uid');\n\t\t});\n\t}\n});","define('busy-app/utils/uuid-generator', ['exports', 'ember-uuid/utils/uuid-generator'], function (exports, _uuidGenerator) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _uuidGenerator.default;\n    }\n  });\n  Object.defineProperty(exports, 'v4', {\n    enumerable: true,\n    get: function () {\n      return _uuidGenerator.v4;\n    }\n  });\n  Object.defineProperty(exports, 'v1', {\n    enumerable: true,\n    get: function () {\n      return _uuidGenerator.v1;\n    }\n  });\n  Object.defineProperty(exports, 'parse', {\n    enumerable: true,\n    get: function () {\n      return _uuidGenerator.parse;\n    }\n  });\n  Object.defineProperty(exports, 'unparse', {\n    enumerable: true,\n    get: function () {\n      return _uuidGenerator.unparse;\n    }\n  });\n});","define('busy-app/utils/web-worker', ['exports', 'busy-app/utils/settings', 'busy-app/utils/data-base'], function (exports, _settings, _dataBase) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.default = webWorker;\n\n\n\tvar Listener = Ember.Object.extend(Ember.Evented, {\n\t\tmessage: function message(event) {\n\t\t\tthis.trigger('onMessage', event);\n\t\t}\n\t});\n\n\tfunction webWorker(token, memberId, organizationId) {\n\t\tvar opts = [{\n\t\t\tdb: _dataBase.default,\n\t\t\tauth: { memberId: memberId, organizationId: organizationId },\n\t\t\tdebug: _settings.default.get('debug_mode'),\n\t\t\tapi: {\n\t\t\t\thost: _settings.default.get('api_url'),\n\t\t\t\tversion: _settings.default.get('api_version'),\n\t\t\t\theaders: { \"Key-Authorization\": token }\n\t\t\t}\n\t\t}];\n\n\t\tvar worker = new Worker('/workers/data-sync.js');\n\t\tvar listener = Listener.create({ worker: worker });\n\n\t\tworker.onmessage = function (event) {\n\t\t\tlistener.message(event);\n\t\t};\n\n\t\tworker.postMessage(opts);\n\n\t\treturn listener;\n\t}\n});","define('busy-app/uuid', ['exports', '@busy-web/utils/uuid'], function (exports, _uuid) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(exports, 'default', {\n    enumerable: true,\n    get: function () {\n      return _uuid.default;\n    }\n  });\n});","\n","define('busy-app/config/environment', [], function() {\n  var prefix = 'busy-app';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(unescape(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","if (!runningTests) {\n  require(\"busy-app/app\")[\"default\"].create({\"BUILD\":\"staging\",\"BATCH_API\":false,\"NIST_MODE\":true,\"DEBUG_MODE\":true,\"LOG_LEVEL\":1,\"API_VERSION\":3.2,\"API_URL\":\"https://api-staging.busybusy.io\",\"QB_URL\":\"https://qb-staging.busybusy.io\",\"ETL_VERSION\":\"v1\",\"ETL_URL\":\"https://reports-api-staging.busybusy.io\",\"ETL_PLAT_URL\":\"https://reports-platform-api-staging.busybusy.io\",\"DISCOVERY_URL\":\"https://discovery.busybusy.io/staging\",\"SPECIAL_RPC_URL\":\"https://rpc-api-staging.busybusy.io\",\"EQUIPMENT_URL\":\"https://staging-equipment.busybusy.io\",\"REACT_APP_URL\":\"https://app-staging.busybusy.io\",\"AWS_KEY\":\"AKIAJ7NNHLRF2B3WWLUQ\",\"GOOGLE_TAG_ID\":\"GTM-5HMWJ2\",\"GOOGLE_MAPS_KEY\":\"AIzaSyCutjq4YYlaMH5BICtf0Hbh2OkNyTvk3pQ\",\"stripe\":{\"publishableKey\":\"pk_live_H495XYEunaEnzRWYTUbMcgJL\"},\"INTERCOM_APP_KEY\":\"wjf1i8sz\",\"INTERCOM_SECRET\":\"D7AlsE2A6TtzARjftUwGhOlDJpiow4kfvThxCH8s\",\"RECEPTIVE_APP_ID\":\"6b938da2-9af4-47c5-8580-401c151b6611\",\"LAUNCHDARKLY_CLIENTID\":\"583f5cc0cace650911f3fe3e\",\"LOG_VIEW_LOOKUPS\":false,\"LOG_ACTIVE_GENERATION\":false,\"LOG_BINDINGS\":false,\"busy-pusher\":{\"ENABLED\":false,\"DEBUG\":true,\"ENCRYPTED\":true,\"PUBLIC_KEY\":\"5a836d5eb534236c0331\",\"CLUSTER\":\"mt1\"},\"ember-google-maps\":{\"key\":\"AIzaSyCutjq4YYlaMH5BICtf0Hbh2OkNyTvk3pQ\"},\"VERSION\":\"2022.3.0-staging.4\",\"BUILD_DATE\":\"2022-05-02T22:23:15.109Z\",\"BUILD_TIME\":1651530195109,\"MANIFEST_FALLBACK\":{\"admin-email-unsubscribe\":{\"meta\":{\"description\":\"Call to unsubscribe a user from weekly admin email reports.\",\"type\":\"json-rpc\",\"method\":\"POST\"},\"url\":\"https://rpc.busybusy.io/email-report\",\"protocol\":\"https\",\"port\":\"443\",\"domain\":\"rpc.busybusy.io\",\"path\":\"/email-report\"},\"time-entry-export\":{\"meta\":{\"description\":\"Provides broad time entry CSV export capability for import into other systems\",\"type\":\"REST\",\"method\":\"GET\",\"content-type\":\"text/csv\"},\"url\":\"https://export.busybusy.io\",\"protocol\":\"https\",\"port\":\"443\",\"domain\":\"export.busybusy.io\",\"path\":\"/\"}},\"name\":\"busy-app\",\"version\":\"2022.3.0-staging.4+96fbc1bc\"});\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACv2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACreA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACj5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzuCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACj4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACztBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/nCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC53BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpiDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACx2CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACx7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5xBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3lCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxbA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACreA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/aA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;","file":"busy-app.js"}